List of usage examples for org.hibernate.stat Statistics getCollectionRecreateCount
long getCollectionRecreateCount();
From source file:com.francetelecom.clara.cloud.commons.HibernateStatsHelper.java
License:Apache License
/** * Ensure no regression higher than 5%//from www . java 2 s.co m * @param assertDuration if true durations are verified, if false durations are not verified */ private static void checkStats(Map<HibernateStatsReferenceType, Long> refs, long duration, Statistics stats, boolean assertDuration) throws ObjectNotFoundException, MalformedURLException { List<AssertionError> failedAsserts = new ArrayList<AssertionError>(); // Reference values: these must be updated when you optimize your code // or if new values are explained and normal. final long DURATION = refs.get(HibernateStatsReferenceType.DURATION); final int QUERY_COUNT = refs.get(HibernateStatsReferenceType.QUERY_COUNT).intValue(); final int QUERY_MAX_TIME_MS = refs.get(HibernateStatsReferenceType.QUERY_MAX_TIME_MS).intValue(); final int ENTITY_FETCH_COUNT = refs.get(HibernateStatsReferenceType.ENTITY_FETCH_COUNT).intValue(); final int ENTITY_LOAD_COUNT = refs.get(HibernateStatsReferenceType.ENTITY_LOAD_COUNT).intValue(); final int ENTITY_INSERT_COUNT = refs.get(HibernateStatsReferenceType.ENTITY_INSERT_COUNT).intValue(); final int ENTITY_DELETE_COUNT = refs.get(HibernateStatsReferenceType.ENTITY_DELETE_COUNT).intValue(); final int ENTITY_UPDATE_COUNT = refs.get(HibernateStatsReferenceType.ENTITY_UPDATE_COUNT).intValue(); final int COLLECTION_FETCH_COUNT = refs.get(HibernateStatsReferenceType.COLLECTION_FETCH_COUNT).intValue(); final int COLLECTION_LOAD_COUNT = refs.get(HibernateStatsReferenceType.COLLECTION_LOAD_COUNT).intValue(); final int COLLECTION_RECREATE_COUNT = refs.get(HibernateStatsReferenceType.COLLECTION_RECREATE_COUNT) .intValue(); final int COLLECTION_REMOVE_COUNT = refs.get(HibernateStatsReferenceType.COLLECTION_REMOVE_COUNT) .intValue(); final int COLLECTION_UPDATE_COUNT = refs.get(HibernateStatsReferenceType.COLLECTION_UPDATE_COUNT) .intValue(); // The number of completed transactions (failed and successful) must // match number of transactions completed without failure preAssertEquals("There are transaction failures", stats.getTransactionCount(), stats.getSuccessfulTransactionCount(), failedAsserts); // Total number of queries executed. preAssertTrue( "Total number of queries executed increased more than 5% (ref=" + QUERY_COUNT + "): " + stats.getQueryExecutionCount(), stats.getQueryExecutionCount() <= (QUERY_COUNT * 1.05), failedAsserts); if (stats.getQueryExecutionCount() < (QUERY_COUNT * 0.95)) logger.warn("/!\\ You should update reference value QUERY_COUNT (ref=" + QUERY_COUNT + ") to " + stats.getQueryExecutionCount()); preAssertTrue( "ENTITY_DELETE_COUNT increased more than 5% (ref=" + ENTITY_DELETE_COUNT + "): " + stats.getEntityDeleteCount(), stats.getEntityDeleteCount() <= (ENTITY_DELETE_COUNT * 1.05), failedAsserts); if (stats.getEntityDeleteCount() < (ENTITY_DELETE_COUNT * 0.95)) logger.warn("/!\\ You should update reference value ENTITY_DELETE_COUNT (ref=" + ENTITY_DELETE_COUNT + ") to " + stats.getEntityDeleteCount()); preAssertTrue( "ENTITY_UPDATE_COUNT increased more than 5% (ref=" + ENTITY_UPDATE_COUNT + "): " + stats.getEntityUpdateCount(), stats.getEntityUpdateCount() <= (ENTITY_UPDATE_COUNT * 1.05), failedAsserts); if (stats.getEntityUpdateCount() < (ENTITY_UPDATE_COUNT * 0.95)) logger.warn("/!\\ You should update reference value ENTITY_UPDATE_COUNT (ref=" + ENTITY_UPDATE_COUNT + ") to " + stats.getEntityUpdateCount()); if (stats.getCollectionRecreateCount() < (COLLECTION_RECREATE_COUNT * 0.95)) logger.warn("/!\\ You should update reference value COLLECTION_RECREATE_COUNT (ref=" + COLLECTION_RECREATE_COUNT + ") to " + stats.getCollectionRecreateCount()); preAssertTrue( "COLLECTION_REMOVE_COUNT increased more than 5% (ref=" + COLLECTION_REMOVE_COUNT + "): " + stats.getCollectionRemoveCount(), stats.getCollectionRemoveCount() <= (COLLECTION_REMOVE_COUNT * 1.05), failedAsserts); if (stats.getCollectionRemoveCount() < (COLLECTION_REMOVE_COUNT * 0.95)) logger.warn("/!\\ You should update reference value COLLECTION_REMOVE_COUNT (ref=" + COLLECTION_REMOVE_COUNT + ") to " + stats.getCollectionRemoveCount()); preAssertTrue( "COLLECTION_UPDATE_COUNT increased more than 5% (ref=" + COLLECTION_UPDATE_COUNT + "): " + stats.getCollectionUpdateCount(), stats.getCollectionUpdateCount() <= (COLLECTION_UPDATE_COUNT * 1.05), failedAsserts); if (stats.getCollectionUpdateCount() < (COLLECTION_UPDATE_COUNT * 0.95)) logger.warn("/!\\ You should update reference value COLLECTION_UPDATE_COUNT (ref=" + COLLECTION_UPDATE_COUNT + ") to " + stats.getCollectionUpdateCount()); // Entities statistics preAssertTrue( "ENTITY_FETCH_COUNT increased more than 5% (ref=" + ENTITY_FETCH_COUNT + "): " + stats.getEntityFetchCount(), stats.getEntityFetchCount() < (ENTITY_FETCH_COUNT * 1.05), failedAsserts); if (stats.getEntityFetchCount() < (ENTITY_FETCH_COUNT * 0.95)) logger.warn("/!\\ You should update reference value ENTITY_FETCH_COUNT (ref=" + ENTITY_FETCH_COUNT + ") to " + stats.getEntityFetchCount()); preAssertTrue( "ENTITY_LOAD_COUNT increased more than 5% (ref=" + ENTITY_LOAD_COUNT + "): " + stats.getEntityLoadCount(), stats.getEntityLoadCount() <= (ENTITY_LOAD_COUNT * 1.05), failedAsserts); if (stats.getEntityLoadCount() < (ENTITY_LOAD_COUNT * 0.95)) logger.warn("/!\\ You should update reference value ENTITY_LOAD_COUNT (ref=" + ENTITY_LOAD_COUNT + ") to " + stats.getEntityLoadCount()); preAssertTrue( "ENTITY_INSERT_COUNT increased more than 5% (ref=" + ENTITY_INSERT_COUNT + "): " + stats.getEntityInsertCount(), stats.getEntityInsertCount() <= (ENTITY_INSERT_COUNT * 1.05), failedAsserts); if (stats.getEntityInsertCount() < (ENTITY_INSERT_COUNT * 0.95)) logger.warn("/!\\ You should update reference value ENTITY_INSERT_COUNT (ref=" + ENTITY_INSERT_COUNT + ") to " + stats.getEntityInsertCount()); // Collections statistics preAssertTrue( "COLLECTION_FETCH_COUNT increased more than 5% (ref=" + COLLECTION_FETCH_COUNT + "): " + stats.getCollectionFetchCount(), stats.getCollectionFetchCount() <= (COLLECTION_FETCH_COUNT * 1.05), failedAsserts); if (stats.getCollectionFetchCount() < (COLLECTION_FETCH_COUNT * 0.95)) logger.warn("/!\\ You should update reference value COLLECTION_FETCH_COUNT (ref=" + COLLECTION_FETCH_COUNT + ") to " + stats.getCollectionFetchCount()); preAssertTrue( "COLLECTION_LOAD_COUNT increased more than 5% (ref=" + COLLECTION_LOAD_COUNT + "): " + stats.getCollectionLoadCount(), stats.getCollectionLoadCount() <= (COLLECTION_LOAD_COUNT * 1.05), failedAsserts); if (stats.getCollectionLoadCount() < (COLLECTION_LOAD_COUNT * 0.95)) logger.warn("/!\\ You should update reference value COLLECTION_LOAD_COUNT (ref=" + COLLECTION_LOAD_COUNT + ") to " + stats.getCollectionLoadCount()); preAssertTrue( "COLLECTION_RECREATE_COUNT increased more than 5% (ref=" + COLLECTION_RECREATE_COUNT + "): " + stats.getCollectionRecreateCount(), stats.getCollectionRecreateCount() <= (COLLECTION_RECREATE_COUNT * 1.05), failedAsserts); if (assertDuration) { // Time of the slowest query executed. preAssertTrue( "Time of the slowest query executed increased more than 50% (ref=" + QUERY_MAX_TIME_MS + "): " + stats.getQueryExecutionMaxTime(), stats.getQueryExecutionMaxTime() <= (QUERY_MAX_TIME_MS * 1.50), failedAsserts); if (stats.getQueryExecutionMaxTime() < (QUERY_MAX_TIME_MS * 0.50)) logger.warn("/!\\ You should update reference value QUERY_MAX_TIME_MS (ref=" + QUERY_MAX_TIME_MS + ") to " + stats.getQueryExecutionMaxTime()); // Check test duration preAssertTrue("Total duration of the test increased more than 5% (ref=" + DURATION + "): " + duration, duration < (DURATION * 1.05), failedAsserts); if (duration <= (DURATION * 0.85)) logger.warn( "/!\\ You should update reference value DURATION (ref=" + DURATION + ") to " + duration); } StringBuffer formattedFailedAsserts = new StringBuffer(); for (AssertionError failedAssert : failedAsserts) { formattedFailedAsserts.append(failedAssert.getMessage()); formattedFailedAsserts.append("\n"); } String advice = "Analyse the code with your favorite profiler, then see where performances decrease and optimize the code. If you consider this new value as 'normal' then set a new reference value."; assertTrue(failedAsserts.size() + " Hibernate stats violations: \n" + formattedFailedAsserts.toString() + advice, failedAsserts.isEmpty()); }
From source file:com.francetelecom.clara.cloud.scalability.helper.StatisticsHelper.java
License:Apache License
/** * Log the current statistics/* w ww .j a va 2 s .c om*/ * * @param stats hibernate statistics */ public static void logStats(Statistics stats) { logger.info("Database statistics"); logger.info(" Number of connection requests : " + stats.getConnectCount()); logger.info(" Session flushes : " + stats.getFlushCount()); logger.info(" Transactions : " + stats.getTransactionCount()); logger.info(" Successful transactions : " + stats.getSuccessfulTransactionCount()); logger.info(" Sessions opened : " + stats.getSessionOpenCount()); logger.info(" Sessions closed : " + stats.getSessionCloseCount()); logger.info(" Queries executed : " + stats.getQueryExecutionCount()); logger.info(" Max query time : " + stats.getQueryExecutionMaxTime()); logger.info(" Max time query : " + stats.getQueryExecutionMaxTimeQueryString()); logger.info("Collection statistics"); logger.info(" Collections fetched : " + stats.getCollectionFetchCount()); logger.info(" Collections loaded : " + stats.getCollectionLoadCount()); logger.info(" Collections rebuilt : " + stats.getCollectionRecreateCount()); logger.info(" Collections batch deleted : " + stats.getCollectionRemoveCount()); logger.info(" Collections batch updated : " + stats.getCollectionUpdateCount()); logger.info("Object statistics"); logger.info(" Objects fetched : " + stats.getEntityFetchCount()); logger.info(" Objects loaded : " + stats.getEntityLoadCount()); logger.info(" Objects inserted : " + stats.getEntityInsertCount()); logger.info(" Objects deleted : " + stats.getEntityDeleteCount()); logger.info(" Objects updated : " + stats.getEntityUpdateCount()); logger.info("Cache statistics"); double chit = stats.getQueryCacheHitCount(); double cmiss = stats.getQueryCacheMissCount(); logger.info(" Cache hit count : " + chit); logger.info(" Cache miss count : " + cmiss); logger.info(" Cache hit ratio : " + (chit / (chit + cmiss))); String[] entityNames = stats.getEntityNames(); Arrays.sort(entityNames); for (String entityName : entityNames) { Class<?> entityClass = null; try { entityClass = Class.forName(entityName); } catch (ClassNotFoundException e) { logger.error("Unable to load class for " + entityName, e); } entityStats(stats, entityClass); } //Uncomment these lines to trace every query (can generate a lot of logs) String[] qs = stats.getQueries(); for (String q : qs) { queryStats(stats, q); } String[] slcrn = stats.getSecondLevelCacheRegionNames(); for (String s : slcrn) { secondLevelStats(stats, s); } }
From source file:com.thoughtworks.go.server.service.support.HibernateInformationProvider.java
License:Apache License
@Override public Map<String, Object> asJson() { LinkedHashMap<String, Object> json = new LinkedHashMap<>(); Statistics statistics = sessionFactory.getStatistics(); if (!statistics.isStatisticsEnabled()) { return json; }//w ww .j a v a 2 s . c o m json.put("EntityDeleteCount", statistics.getEntityDeleteCount()); json.put("EntityInsertCount", statistics.getEntityInsertCount()); json.put("EntityLoadCount", statistics.getEntityLoadCount()); json.put("EntityFetchCount", statistics.getEntityFetchCount()); json.put("EntityUpdateCount", statistics.getEntityUpdateCount()); json.put("QueryExecutionCount", statistics.getQueryExecutionCount()); json.put("QueryExecutionMaxTime", statistics.getQueryExecutionMaxTime()); json.put("QueryExecutionMaxTimeQueryString", statistics.getQueryExecutionMaxTimeQueryString()); json.put("QueryCacheHitCount", statistics.getQueryCacheHitCount()); json.put("QueryCacheMissCount", statistics.getQueryCacheMissCount()); json.put("QueryCachePutCount", statistics.getQueryCachePutCount()); json.put("FlushCount", statistics.getFlushCount()); json.put("ConnectCount", statistics.getConnectCount()); json.put("SecondLevelCacheHitCount", statistics.getSecondLevelCacheHitCount()); json.put("SecondLevelCacheMissCount", statistics.getSecondLevelCacheMissCount()); json.put("SecondLevelCachePutCount", statistics.getSecondLevelCachePutCount()); json.put("SessionCloseCount", statistics.getSessionCloseCount()); json.put("SessionOpenCount", statistics.getSessionOpenCount()); json.put("CollectionLoadCount", statistics.getCollectionLoadCount()); json.put("CollectionFetchCount", statistics.getCollectionFetchCount()); json.put("CollectionUpdateCount", statistics.getCollectionUpdateCount()); json.put("CollectionRemoveCount", statistics.getCollectionRemoveCount()); json.put("CollectionRecreateCount", statistics.getCollectionRecreateCount()); json.put("StartTime", statistics.getStartTime()); json.put("SecondLevelCacheRegionNames", statistics.getSecondLevelCacheRegionNames()); json.put("SuccessfulTransactionCount", statistics.getSuccessfulTransactionCount()); json.put("TransactionCount", statistics.getTransactionCount()); json.put("PrepareStatementCount", statistics.getPrepareStatementCount()); json.put("CloseStatementCount", statistics.getCloseStatementCount()); json.put("OptimisticFailureCount", statistics.getOptimisticFailureCount()); LinkedHashMap<String, Object> queryStats = new LinkedHashMap<>(); json.put("Queries", queryStats); String[] queries = statistics.getQueries(); for (String query : queries) { queryStats.put(query, statistics.getQueryStatistics(query)); } LinkedHashMap<String, Object> entityStatistics = new LinkedHashMap<>(); json.put("EntityStatistics", entityStatistics); String[] entityNames = statistics.getEntityNames(); for (String entityName : entityNames) { entityStatistics.put(entityName, statistics.getEntityStatistics(entityName)); } LinkedHashMap<String, Object> roleStatistics = new LinkedHashMap<>(); json.put("RoleStatistics", roleStatistics); String[] roleNames = statistics.getCollectionRoleNames(); for (String roleName : roleNames) { roleStatistics.put(roleName, statistics.getCollectionStatistics(roleName)); } return json; }
From source file:de.iew.framework.hibernate.statistics.StatisticsLogger.java
License:Apache License
public void logStatistics() { Statistics statistics = this.sessionFactory.getStatistics(); statistics.setStatisticsEnabled(true); StringBuilder sb = new StringBuilder("\nStatistics"); sb.append("\nCloseStatementCount: ").append(statistics.getCloseStatementCount()); sb.append("\nEntityDeleteCount: ").append(statistics.getEntityDeleteCount()); sb.append("\nEntityInsertCount: ").append(statistics.getEntityInsertCount()); sb.append("\nEntityLoadCount: ").append(statistics.getEntityLoadCount()); sb.append("\nEntityFetchCount: ").append(statistics.getEntityFetchCount()); sb.append("\nEntityUpdateCount: ").append(statistics.getEntityUpdateCount()); sb.append("\nQueryExecutionCount: ").append(statistics.getQueryExecutionCount()); sb.append("\nQueryExecutionMaxTime: ").append(statistics.getQueryExecutionMaxTime()); sb.append("\nQueryExecutionMaxTimeQueryString: ").append(statistics.getQueryExecutionMaxTimeQueryString()); sb.append("\nQueryCacheHitCount: ").append(statistics.getQueryCacheHitCount()); sb.append("\nQueryCacheMissCount: ").append(statistics.getQueryCacheMissCount()); sb.append("\nQueryCachePutCount: ").append(statistics.getQueryCachePutCount()); sb.append("\nNaturalIdQueryExecutionCount: ").append(statistics.getNaturalIdQueryExecutionCount()); sb.append("\nNaturalIdQueryExecutionMaxTime: ").append(statistics.getNaturalIdQueryExecutionMaxTime()); sb.append("\nNaturalIdQueryExecutionMaxTimeRegion: ") .append(statistics.getNaturalIdQueryExecutionMaxTimeRegion()); sb.append("\nNaturalIdCacheHitCount: ").append(statistics.getNaturalIdCacheHitCount()); sb.append("\nNaturalIdCacheMissCount: ").append(statistics.getNaturalIdCacheMissCount()); sb.append("\nNaturalIdCachePutCount: ").append(statistics.getNaturalIdCachePutCount()); sb.append("\nUpdateTimestampsCacheHitCount: ").append(statistics.getUpdateTimestampsCacheHitCount()); sb.append("\nUpdateTimestampsCacheMissCount: ").append(statistics.getUpdateTimestampsCacheMissCount()); sb.append("\nUpdateTimestampsCachePutCount: ").append(statistics.getUpdateTimestampsCachePutCount()); sb.append("\nFlushCount: ").append(statistics.getFlushCount()); sb.append("\nConnectCount: ").append(statistics.getConnectCount()); sb.append("\nSecondLevelCacheHitCount: ").append(statistics.getSecondLevelCacheHitCount()); sb.append("\nSecondLevelCacheMissCount: ").append(statistics.getSecondLevelCacheMissCount()); sb.append("\nSecondLevelCachePutCount: ").append(statistics.getSecondLevelCachePutCount()); sb.append("\nSessionCloseCount: ").append(statistics.getSessionCloseCount()); sb.append("\nSessionOpenCount: ").append(statistics.getSessionOpenCount()); sb.append("\nCollectionLoadCount: ").append(statistics.getCollectionLoadCount()); sb.append("\nCollectionFetchCount: ").append(statistics.getCollectionFetchCount()); sb.append("\nCollectionUpdateCount: ").append(statistics.getCollectionUpdateCount()); sb.append("\nCollectionRemoveCount: ").append(statistics.getCollectionRemoveCount()); sb.append("\nCollectionRecreateCount: ").append(statistics.getCollectionRecreateCount()); sb.append("\nStartTime: ").append(statistics.getStartTime()); sb.append("\nQueries: ").append(statistics.getQueries()); sb.append("\nEntityNames: ").append(statistics.getEntityNames()); sb.append("\nCollectionRoleNames: ").append(statistics.getCollectionRoleNames()); sb.append("\nSecondLevelCacheRegionNames: ").append(statistics.getSecondLevelCacheRegionNames()); sb.append("\nSuccessfulTransactionCount: ").append(statistics.getSuccessfulTransactionCount()); sb.append("\nTransactionCount: ").append(statistics.getTransactionCount()); sb.append("\nPrepareStatementCount: ").append(statistics.getPrepareStatementCount()); sb.append("\nCloseStatementCount: ").append(statistics.getCloseStatementCount()); sb.append("\nOptimisticFailureCount: ").append(statistics.getOptimisticFailureCount()); if (log.isDebugEnabled()) { log.debug(sb);/*from ww w . j a v a2 s . c o m*/ } }
From source file:net.firejack.platform.processor.statistics.StatisticsProcessor.java
License:Apache License
@Scheduled(cron = "0 0/5 * * * *") public void schedulerStatisticsHandler() { if (templates != null) { for (HibernateTemplate template : templates) { SessionFactory sessionFactory = template.getSessionFactory(); Statistics statistics = sessionFactory.getStatistics(); if (statistics.isStatisticsEnabled()) { LogTransaction logTransaction = new LogTransaction(); logTransaction.setPackageLookup(OpenFlameSecurityConstants.getPackageLookup()); logTransaction.setTransactions(statistics.getSuccessfulTransactionCount()); logTransaction.setEntitiesLoaded(statistics.getEntityLoadCount()); logTransaction.setEntitiesInserted(statistics.getEntityInsertCount()); logTransaction.setEntitiesUpdated(statistics.getEntityUpdateCount()); logTransaction.setEntitiesDeleted(statistics.getEntityDeleteCount()); logTransaction.setEntitiesFetched(statistics.getEntityFetchCount()); logTransaction.setCollectionsLoaded(statistics.getCollectionLoadCount()); logTransaction.setCollectionsRecreated(statistics.getCollectionRecreateCount()); logTransaction.setCollectionsUpdated(statistics.getCollectionUpdateCount()); logTransaction.setCollectionsRemoved(statistics.getCollectionRemoveCount()); logTransaction.setCollectionsFetched(statistics.getCollectionFetchCount()); logTransaction.setMaxQueryTime(statistics.getQueryExecutionMaxTime()); Date hourlyDate = new Date(); logTransaction.setHourPeriod(DateUtils.truncate(hourlyDate, Calendar.HOUR).getTime()); logTransaction.setDayPeriod(DateUtils.truncate(hourlyDate, Calendar.DAY_OF_MONTH).getTime()); logTransaction.setWeekPeriod(DateUtils.truncateDateToWeek(hourlyDate).getTime()); logTransaction.setMonthPeriod(DateUtils.truncate(hourlyDate, Calendar.MONTH).getTime()); OPFEngine.StatisticsService.saveLogTransaction(logTransaction); statistics.clear();//from w w w . j ava2 s. c o m } else { logger.warn("Hibernate Statistics is disabled."); } } } }
From source file:net.welen.buzz.typehandler.impl.hibernate.HibernateStatisticsUnitHandler.java
License:Open Source License
public void getValues(BuzzAnswer values) throws TypeHandlerException { for (String name : getMeasurableUnits()) { boolean debug = LOG.isDebugEnabled(); // Find the Hibernate Session Factory in JNDI SessionFactory sessionFactory = null; Object o;//w ww .j ava 2 s . co m try { if (debug) { LOG.debug("Looking up: " + name); } o = new InitialContext().lookup(name); } catch (NamingException e) { throw new TypeHandlerException(e); } if (debug) { LOG.debug("Found class: " + o.getClass().getName()); } if (o.getClass().getName().equals("org.hibernate.ejb.EntityManagerFactoryImpl")) { // Hibernate 4 sessionFactory = ((EntityManagerFactoryImpl) o).getSessionFactory(); } else { // Hibernate 3 sessionFactory = (SessionFactory) o; } // Get all values Statistics stats = sessionFactory.getStatistics(); String measurementUnit = getMeasurementUnit(); values.put(measurementUnit, name, "SessionOpenCount", stats.getSessionOpenCount()); values.put(measurementUnit, name, "SessionCloseCount", stats.getSessionCloseCount()); values.put(measurementUnit, name, "FlushCount", stats.getFlushCount()); values.put(measurementUnit, name, "ConnectCount", stats.getConnectCount()); values.put(measurementUnit, name, "PrepareStatementCount", stats.getPrepareStatementCount()); values.put(measurementUnit, name, "CloseStatementCount", stats.getCloseStatementCount()); values.put(measurementUnit, name, "EntityLoadCount", stats.getEntityLoadCount()); values.put(measurementUnit, name, "EntityUpdateCount", stats.getEntityUpdateCount()); values.put(measurementUnit, name, "EntityInsertCount", stats.getEntityInsertCount()); values.put(measurementUnit, name, "EntityDeleteCount", stats.getEntityDeleteCount()); values.put(measurementUnit, name, "EntityFetchCount", stats.getEntityFetchCount()); values.put(measurementUnit, name, "CollectionLoadCount", stats.getCollectionLoadCount()); values.put(measurementUnit, name, "CollectionUpdateCount", stats.getCollectionUpdateCount()); values.put(measurementUnit, name, "CollectionRemoveCount", stats.getCollectionRemoveCount()); values.put(measurementUnit, name, "CollectionRecreateCount", stats.getCollectionRecreateCount()); values.put(measurementUnit, name, "CollectionFetchCount", stats.getCollectionFetchCount()); values.put(measurementUnit, name, "SecondLevelCacheHitCount", stats.getSecondLevelCacheHitCount()); values.put(measurementUnit, name, "SecondLevelCacheMissCount", stats.getSecondLevelCacheMissCount()); values.put(measurementUnit, name, "SecondLevelCachePutCount", stats.getSecondLevelCachePutCount()); values.put(measurementUnit, name, "QueryExecutionCount", stats.getQueryExecutionCount()); values.put(measurementUnit, name, "QueryExecutionMaxTime", stats.getQueryExecutionMaxTime()); values.put(measurementUnit, name, "QueryCacheHitCount", stats.getQueryCacheHitCount()); values.put(measurementUnit, name, "QueryCacheMissCount", stats.getQueryCacheMissCount()); values.put(measurementUnit, name, "QueryCachePutCount", stats.getQueryCachePutCount()); values.put(measurementUnit, name, "TransactionCount", stats.getTransactionCount()); values.put(measurementUnit, name, "OptimisticFailureCount", stats.getOptimisticFailureCount()); // TODO What about? // sessionFactory.getStatistics().getEntityStatistics(<parameter from setup? OR loop?>). // sessionFactory.getStatistics().getCollectionStatistics(<parameter from setup? OR loop?>) // sessionFactory.getStatistics().getQueryStatistics(<<parameter from setup? OR loop?>) } }
From source file:org.bedework.calcore.hibernate.DbStatistics.java
License:Apache License
/** Get the current statistics * * @param dbStats// w w w. ja va 2 s .co m * @return Collection */ public static Collection<StatsEntry> getStats(Statistics dbStats) { /* XXX this ought to be property driven to some extent. The cache stats in * particular. */ ArrayList<StatsEntry> al = new ArrayList<StatsEntry>(); if (dbStats == null) { return al; } al.add(new StatsEntry("Database statistics")); al.add(new StatsEntry("Number of connection requests", dbStats.getConnectCount())); al.add(new StatsEntry("Session flushes", dbStats.getFlushCount())); al.add(new StatsEntry("Transactions", dbStats.getTransactionCount())); al.add(new StatsEntry("Successful transactions", dbStats.getSuccessfulTransactionCount())); al.add(new StatsEntry("Sessions opened", dbStats.getSessionOpenCount())); al.add(new StatsEntry("Sessions closed", dbStats.getSessionCloseCount())); al.add(new StatsEntry("Queries executed", dbStats.getQueryExecutionCount())); al.add(new StatsEntry("Max query time", dbStats.getQueryExecutionMaxTime())); al.add(new StatsEntry("Max time query", dbStats.getQueryExecutionMaxTimeQueryString())); al.add(new StatsEntry("Collection statistics")); al.add(new StatsEntry("Collections fetched", dbStats.getCollectionFetchCount())); al.add(new StatsEntry("Collections loaded", dbStats.getCollectionLoadCount())); al.add(new StatsEntry("Collections rebuilt", dbStats.getCollectionRecreateCount())); al.add(new StatsEntry("Collections batch deleted", dbStats.getCollectionRemoveCount())); al.add(new StatsEntry("Collections batch updated", dbStats.getCollectionUpdateCount())); al.add(new StatsEntry("Object statistics")); al.add(new StatsEntry("Objects fetched", dbStats.getEntityFetchCount())); al.add(new StatsEntry("Objects loaded", dbStats.getEntityLoadCount())); al.add(new StatsEntry("Objects inserted", dbStats.getEntityInsertCount())); al.add(new StatsEntry("Objects deleted", dbStats.getEntityDeleteCount())); al.add(new StatsEntry("Objects updated", dbStats.getEntityUpdateCount())); al.add(new StatsEntry("Cache statistics")); double chit = dbStats.getQueryCacheHitCount(); double cmiss = dbStats.getQueryCacheMissCount(); al.add(new StatsEntry("Cache hit count", chit)); al.add(new StatsEntry("Cache miss count", cmiss)); al.add(new StatsEntry("Cache hit ratio", chit / (chit + cmiss))); entityStats(al, dbStats, BwCalendar.class); entityStats(al, dbStats, BwEventObj.class); entityStats(al, dbStats, BwEventAnnotation.class); entityStats(al, dbStats, BwCategory.class); entityStats(al, dbStats, BwLocation.class); entityStats(al, dbStats, BwContact.class); entityStats(al, dbStats, BwUser.class); collectionStats(al, dbStats, BwCalendar.class, "children"); collectionStats(al, dbStats, BwEventObj.class, "attendees"); collectionStats(al, dbStats, BwEventObj.class, "categories"); collectionStats(al, dbStats, BwEventObj.class, "descriptions"); collectionStats(al, dbStats, BwEventObj.class, "summaries"); collectionStats(al, dbStats, BwEventObj.class, "rrules"); collectionStats(al, dbStats, BwEventObj.class, "rdates"); collectionStats(al, dbStats, BwEventObj.class, "exdates"); collectionStats(al, dbStats, BwEventAnnotation.class, "attendees"); collectionStats(al, dbStats, BwEventAnnotation.class, "categories"); collectionStats(al, dbStats, BwEventAnnotation.class, "descriptions"); collectionStats(al, dbStats, BwEventAnnotation.class, "summaries"); collectionStats(al, dbStats, BwEventAnnotation.class, "rrules"); collectionStats(al, dbStats, BwEventAnnotation.class, "rdates"); collectionStats(al, dbStats, BwEventAnnotation.class, "exdates"); String[] qs = dbStats.getQueries(); for (String q : qs) { queryStats(al, dbStats, q); } String[] slcrn = dbStats.getSecondLevelCacheRegionNames(); for (String s : slcrn) { secondLevelStats(al, dbStats, s); } return al; }
From source file:org.glite.security.voms.admin.core.tasks.LogHibernateStatsTask.java
License:Apache License
@Override public void run() { Statistics stats = HibernateFactory.getFactory().getStatistics(); if (stats != null) { LOG.info("Logging statistics...."); LOG.info("start time: {}", stats.getStartTime()); LOG.info("sessions opened: {}", stats.getSessionOpenCount()); LOG.info("sessions closed: {}", stats.getSessionCloseCount()); LOG.info("transactions: {}", stats.getTransactionCount()); LOG.info("successful transactions: {}", stats.getSuccessfulTransactionCount()); LOG.info("optimistic lock failures: {}", stats.getOptimisticFailureCount()); LOG.info("flushes: {}", stats.getFlushCount()); LOG.info("connections obtained: {}", stats.getConnectCount()); LOG.info("statements prepared: {}", stats.getPrepareStatementCount()); LOG.info("statements closed: {}", stats.getCloseStatementCount()); LOG.info("second level cache puts: {}", stats.getSecondLevelCachePutCount()); LOG.info("second level cache hits: {}", stats.getSecondLevelCacheHitCount()); LOG.info("second level cache misses: {}", stats.getSecondLevelCacheMissCount()); LOG.info("entities loaded: {}", stats.getEntityLoadCount()); LOG.info("entities updated: {}", stats.getEntityUpdateCount()); LOG.info("entities inserted: {}", stats.getEntityInsertCount()); LOG.info("entities deleted: {}", stats.getEntityDeleteCount()); LOG.info("entities fetched (minimize this): {}", stats.getEntityFetchCount()); LOG.info("collections loaded: {}", stats.getCollectionLoadCount()); LOG.info("collections updated: {}", stats.getCollectionUpdateCount()); LOG.info("collections removed: {}", stats.getCollectionRemoveCount()); LOG.info("collections recreated: {}", stats.getCollectionRecreateCount()); LOG.info("collections fetched (minimize this): {}", stats.getCollectionFetchCount()); LOG.info("queries executed to database: {}", stats.getQueryExecutionCount()); LOG.info("query cache puts: {}", stats.getQueryCachePutCount()); LOG.info("query cache hits: {}", stats.getQueryCacheMissCount()); LOG.info("query cache misses: {}", stats.getQueryCacheMissCount()); LOG.info("max query time: {} ms, for query {}", stats.getQueryExecutionMaxTime(), stats.getQueryExecutionMaxTimeQueryString()); }//from w w w .java 2 s .c om }
From source file:org.jboss.as.jpa.hibernate4.management.HibernateManagementAdaptor.java
License:Open Source License
private void registerStatisticAttributes(ManagementResourceRegistration jpaHibernateRegistration) { /**//from w w w. j a v a 2 s . c o m * Get global number of entity deletes * @return entity deletion count */ jpaHibernateRegistration.registerMetric(OPERATION_ENTITY_DELETE_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getEntityDeleteCount()); } }); /** * Get global number of entity inserts * @return entity insertion count */ jpaHibernateRegistration.registerMetric(OPERATION_ENTITY_INSERT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getEntityInsertCount()); } }); /** * Get global number of entity loads * @return entity load (from DB) */ jpaHibernateRegistration.registerMetric(OPERATION_ENTITY_LOAD_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getEntityLoadCount()); } }); /** * Get global number of entity fetchs * @return entity fetch (from DB) */ jpaHibernateRegistration.registerMetric(OPERATION_ENTITY_FETCH_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getEntityFetchCount()); } }); /** * Get global number of entity updates * @return entity update */ jpaHibernateRegistration.registerMetric(OPERATION_ENTITY_UPDATE_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getEntityUpdateCount()); } }); /** * Get global number of executed queries * @return query execution count */ jpaHibernateRegistration.registerMetric(OPERATION_QUERY_EXECUTION_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getQueryExecutionCount()); } }); /** * Get the time in milliseconds of the slowest query. */ jpaHibernateRegistration.registerMetric(OPERATION_QUERY_EXECUTION_MAX_TIME, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getQueryExecutionMaxTime()); } }); /** * Get the query string for the slowest query. */ jpaHibernateRegistration.registerMetric(OPERATION_QUERY_EXECUTION_MAX_TIME_QUERY_STRING, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { String sql = stats.getQueryExecutionMaxTimeQueryString(); if (sql != null) { response.set(sql); } else { context.getResult(); // result will be undefined } } }); /** * Get the global number of cached queries successfully retrieved from cache */ jpaHibernateRegistration.registerMetric(OPERATION_QUERY_CACHE_HIT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getQueryCacheHitCount()); } }); /** * Get the global number of cached queries *not* found in cache */ jpaHibernateRegistration.registerMetric(OPERATION_QUERY_CACHE_MISS_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getQueryCacheMissCount()); } }); /** * Get the global number of cacheable queries put in cache */ jpaHibernateRegistration.registerMetric(OPERATION_QUERY_CACHE_PUT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getQueryCachePutCount()); } }); /** * Get the global number of flush executed by sessions (either implicit or explicit) */ jpaHibernateRegistration.registerMetric(OPERATION_FLUSH_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.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) */ jpaHibernateRegistration.registerMetric(OPERATION_CONNECT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getConnectCount()); } }); /** * Global number of cacheable entities/collections successfully retrieved from the cache */ jpaHibernateRegistration.registerMetric(OPERATION_SECOND_LEVEL_CACHE_HIT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getSecondLevelCacheHitCount()); } }); /** * Global number of cacheable entities/collections not found in the cache and loaded from the database. */ jpaHibernateRegistration.registerMetric(OPERATION_SECOND_LEVEL_CACHE_MISS_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getSecondLevelCacheMissCount()); } }); /** * Global number of cacheable entities/collections put in the cache */ jpaHibernateRegistration.registerMetric(OPERATION_SECOND_LEVEL_CACHE_PUT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getSecondLevelCachePutCount()); } }); /** * Global number of sessions closed */ jpaHibernateRegistration.registerMetric(OPERATION_SESSION_CLOSE_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getSessionCloseCount()); } }); /** * Global number of sessions opened */ jpaHibernateRegistration.registerMetric(OPERATION_SESSION_OPEN_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getSessionOpenCount()); } }); /** * Global number of collections loaded */ jpaHibernateRegistration.registerMetric(OPERATION_COLLECTION_LOAD_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getCollectionLoadCount()); } }); /** * Global number of collections fetched */ jpaHibernateRegistration.registerMetric(OPERATION_COLLECTION_FETCH_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getCollectionFetchCount()); } }); /** * Global number of collections updated */ jpaHibernateRegistration.registerMetric(OPERATION_COLLECTION_UPDATE_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getCollectionUpdateCount()); } }); /** * Global number of collections removed */ //even on inverse="true" jpaHibernateRegistration.registerMetric(OPERATION_COLLECTION_REMOVE_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getCollectionRemoveCount()); } }); /** * Global number of collections recreated */ jpaHibernateRegistration.registerMetric(OPERATION_COLLECTION_RECREATED_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getCollectionRecreateCount()); } }); /** * The number of transactions we know to have been successful */ jpaHibernateRegistration.registerMetric(OPERATION_SUCCESSFUL_TRANSACTION_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getSuccessfulTransactionCount()); } }); /** * The number of transactions we know to have completed */ jpaHibernateRegistration.registerMetric(OPERATION_COMPLETED_TRANSACTION_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getTransactionCount()); } }); /** * The number of prepared statements that were acquired */ jpaHibernateRegistration.registerMetric(OPERATION_PREPARED_STATEMENT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getPrepareStatementCount()); } }); /** * The number of prepared statements that were released */ jpaHibernateRegistration.registerMetric(OPERATION_CLOSE_STATEMENT_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getCloseStatementCount()); } }); /** * The number of <tt>StaleObjectStateException</tt>s * that occurred */ jpaHibernateRegistration.registerMetric(OPERATION_OPTIMISTIC_FAILURE_COUNT, new AbstractMetricsHandler() { @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.getOptimisticFailureCount()); } }); /** * enable/disable statistics attribute */ // void registerReadWriteAttribute(String attributeName, OperationStepHandler readHandler, OperationStepHandler writeHandler, AttributeAccess.Storage storage); jpaHibernateRegistration.registerReadWriteAttribute(OPERATION_STATISTICS_ENABLED, new AbstractMetricsHandler() { // readHandler @Override void handle(final ModelNode response, final String name, Statistics stats, OperationContext context) { response.set(stats.isStatisticsEnabled()); } }, StatisticsEnabledWriteHandler.INSTANCE, AttributeAccess.Storage.RUNTIME); }
From source file:org.sapia.soto.hibernate.HibernateServiceImpl.java
License:Open Source License
public Properties monitor() throws Exception { try {/*w w w.j av a 2s .c om*/ Properties props = new Properties(); Statistics stats = _sessions.getStatistics(); props.setProperty("collectionFetchCount", Long.toString(stats.getCollectionFetchCount())); props.setProperty("collectionLoadCount", Long.toString(stats.getCollectionLoadCount())); props.setProperty("collectionRecreateCount", Long.toString(stats.getCollectionRecreateCount())); props.setProperty("collectionRemoveCount", Long.toString(stats.getCollectionRemoveCount())); props.setProperty("collectionLoadCount", Long.toString(stats.getCollectionLoadCount())); props.setProperty("collectionUpdateCount", Long.toString(stats.getCollectionUpdateCount())); props.setProperty("connectCount", Long.toString(stats.getConnectCount())); props.setProperty("entityDeleteCount", Long.toString(stats.getEntityDeleteCount())); props.setProperty("entityFetchCount", Long.toString(stats.getEntityFetchCount())); props.setProperty("entityInsertCount", Long.toString(stats.getEntityInsertCount())); props.setProperty("entityLoadCount", Long.toString(stats.getEntityLoadCount())); props.setProperty("entityUpdateCount", Long.toString(stats.getEntityUpdateCount())); Session session = null; try { session = _sessions.openSession(); } finally { if (session != null) { session.close(); } } // Adding c3p0 connection pool info try { int i = 0; for (Object o : C3P0Registry.getPooledDataSources()) { if (o instanceof PooledDataSource) { PooledDataSource ds = (PooledDataSource) o; String namePrefix = "c3p0.pool" + (++i) + "."; props.setProperty(namePrefix + "dataSourceName", ds.getDataSourceName()); props.setProperty(namePrefix + "startTimeMillis", Long.toString(ds.getStartTimeMillisDefaultUser())); props.setProperty(namePrefix + "upTimeMillis", Long.toString(ds.getUpTimeMillisDefaultUser())); props.setProperty(namePrefix + "numberTotalConnections", Integer.toString(ds.getNumConnectionsDefaultUser())); props.setProperty(namePrefix + "numberBusyConnections", Integer.toString(ds.getNumBusyConnectionsDefaultUser())); props.setProperty(namePrefix + "numberIdleConnections", Integer.toString(ds.getNumIdleConnectionsDefaultUser())); props.setProperty(namePrefix + "numberHelperThreads", Integer.toString(ds.getNumHelperThreads())); props.setProperty(namePrefix + "numberThreadsAwaitingCheckout", Integer.toString(ds.getNumThreadsAwaitingCheckoutDefaultUser())); props.setProperty(namePrefix + "numberUnclosedOrphanedConnections", Integer.toString(ds.getNumUnclosedOrphanedConnectionsDefaultUser())); } } } catch (Exception e) { System.out.println(new Date() + " Error getting c3p0 registry: " + e.getMessage()); e.printStackTrace(); } return props; } catch (Exception e) { System.out.println(new Date() + " Error monitoring this hibernate service: " + e.getMessage()); e.printStackTrace(); throw e; } }