All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.stat.Statistics Maven / Gradle / Ivy

There is a newer version: 7.0.0.Alpha1
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.stat;

import javax.management.MXBean;

/**
 * Exposes statistics for a particular {@link org.hibernate.SessionFactory}.  Beware of milliseconds metrics, they
 * are dependent of the JVM precision: you may then encounter a 10 ms approximation depending on you OS platform.
 * Please refer to the JVM documentation for more information.
 * 
 * @author Emmanuel Bernard
 */
@MXBean
public interface Statistics {

	int DEFAULT_QUERY_STATISTICS_MAX_SIZE = 5000;

	/**
	 * Are statistics enabled
	 */
	boolean isStatisticsEnabled();

	/**
	 * Enable statistics logs (this is a dynamic parameter)
	 */
	void setStatisticsEnabled(boolean b);
	/**
	 * reset all statistics
	 */
	void clear();

	/**
	 * log in info level the main statistics
	 */
	void logSummary();


    /**
	 * find entity statistics per name
	 * 
	 * @param entityName entity name
	 * @return EntityStatistics object
	 */
	EntityStatistics getEntityStatistics(String entityName);

	/**
	 * Get collection statistics per role
	 * 
	 * @param role collection role
	 * @return CollectionStatistics
	 */
	CollectionStatistics getCollectionStatistics(String role);

	/**
	 * Natural id resolution query statistics for an entity type
	 *
	 * @param entityName The entity name that is the root of the hierarchy containing the
	 * natural id
	 * @return NaturalIdCacheStatistics
	 */
	NaturalIdStatistics getNaturalIdStatistics(String entityName);

	/**
	 * Query statistics from query string (HQL or SQL)
	 *
	 * @param queryString query string
	 * @return QueryStatistics
	 */
	QueryStatistics getQueryStatistics(String queryString);

	/**
	 * Second-level cache statistics per domain data (entity, collection, natural-id) region
	 *
	 * @param regionName The unqualified region name
	 *
	 * @return The stats for the named region, or {@code null} if the second level cache is
	 * not enabled
	 *
	 * @throws IllegalArgumentException if the region name could not be resolved
	 */
	CacheRegionStatistics getDomainDataRegionStatistics(String regionName);

	/**
	 * Second-level cache statistics per query region
	 *
	 * @param regionName The unqualified region name
	 *
	 * @return Stats for the named region, or {@code null} if (1) query result caching is
	 * not enabled or (2) no query region exists with that name
	 */
	CacheRegionStatistics getQueryRegionStatistics(String regionName);

	/**
	 * Get statistics for either a domain-data or query-result region - this
	 * method checks both, preferring domain data region if one.  Think of it
	 * as a cascading check to:
    *
  1. {@link #getDomainDataRegionStatistics}
  2. *
  3. {@link #getQueryRegionStatistics}
  4. *
* Note that returning null is preferred here over throwing an exception when * no region exists with that name. * * @param regionName The unqualified region name * * @return Stats for the named region, or {@code null} if no such region exists */ CacheRegionStatistics getCacheRegionStatistics(String regionName); /** * Get global number of entity deletes * @return entity deletion count */ long getEntityDeleteCount(); /** * Get global number of entity inserts * @return entity insertion count */ long getEntityInsertCount(); /** * Get global number of entity loads * @return entity load (from DB) */ long getEntityLoadCount(); /** * Get global number of entity fetches * @return entity fetch (from DB) */ long getEntityFetchCount(); /** * Get global number of entity updates * @return entity update */ long getEntityUpdateCount(); /** * Get global number of executed queries * @return query execution count */ long getQueryExecutionCount(); /** * Get the time in milliseconds of the slowest query. */ long getQueryExecutionMaxTime(); /** * Get the query string for the slowest query. */ String getQueryExecutionMaxTimeQueryString(); /** * Get the global number of cached queries successfully retrieved from cache */ long getQueryCacheHitCount(); /** * Get the global number of cached queries *not* found in cache */ long getQueryCacheMissCount(); /** * Get the global number of cacheable queries put in cache */ long getQueryCachePutCount(); /** * Get the global number of natural id queries executed against the database */ long getNaturalIdQueryExecutionCount(); /** * Get the global maximum query time for natural id queries executed against the database */ long getNaturalIdQueryExecutionMaxTime(); /** * Get the region for the maximum natural id query time */ String getNaturalIdQueryExecutionMaxTimeRegion(); /** * Get the entity for the maximum natural id query time */ String getNaturalIdQueryExecutionMaxTimeEntity(); /** * Get the global number of cached natural id lookups successfully retrieved from cache */ long getNaturalIdCacheHitCount(); /** * Get the global number of cached natural id lookups *not* found in cache */ long getNaturalIdCacheMissCount(); /** * Get the global number of cacheable natural id lookups put in cache */ long getNaturalIdCachePutCount(); /** * Get the global number of timestamps successfully retrieved from cache */ long getUpdateTimestampsCacheHitCount(); /** * Get the global number of timestamp requests that were not found in the cache */ long getUpdateTimestampsCacheMissCount(); /** * Get the global number of timestamps put in cache */ long getUpdateTimestampsCachePutCount(); /** * Get the global number of flush operations executed (either manual or automatic). */ long getFlushCount(); /** * Get the global number of connections asked by the sessions * (the actual number of connections used may be much smaller depending * whether you use a connection pool or not) */ long getConnectCount(); /** * Global number of cacheable entities/collections successfully retrieved from the cache */ long getSecondLevelCacheHitCount(); /** * Global number of cacheable entities/collections not found in the cache and loaded from the database. */ long getSecondLevelCacheMissCount(); /** * Global number of cacheable entities/collections put in the cache */ long getSecondLevelCachePutCount(); /** * Global number of sessions closed */ long getSessionCloseCount(); /** * Global number of sessions opened */ long getSessionOpenCount(); /** * Global number of collections loaded */ long getCollectionLoadCount(); /** * Global number of collections fetched */ long getCollectionFetchCount(); /** * Global number of collections updated */ long getCollectionUpdateCount(); /** * Global number of collections removed */ //even on inverse="true" long getCollectionRemoveCount(); /** * Global number of collections recreated */ long getCollectionRecreateCount(); /** * The milliseconds (JVM standard {@link System#currentTimeMillis()}) * since the initial creation of this Statistics * instance or the last time {@link #clear()} was called. * * @apiNote This time(stamp) is */ long getStartTime(); /** * Get all executed query strings. * * The maximum number of queries tracked by the Hibernate statistics is given by the {@code hibernate.statistics.query_max_size} property. */ String[] getQueries(); /** * Get the names of all entities */ String[] getEntityNames(); /** * Get the names of all collection roles */ String[] getCollectionRoleNames(); /** * Get all second-level cache region names. Note: for backwards * compatibility this method returns just the names of regions * storing domain data, not query result regions */ String[] getSecondLevelCacheRegionNames(); /** * The number of transactions we know to have been successful */ long getSuccessfulTransactionCount(); /** * The number of transactions we know to have completed */ long getTransactionCount(); /** * The number of prepared statements that were acquired */ long getPrepareStatementCount(); /** * The number of prepared statements that were released */ long getCloseStatementCount(); /** * The number of Hibernate StaleObjectStateExceptions or JPA OptimisticLockExceptions * that occurred. */ long getOptimisticFailureCount(); /** * Second-level cache statistics per region * * @param regionName qualified region name * * @return SecondLevelCacheStatistics or {@code null} if the second level cache is not enabled * * @throws IllegalArgumentException if the region name could not be resolved * * @deprecated (since 5.3) Use {@link #getDomainDataRegionStatistics} instead */ @Deprecated SecondLevelCacheStatistics getSecondLevelCacheStatistics(String regionName); /** * Natural id cache statistics per region * * @param regionName region name * @return NaturalIdCacheStatistics * * @deprecated (since 5.3) Use {@link #getNaturalIdStatistics} or * {@link @getDomainDataRegionStatistics} instead depending on need */ @Deprecated NaturalIdCacheStatistics getNaturalIdCacheStatistics(String regionName); /** * Get the global number of query plans successfully retrieved from cache */ default long getQueryPlanCacheHitCount() { //For backward compatibility return 0; } /** * Get the global number of query plans lookups *not* found in cache */ default long getQueryPlanCacheMissCount() { //For backward compatibility return 0; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy