заметки по QPT PostgreSQL
очень важно анализировать проблемы на полном наборе данных. Для этого, например, можно использовать Database LabEngine — средство быстрого создания тонких клонов, разработанное Postgres.ai: https://github.com/postgres-ai/database-lab-engine
pg_profile. Оно основано на статистических представлениях PostgreSQL, информация из которых сохраняется в хранилище снимков активности. Изучая и сравнивая между собой снимки, можно выявлять проблемы и причины их возникновения. Автор расширения — Андрей Зубков(https://github.com/zubkov-andrei/pg_profile )
Серверная часть приложения, выполняющаяся в СУБД, может состоять не только из SQL-запросов, но и содержать процедурный код. Если код написан на языке PL/pgSQL, то для его профилирования можно воспользоваться сторонним расширением PL Profiler (основной автор – Ян Вик: https://github.com/bigsql/plprofiler)
Работать с большими планами в текстовом виде не всегда удобно. Для лучшей наглядности можно пользоваться сторонними инструментами, из которых отметим https://explain.tensor.ru/about
https://n.sbis.ru/groups/explain/news
EXPLAIN ANALYZE
подзадачи — узлы плана
продолжительность — actual time
или страничный ввод-вывод — buffers
количество выполнений — loops
Можно посчитать общее количество страниц во всех задействованных таблицах:
=> SELECT sum(relpages)
FROM pg_class
WHERE relname IN ('flights','boarding_passes','aircrafts','seats');
sum
-------
60911
(1 row)
Это число может служить грубой оценкой сверху для запроса, которому требуются все строки: обработка существенно большего числа страниц может говорить о том, что данные перебираются по нескольку раз.
Комментарии
Отправить комментарий