GitHub - Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL
Глоссарий терминов | Postgres DBA | Дзен
Предисловие
Комплекс pg_expecto v.7 автоматизирует нагрузочное тестирование PostgreSQL, собирая метрики производительности и ожидания событий (wait events). Главное новшество — генерация структурированных промптов на основе данных экспериментов, которые передают контекст тестов нейросети DeepSeek.
Использование DeepSeek в качестве эксперта превращает сырые графики и логи в готовые аналитические отчеты с диагностикой узких мест и рекомендациями по настройке.
ℹ️Статья описывает полный цикл: от конфигурации нагрузки до получения итоговых заключений через нейросеть, что ускоряет принятие решений при оптимизации PostgreSQL.
1. Настройка тестового сценария нагрузочного тестирования
cd /postgres/pg_expecto/sh/load_test
vi param.conf
Параметры нагрузочного тестирования
- finish_load : Максимальное количество сессий pgbench в ходе нагрузочного тестирования.
- testdb : Наименование тестовой базы данных . default - тестовая БД создаваемая по умолчанию pgbench.
- load_mode: Режим имитации нагрузки - OLAP или OLTP
- Веса сценариев по умолчанию : Количество сессий pgbench по сценарию=~общая нагрузка * вес сценария.
- init_test_db: Необходимость инициализировать тестовую БД перед выполнением теста(только для параметра testdb = default )
- scale: Масштабный коэффициент размера тестовой БД при генерации.
Расчет коэффициента: Scale = 0.0669 * DB_Size_Target_MB - 0.5
2. Старт нагрузочного тестирования
cd /postgres/pg_expecto/sh/load_test
./load_test_start.sh
Мониторинг работы нагрузочного тестирования:
tail -f load_test.log
TIMESTAMP : 20-02-2026 11:25:01 : OK : СБОР ДАННЫХ ПО НАГРУЗОЧНОМУ ТЕСТУ
TIMESTAMP : 20-02-2026 11:25:01 : OK : Текущий проход: 15
...
TIMESTAMP : 20-02-2026 11:35:01 : ИТЕРАЦИЯ : 15 СЕССИЙ pgbench : 22
TIMESTAMP : 20-02-2026 11:35:03 : OK : ИТЕРАЦИЯ pg_bench ЗАВЕРШЕНА
Штатное завершение нагрузочного тестирования
TIMESTAMP : 20-02-2026 11:35:03 : OK : СБОР ДАННЫХ ПО НАГРУЗОЧНОМУ ТЕСТУ - ОСТАНОВЛЕН
TIMESTAMP : 20-02-2026 11:35:03 : OK : ФЛАГ ОСТАНОВКИ НАГРУЗОЧНОГО ТЕСТА = 1
TIMESTAMP : 20-02-2026 11:35:03 : OK : ОЧИСТКА ТАБЛИЦЫ pgbench_history
TIMESTAMP : 20-02-2026 11:35:05 : OK : НАГРУЗОЧНЫЙ ТЕСТ ЗАВЕРШЕН
Ручная остановка нагрузочного тестирования
./load_test_stop.sh
3. Формирование отчета по нагрузочному тестированию
cd /postgres/pg_expecto/sh/performance_reports
./load_test_report.sh
Результирующие файлы для формирования отчетов
- _1.settings.txt : Конфигурация СУБД и инфраструктуры.
- _2.postgresql_vmstat.txt: Статистические данные по производительности и ожиданиям СУБД и метрикам vmstat.
- _3.1.prompt.txt: Промпт для нейросети DeepSeek для получения детального сводного отчета по нагрузочному тестированию.
- _3.2.prompt.short.diff.txt: Шаблон промпта для нейросети DeepSeek для получения краткого сравнительного отчета по результатам экспериментов.
- _3.3.prompt.diff.txt: Шаблон промпта для нейросети DeepSeek для получения детального сравнительного отчета по результатам экспериментов.
- 1.1.postgresql.wait_event_type.txt: 1. СТАТИСТИЧЕСКИЙ АНАЛИЗ ОЖИДАНИЙ СУБД
- 1.2.vmstat.performance.txt: 2.ТРЕНДОВЫЙ АНАЛИЗ ПРОИЗВОДИТЕЛЬНОСТИ vmstat
- 1.3.wait_event_type_vmstat.txt: 3. СТАТИСТИЧЕСКИЙ АНАЛИЗ ОЖИДАНИЙ СУБД и МЕТРИК vmstat
- 1.4.wait_event_type_pareto.txt.txt: 4. ДИАГРАММА ПАРЕТО ПО WAIT_EVENT
- 1.5.queryid_pareto.txt: 5. ДИАГРАММА ПАРЕТО ПО QUERYID
- 2.N.vmstat_iostat_XX.txt: 1. СТАТИСТИЧЕСКИЙ АНАЛИЗ ПОДСИСТЕМЫ IO по дисковому устройству XX
- scenario.N.queryid.wait_event_type.txt: ИСТОРИЯ ВЫПОЛНЕНИЯ И СОБЫТИЙ ОЖИДАНИЯ тестового сценария N
- x.iostat_XX.txt: Исходные данные по метрикам iostat для дискового устройства XX
- x.postgresql.cluster_performance.txt: Исходные данные по производительности и ожиданиям СУБД
- x.shared_buffers.txt: Исходные данные по метрикам shared_blks_*
- x.vm_dirty.txt: Исходные данные по метрикам vm_dirty*
- x.vmstat.txt: Исходные данные по метрикам vmstat
4. Применение промптов для формирования сводных отчетов с помощью DeepSeek
4.1 Детальный сводный отчет по нагрузочному тестированию.
4.2 Краткий сравнительный отчет по результатам экспериментов.
4.3 Детальный сравнительный отчет по результатам экспериментов.
Практические примеры применения
Послесловие: От данных — к решениям
Комплекс pg_expecto v.7 автоматизирует рутину: он берет на себя запуск тестов, циклическое изменение нагрузки и сбор исчерпывающей статистики — от событий ожидания до состояния грязных страниц в памяти. Но главная ценность этого инструмента раскрывается в связке с DeepSeek.
Вместо того чтобы вручную изучать десятки файлов с графиками и логами, вы получаете готовые аналитические выводы. Промпты (_3.*.prompt.txt), сгенерированные по итогам тестов, позволяют DeepSeek выступить в роли эксперта, который:
- Находит узкие места, интерпретируя диаграммы Парето и статистику ожиданий.
- Сравнивает эксперименты, указывая, какая настройка конфигурации дала реальный прирост, а какая — привела к деградации.
- Экономит часы работы, превращая «сырые» метрики vmstat и iostat в конкретные рекомендации по настройке PostgreSQL и инфраструктуры.
Практический итог: Использование pg_expecto v.7 + DeepSeek — это переход от гаданий «что пошло не так» к четкому алгоритму «нагрузили — измерили — получили отчет с решением». Это ускорение диагностики и повышение качества настройки базы данных.