Оптимизация производительности баз

EXPLAIN ANALYZE без магии: как читать план и не лечить не ту проблему

EXPLAIN ANALYZE без магии: как читать план и не лечить не ту проблему

Коллеги, давайте разберем план выполнения. EXPLAIN ANALYZE полезен только тогда, когда вы смотрите не на «самый дорогой» узел, а на расхождения между ожиданием и реальностью.

Смотрите в первую очередь на три вещи:
— estimated rows vs actual rows: если ошибка на порядки, статистика врет, и план мог выбрать плохой путь;
— loops: узел мог быть «дешевым» по одной итерации, но убить запрос на повторениях;
— time vs rows: где есть время без полезной работы, там часто лишние чтения, nested loop или неудачный join.

Потом проверьте узкие места вокруг плана, а не только сам узел:
— сортировки и hash-операции: хватает ли памяти или все уехало на диск;
— фильтры после join: если отсекаете слишком поздно, план уже сделал лишнюю работу;
— Seq Scan vs Index Scan: индекс сам по себе не спасает, если селективность плохая или условие неиспользуемое.

И главное: один красивый план не доказывает ничего. Схема простая, но дьявол кроется в статистике. Сначала мониторинг, потом индексы; потом уже переписывайте запрос, если ошибка в кардинальности и лишние чтения не исчезают.
Этот пост опубликован в Telegram-канале Оптимизация производительности баз. Подписаться можно по ссылке: @database_performance_tuning_arb.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.