Как проверить долгосрочные запросы в приложении spring boot / postgresql?

#spring #postgresql #hibernate

#весна #postgresql #спящий режим

Вопрос:

У меня есть приложение Spring boot с гибернацией, подключающееся к базе данных PostgreSQL. Через некоторое время некоторые пользователи сталкиваются с проблемой медленных запросов или запросов без какого-либо ответа.

Я подозреваю, что некоторые длительные SQL-запросы выполняются, но как я могу проверить, какие запросы выполняются долго? Я хотел бы записать время выполнения запросов. Я знаю show-sql параметр для Hibernate, но он не отображает аргументы для операторов SQL и не регистрирует время выполнения. Есть ли какой-либо другой способ добиться этого?

Ответ №1:

Вы можете регистрировать медленные запросы в режиме гибернации, установив свойство:

 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
 

Комментарии:

1. LOG_QUERIES_SLOWER_THAN_MS Задокументировано ли свойство? Я не могу найти никаких упоминаний в документации об этом.

2. @SternK у вас есть все доступные свойства в классе AvailableSettings . Я не помню, как я столкнулся с этим, но, скорее всего, через этот класс, просто проверяя / анализируя то, что можно настроить.