Y a-t-il une propriété hibernate que je pourrais définir pour voir toutes les requêtes lentes? Je suis intéressé par les requêtes qui prennent trop de temps pour renvoyer le jeu de résultats. P>
J'utilise le ressort avec hibernate, configuré via un fichier ApplicationContexT.xml code> fichier de configuration du ressort. p>
4 Réponses :
Vous pouvez activer la journalisation de tous les SQL dans l'hibernate en définissant la propriété hibernate.show_sql à true (voir voir: http://adminlinux.blogspot.com /2009/07/mysql-slow-queries-log.html p>
Je suis sûr que la plupart des autres bases de données offriront une caractéristique similaire. P>
Je cherche un moyen de voir le temps nécessaire pour exécuter la requête SQL. show_sql ne montre que SQL, sans montrer l'exécution du temps
Ayez une lecture à travers cela, espérons-le, il peut éclairer une lumière sur les requêtes de temps avec Oracle: DBA- oracle.com/t_measure_sql_Response_Time.htm
J'ai 2 suggestions: p>
J'ai utilisé P6Spy et Irontrack SQL de Irongrid dans le passé et c'était un combo décent (voir Ce blog post ). Mais notez que: p>
J'utilise personnellement log4JDBC MAINTENANT qui fournit des caractéristiques similaires (sans l'interface graphique fantaisie mais Qui se soucie, utilisez Excel ou le script qu'ils fournissent pour produire un rapport). De son site Web: P>
Caractéristiques h3>
- Prise en charge complète pour JDBC 3 et JDBC 4! LI>
- Facile à configurer, dans la plupart des cas, tout ce que vous avez à faire est de changer le conducteur. Nom de classe à net.sf.log4jdbc.driverspy et prépendez-vous "JDBC: log4" à votre URL JDBC existante, Configurez vos catégories de journalisation et Vous êtes prêt à partir! li>
- dans la sortie enregistrée, pour des déclarations préparées, les arguments de liaison sont automatiquement inséré dans le SQL production. Cela améliore considérablement lisibilité et débogage pour beaucoup cas. li>
Les informations de synchronisation SQL peuvent être générées pour aider à identifier le temps Les déclarations SQL prennent pour courir, aidant à Identifier les déclarations qui fonctionnent trop lentement et ces données peuvent être post traité avec un outil inclus pour produire des données de rapport de profilage pour identifier rapidement SLOW SQL dans votre application forte>. li> - Numéro de connexion SQL Les informations sont générées pour aider à identifier la connexion des problèmes de mise en commun ou de filetage. li>
- fonctionne avec tout pilote JDBC sous-jacent, avec JDK 1.4 et plus, et Slf4j 1.x. Li>
- Logiciel Open Source, sous licence sous l'Apache amical des affaires 2.0 Licence: http://www.apache.org/licenses/license-2.0 li> ul> blockQuote>
Une mise à jour de votre message: P6Spy regarde maintenant entretenu et avait reçu de nombreux commits au cours des dernières années.
Ceci a été Ajout de manière native dans Hibernate 5.4.5.final . Le paramètre de configuration est disponible à La description est la suivante: p>
paramètre qui enregistre la requête qui a exécuté plus lentement que spécifié
millisecondes. La valeur par défaut est 0 (désactivé). P>
blockQuote> DispontablesETTS.LOG_SLOW_QUERY CODE>. P>
Cette fonctionnalité de journal de requête lente est disponible car hibernate ORM 5.4.5 et vous avertit lorsque l'heure d'exécution d'une requête d'exécution JPQL, API de critère ou native SQL dépasse une certaine valeur que vous avez configurée. P>
Pour activer le journal de requête lente Hibernate, vous devez définir le Dans notre cas, toute requête qui prend plus que Si vous utilisez un démarrage à ressort, vous pouvez définir ce paramètre hibernate dans le fichier Si vous utilisez Java EE, vous pouvez la définir dans la configuration hibernate.session.events.log.log_queries_slower_than_ms code> propriété sur une valeur c'est supérieur à 0 code>, représentant le seuil d'exécution de la requête. p> 25 code> millisecondes déclenchera la requête lente hibernate Journal. P> La configuration de démarrage à ressort h3>
application.properties code> fichier de configuration: la configuration Java ee h3>
persistence.xml code> configuration Fichier: P> o.h.SQL_SLOW -
SlowQuery: 27 milliseconds.
SQL: 'PgPreparedStatement [
SELECT
p.*
FROM post
p
WHERE
LOWER(p.title) LIKE '%java%book%review%'
ORDER BY p.created_on DESC
LIMIT 100
OFFSET 1000
]'
Pourquoi voir les requêtes lentes dans les journaux, je dois activer hibernate.show_sql code> drapeau? Sinon, le journal lent ne fonctionne pas. N'a-t-il pas vaincu le but? Cela ne va-t-il pas connecter chaque question de cette façon?
Vous n'avez pas besoin d'activer hibernate.show_sql code>. Qui imprime les requêtes de la console, pas le journal. Ceci SlowQuéryLogTest code> dans mon référentiel GitHub le prouve.
Je l'ai travaillé, j'avais défini le niveau de journalisation à l'avertissement, aurait dû être des informations.