#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
. Я не помню, как я столкнулся с этим, но, скорее всего, через этот класс, просто проверяя / анализируя то, что можно настроить.