запрос на базе отрабатывает по разному (по скорости) При том что коннекты свободны и ресурсы базы PostgreSQL свободны, Один и тот же запрос может выполняться милисекунды, далее секунды а далее падать по таймауту, и это совершенно не предсказуемое поведение.
Может подскажктк - куда нам копать?
Таблица проиндексирована. Статистику и индексы пересобрали. Ничего не помагает
Такое впечатление что индексы в какой то момент перестают работать
вы уверены что запрос один и тот же?
А explain гоняли по нему много раз? Всегда план одинаковый?
Включите https://www.postgresql.org/docs/14/pgstatstatements.html и смотрите что там по факту как мигимум. Кроме того, посмотрите в момент, когда запрос выполняется за секунды — не висит ли в базе лишних блокировок и не происходит ли checkpoint.
Насчет блокировок - очевидная и хорошая идея. Может уровень изоляции при запросе к таблице не верно установлен. Надо посмотреть
Я почитал тот запрос, для которого вы привели explain. Он выполняется конское время потому, что у вас не используется индэкс для поиска — только для сортировки. По-моему хорошых индэксов для него вообще в базе не видно так что как бы сервер и правильно делает. Ну, то есть, на самом деле сервер кажэтся ошыбается в селективности условия — но плана лучшэ с вашыми индэксами и условиями я всё равно здесь не вижу.
Обсуждают сегодня