Statistics on database access layer

In order to have a better idea of the time spent into the database access layer, it can be interesting to get some statistics on that part of the code, knowing that most of the time spent into eXo JCR is mainly the database access. This statistics will then allow you to identify without using any profiler what is normally slow in this layer, which could help to fix the problem quickly.

In case you use org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer or org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer as WorkspaceDataContainer, you can get statistics on the time spent on the database access layer. The database access layer (in eXo JCR) is represented by the methods of the org.exoplatform.services.jcr.storage.WorkspaceStorageConnection interface, so for all the methods defined in this interface, you can have the following figures:

Those figures are also available globally for all the methods which gives us the global behavior of this layer.

If you want to enable the statistics, you just need to set the JVM parameter called JDBCWorkspaceDataContainer.statistics.enabled to true. The corresponding CSV file is StatisticsJDBCStorageConnection-${creation-timestamp}.csv for more details about how the csv files are managed. See Statistics manager for more details.

The format of each column header is ${method-alias}-${metric-alias}. The metric alias are described in the statistics manager section.

The name of the category of statistics corresponding to these statistics is JDBCStorageConnection, this name is mostly needed to access to the statistics through JMX.

globalThis is the alias for all the methods.
getItemDataByIdThis is the alias for the getItemData(String identifier) method.
getItemDataByNodeDataNQPathEntryThis is the alias for the getItemData(NodeData parentData, QPathEntry name) method.
getChildNodesDataThis is the alias for the getChildNodesData(NodeData parent) method.
getChildNodesCountThis is the alias for the getChildNodesCount(NodeData parent) method.
getChildPropertiesDataThis is the alias for the getChildPropertiesData(NodeData parent) method.
listChildPropertiesDataThis is the alias for the listChildPropertiesData(NodeData parent) method.
getReferencesDataThis is the alias for the getReferencesData(String nodeIdentifier) method.
commitThis is the alias for the commit() method.
addNodeDataThis is the alias for the add(NodeData data) method.
addPropertyDataThis is the alias for the add(PropertyData data) mehod.
updateNodeDataThis is the alias for the update(NodeData data) method.
updatePropertyDataThis is the alias for the update(PropertyData data) method.
deleteNodeDataThis is the alias for the delete(NodeData data) method.
deletePropertyDataThis is the alias for the delete(PropertyData data) method.
renameNodeDataThis is the alias for the rename(NodeData data) method.
rollbackThis is the alias for the rollback() method.
isOpenedThis is the alias for the isOpened() method.
closeThis is the alias for the close() method.

Copyright ©. All rights reserved. eXo Platform SAS
blog comments powered byDisqus