Найти в Дзене
Postgres DBA

Типовой шаблон расследования инцидентов PostgreSQL с помощью pg_expecto. Часть 1: Анализ на уровне СУБД

Оглавление
От симптома к причине: системный подход к диагностике PostgreSQL.
От симптома к причине: системный подход к диагностике PostgreSQL.

«Правильно заданный вопрос — это половина ответа. Данная статья — это структурированный список вопросов, которые вы должны задать данным из pg_expecto, чтобы докопаться до истинной причины инцидента.»

Новый инструмент с открытым исходным кодом для статистического анализа, нагрузочного тестирования и построения отчетов доступен в репозиториях GitFlic и GitHub

kznalp/PG_EXPECTO: Комплекс статистического анализа производительности СУБД PostgreSQL
GitHub - pg-expecto/pg_expecto: Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL

Задача

Используя отчеты, сформированные с помощью pg_expecto провести анализ метрик производительности СУБД возникновении инцидента производительности СУБД.

Продолжение

Формирование отчетов по метрикам производительности СУБД и инфраструктуры

Входной параметр отчета summary_report.sh:

  • Дата и время возникновения инцидента
cd /postgres/pg_expecto/sh/performance_reports
./summary_report.sh '2025-10-25 11:09'

Результаты сводного отчета в виде текстовых файлов сохраняются в папке /tmp/pg_expecto_reports

Период формирования отчетов: 1 час .

Результирующие файлы и импорт отчетов в Excel, аналогичны отчетам по нагрузочному тестированию

Шаг-1: Определение типа ожидания СУБД имеющего наибольшую корреляцию со снижением производительности СУБД

Формирование таблицы в Excel

Отчет:

Результат отчета по показателям производительности и ожиданий СУБД
Результат отчета по показателям производительности и ожиданий СУБД

Результат анализа отчета - определение типа ожидания с наибольшей корреляцией и абсолютным значением.

Тип ожидания IO - имеет наибольшую корреляцию с ожиданиями СУБД и оказывает наибольшее влияние на снижение производительности СУБД в целом.

Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики

Шаг-2: Определение проблемных SQL запросов.

Список SQL запросов, вызывающих наибольшее количество событий ожиданий по типу ожидания, оказывающего наибольшее влияние на снижение производительности СУБД.

Формирование таблицы в Excel

Результат отчета по событиям ожиданий для SQL запросов
Результат отчета по событиям ожиданий для SQL запросов

Результат анализа отчета - определение SQL запросов и событий ожиданий по типу ожидания оказывающего наибольшее влияние на снижение производительности СУБД.

Проблемные SQL запросы:

  • -3805078444547199896
  • -4883642671474097249

События ожидания по проблемным запросам:

  • DataFileRead: Ожидание чтения из файла данных отношения.
  • DataFileWrite: Ожидание записи в файл данных отношения.
  • DataFileExtend: Ожидание расширения файла данных отношения.
Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики

Итог: типовой шаблон анализа производительности и ожиданий СУБД при расследования инцидентов.

1. Определение типа ожидания СУБД имеющего наибольшую корреляцию со снижением производительности СУБД

2. Определение проблемных SQL запросов.