如何在Spring Boot/PostgreSQL应用程序中检查长时间运行的查询?

3

我有一个使用Hibernate连接到PostgreSQL数据库的Spring Boot应用程序。 一段时间后,一些用户会遇到慢请求或没有任何响应的问题。

我怀疑是一些长时间运行的SQL查询引起的,但我该如何检查哪些查询运行时间较长? 我想记录查询执行时间。 我知道Hibernate的show-sql参数,但它不显示SQL语句的参数,也不记录执行时间。 是否有其他方法可以实现这一点?

1个回答

4

您可以通过设置以下属性,在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 是否有文档记录?我在文档中找不到任何提及它的内容。 - SternK
2
@SternK,您可以在类AvailableSettings中找到所有可用的属性。我不记得是怎么发现它的,但很可能是通过这个类,只是检查/分析可以配置什么。 - Patrycja Wegrzynowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接