prog:java_hibernate_statistik
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
prog:java_hibernate_statistik [2013/04/22 12:12] – [Quellen] gpipperr | prog:java_hibernate_statistik [2014/02/10 13:42] (aktuell) – [Quellen] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Hibernate Statistiken abfragen ====== | ||
+ | |||
+ | In Hibernate können intern Statistiken gesammelt und ausgewertet werden. | ||
+ | |||
+ | Das kann einfach programmatisch im einen Code erfolgen (siehe Beispiel anbei) oder aber eleganter über Java Management Extension (JMX) Services. | ||
+ | |||
+ | Bzgl. JMX siehe : http:// | ||
+ | |||
+ | |||
+ | |||
+ | === Beispiel: | ||
+ | |||
+ | |||
+ | Session öffnen und Statisikerfassung einschalten: | ||
+ | |||
+ | <code java> | ||
+ | .... | ||
+ | |||
+ | // read configuration and create factory for the session | ||
+ | Configuration config = new Configuration().configure(); | ||
+ | |||
+ | // Namesgebung per Regelwerk erstellen: | ||
+ | config.setNamingStrategy(new DefaultComponentSafeNamingStrategy()); | ||
+ | |||
+ | // Session holen | ||
+ | // Vor Version 4 | ||
+ | // | ||
+ | |||
+ | // ab Hibernate 4 | ||
+ | ServiceRegistry serviceRegistry = | ||
+ | new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); | ||
+ | SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); | ||
+ | |||
+ | // Statistik einschalten | ||
+ | Statistics stats = sessionFactory.getStatistics(); | ||
+ | stats.setStatisticsEnabled(true); | ||
+ | .... | ||
+ | </ | ||
+ | |||
+ | Statistiken ausgeben: | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | public void printStatistc(Statistics stats) { | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | System.out.println(" | ||
+ | |||
+ | System.out.println(" | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | |||
+ | String[] selects = stats.getQueries(); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | QueryStatistics qstat = null; | ||
+ | for (String s : selects) { | ||
+ | System.out.println(" | ||
+ | qstat = stats.getQueryStatistics(s); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | System.out.println(" | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | // Cache Effizents | ||
+ | double queryCacheHitCount = stats.getQueryCacheHitCount(); | ||
+ | double queryCacheMissCount = stats.getQueryCacheMissCount(); | ||
+ | double queryCacheHitRatio = queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount); | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | |||
+ | // get Statistic by region if in use | ||
+ | /* | ||
+ | SecondLevelCacheStatistics cacheStats = stats.getSecondLevelCacheStatistics(" | ||
+ | cacheStats.getElementCountInMemory(); | ||
+ | cacheStats.getElementCountOnDisk(); | ||
+ | cacheStats.getEntries(); | ||
+ | cacheStats.getHitCount(); | ||
+ | cacheStats.getMissCount(); | ||
+ | cacheStats.getPutCount(); | ||
+ | cacheStats.getSizeInMemory(); | ||
+ | */ | ||
+ | |||
+ | EntityStatistics entStat = null; | ||
+ | String[] entities = stats.getEntityNames(); | ||
+ | for (String s : entities) { | ||
+ | System.out.println(" | ||
+ | |||
+ | entStat = stats.getEntityStatistics(s); | ||
+ | |||
+ | // | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Quellen ==== | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | === SQL Statements zählen === | ||
+ | |||
+ | http:// | ||
+ | ==== Java Performance Überwachung allgemein ==== | ||
+ | |||
+ | * http:// |
prog/java_hibernate_statistik.txt · Zuletzt geändert: 2014/02/10 13:42 von gpipperr