Учебный Центр ФОРС
После обновления PostgreSQL запрос стал медленнее
SQL и данные те же, время выросло. Сравните версии, настройки и планы для параметров из жалобы.
Пример для PostgreSQL 18: город связан с округом. orders существует, обе колонки — text. Выполняйте код в одной диагностической сессии:
PREPARE q(text, text) AS
SELECT order_id FROM orders
WHERE city = $1 AND federal_district = $2;
EXPLAIN ANALYZE EXECUTE q('Казань', 'ПФО');
Условный фрагмент, остальные поля опущены; числа вымышленные, не результат стенда:
Seq Scan on orders (rows=30)
actual rows=4200
Оценка ниже факта; причина регрессии не доказана. Гипотеза — связь колонок не учтена, селективности перемножены как независимые.
Проверьте объект dependencies: после CREATE STATISTICS значения собирает ANALYZE. Перенос проверяйте для своего способа миграции и версий.
Зафиксируйте generic/custom до и после; оценки сравните также в одинаковом режиме.
EXPLAIN ANALYZE выполняет запрос, ANALYZE собирает статистику. Обе операции нагружают базу: выбирайте контролируемое окно, исходные планы сохраните заранее.
План прежний — проверьте также нагрузку и ввод-вывод. Не начинайте с индекса без сверки rows с фактом.
Сохраните порядок для разбора PostgreSQL при подготовке обучения в УЦ ФОРС.
#PostgreSQL #DBA #УЦФОРС
VK | Телеграм | Сайт Если у вас установлено приложение,
вы можете сразу перейти в канал