включен slow log, ночью, когда нет нагрузки в этом slow log регистрируется запрос который выполняется около 2х минут(судя по логу), берем этот запрос и +- в то же время ночью его выполняем и получаем не 2 минуты, а 0.3 секунды. Как такое может быть?
> в postgresql включен slow log В PostgreSQL не существует "slow log". Так что конкретно у Вас включено — log_min_duration_statement? Или, может, auto_explain (auto_explain.log_min_duration)? > берем этот запрос и +- в то же время ночью его выполняем После того или вместо того? И да, как/откуда именно выполняется запрос — может, с помощью курсора, или из pl/pgsql?
скорей всего в первый раз данные запросом читаются с диска, а второй раз уже читаются из кэша, поэтому и разница во времени выполнения. смотрите план запроса через EXPLAIN (ANALYZE, BUFFERS)
А толку — им сравнивать всё равно не с чем. ;) Если сделать так https://t.me/pgsql/315203 , или перейти на auto_explain — другое дело.
согласен что сравнивать не с чем, ну хотя бы видно будет стату блочного чтения
Да. Поэтому, если просто посмотреть план после — не удастся точно выяснить, в чём причина (кеширование? блокировки? другой план? ещё что-то?) .
auto_explain тоже включен и тоже 10 секунд стоит значение, как и у log_min_duration_statement
Ну так а план в логах есть? Если да, что ж Вы его не посмотрели (не показали)? ;)
Обсуждают сегодня