我有一个使用Hibernate连接到PostgreSQL数据库的Spring Boot应用程序。 一段时间后,一些用户会遇到慢请求或没有任何响应的问题。
我怀疑是一些长时间运行的SQL查询引起的,但我该如何检查哪些查询运行时间较长? 我想记录查询执行时间。 我知道Hibernate的show-sql
参数,但它不显示SQL语句的参数,也不记录执行时间。 是否有其他方法可以实现这一点?
我有一个使用Hibernate连接到PostgreSQL数据库的Spring Boot应用程序。 一段时间后,一些用户会遇到慢请求或没有任何响应的问题。
我怀疑是一些长时间运行的SQL查询引起的,但我该如何检查哪些查询运行时间较长? 我想记录查询执行时间。 我知道Hibernate的show-sql
参数,但它不显示SQL语句的参数,也不记录执行时间。 是否有其他方法可以实现这一点?
您可以通过设置以下属性,在Hibernate中记录慢查询:
spring.jpa.properties.hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=100
另外,如果您想记录带有参数的SQL语句,可以使用:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
LOG_QUERIES_SLOWER_THAN_MS
是否有文档记录?我在文档中找不到任何提及它的内容。 - SternKAvailableSettings
中找到所有可用的属性。我不记得是怎么发现它的,但很可能是通过这个类,只是检查/分析可以配置什么。 - Patrycja Wegrzynowicz