PG_EXPECTO
31 subscribers
68 photos
30 videos
127 links
Эксперименты по анализу и оптимизации производительности PostgreSQL.
📝Автор и ведущий: Сунгатуллин Ринат. 📨Telegram: @rinace
📧Email: kznalp@yandex.ru
⛩️Дзен: https://dzen.ru/kznalp
🗳️GitHub: https://github.com/pg-expecto/pg_expecto
Download Telegram
Анонс.
pg_expecto v6: Анализ dirty-страниц, shared_buffers и памяти в сценариях OLAP/OLTP.


Новая, шестая версия делает мощный скачок в анализе работы с памятью. Основной фокус новой версии - динамика dirty-страниц кэша операционной системы и их влиянии на производительность СУБД PostgreSQL, при имитации аналитической (OLAP) и транзакционной (OLTP) нагрузки.

Что принципиально нового в pg_expecto v6?
Мониторинг Dirty-страниц: Анализ ключевых метрик работы механизма фоновой записи ОС:
· dirty_percent — текущий процент «грязных» страниц в кэше ОС.
· dirty_bg_percent — порог, при превышении которого запускается фоновая запись.
· available_memory — общий контекст доступной памяти.

https://dzen.ru/suite/0c674be0-2dbc-4b73-bed0-3c30593c2ca2
Тестирование производительности PostgreSQL часто упирается в вопрос: как система поведёт себя под реальной, смешанной нагрузкой? Методы «на глазок» и разрозненные метрики не дают полной картины. PG_EXPECTO v.6 — инструмент, который целенаправленно создаёт реалистичную имитацию OLTP и OLAP-нагрузки, дополняя её структурированными чек-листами по вводу-выводу и памяти, а также ключевой статистикой по vm_dirty и shared_buffers для глубокой диагностики.
https://dzen.ru/a/aYIY9tsuOVYutPS3
В мире администрирования PostgreSQL данные об ожиданиях (wait events) являются ключевым источником диагностики производительности. Однако отдельные метрики без аналитической обработки создают лишь информационный шум, не отвечая на главный вопрос: какой тип ожиданий действительно определяет общую нагрузку на систему?
Метод «Взвешенной корреляции ожиданий (ВКО)», реализованный в комплексе PG_EXPECTO, основан на серьёзной теоретической базе. Он сочетает корреляционный анализ для оценки силы связи между типом ожиданий и общей нагрузкой с взвешиванием по значимости, учитывающим долю каждого типа. Без этого фундамента метрика оставалась бы просто числом, а не стратегическим инструментом приоритизации.
Именно теория превращает ВКО в точный компас, который позволяет отделить системные узкие места от фонового шума и сфокусироваться на главной причине проблем — будь то ожидания IO, IPC или блокировок.
https://dzen.ru/a/aYS6-FFz2FVr6wG6
📋План работ на следующую неделю:
1️⃣Чек-лист параметров CPU, IO, RAM (Linux , PostgreSQL) для типов нагрузки OLTP/ OLAP - список текущих значений для анализа с помощью нейросети.
2️⃣Дополнить чек-лист RAM анализом корреляции vm_dirty* и метрик vmstat.
3️⃣Дополнить чек-лист IO анализом корреляции shared_buffers и метрик vmstat.
Производительность PostgreSQL — это не магия, а результат грамотной настройки множества взаимосвязанных компонентов: от ядра операционной системы до внутренних параметров СУБД. Данный материал представляет собой сжатое, практико-ориентированное руководство, которое систематизирует ключевые настройки для Linux и PostgreSQL. Опираясь на результаты нагрузочного тестирования, мы выделим оптимальные значения для типовой конфигурации сервера и объясним, как они влияют на работу под различными типами нагрузок — OLTP и OLAP.
https://dzen.ru/a/aYbUwvk2nRiCYIqy
Анализ корреляции между параметрами vm.dirty и метриками vmstat.
Производительность СУБД, особенно такой мощной, как PostgreSQL, напрямую зависит от тонкой настройки не только самой базы данных, но и операционной системы.
https://dzen.ru/a/aYbYr5rF1Gabx4P3
Анализ эффективности и применимости корреляции метрик shared_buffers PostgreSQL и vmstat.
Совместный анализ метрик буферного кэша PostgreSQL (shared_buffers) и системной статистики (vmstat) позволяет выявлять взаимосвязи между работой СУБД и использованием ресурсов ОС. Это помогает находить узкие места в производительности, такие как нехватка оперативной памяти или перегрузка дисковой подсистемы.
https://dzen.ru/a/aYbbg1VkdAr2LcCm
Тема исследований на ближайшие полгода.
Анализ производительности современных СУБД, таких как PostgreSQL, часто упирается в сложную задачу интерпретации множества взаимосвязанных метрик. Традиционные методы, основанные на выявлении корреляций, не всегда способны ответить на ключевой вопрос: что является причиной, а что — следствием возникающей проблемы?

В контексте поиска более совершенных подходов к диагностике всё большее внимание привлекают методы причинно-следственного анализа, в частности, причинность по Гренджеру (Granger causality). Этот статистический инструмент, применяемый к временным рядам, позволяет с определённой долей уверенности утверждать, предшествует ли изменение одной метрики изменению другой, что является значительным шагом вперёд по сравнению с простой констатацией взаимосвязи.
https://dzen.ru/a/aYgqsVFz2FVrOIbd
План работ по реализации причинности по Гренджеру для анализа и оптимизации производительности СУБД PostgreSQL
https://dzen.ru/a/aYwTk2wd009T3nMZ
PG_EXPECTO v.7 : Комплексный статистический анализ ожиданий СУБД PostgreSQL.
Традиционный подход к диагностике производительности PostgreSQL зачастую опирается на эвристики, «типовые чек‑листы» и интуицию администратора. Администратор видит всплеск ожиданий, находит самый массовый тип события и принимает решение: «увеличить shared_buffers» или «выключить параллельные запросы». Такой метод работает в очевидных случаях, но оказывается бессилен, когда система находится в состоянии сложного баланса между разными механизмами, а первопричина торможения скрыта за вторичными эффектами.
https://dzen.ru/a/aY3whK80YmixfEUZ
Итог исследований о применимости теста причинности по Гренджеру.
Проблема нестационарности временных рядов (ВР) в контексте системных метрик PostgreSQL (например, количество ожиданий блокировок, время ожидания, количество активных транзакций) является классической задачей при попытке применить эконометрические методы, такие как тест причинности по Грэнджеру.
Невозможность использования теста Грэнджера напрямую связана с тем, что математические ожидания и дисперсии метрик PostgreSQL зависят от времени (из-за роста данных, изменения конфигураций и циклов нагрузки), что нарушает математические основы теста.
Работы по теме - завершены.
Диагностика PostgreSQL — это поиск причин в хаосе метрик. Когда мы видим, что всплеск блокировок совпадает по времени с ростом дискового ввода-вывода, возникает соблазн проверить гипотезу тестом Грэнджера: «А не является ли IO причиной Lock?». Однако прямой перенос этого эконометрического инструмента в мир баз данных наталкивается на фундаментальное препятствие — нестационарность.
https://dzen.ru/a/aZIeggu1PzMehBLc
ℹ️Почему не стоит ставить max_connections = 1000 просто "на всякий случай".
При настройке PostgreSQL многие администраторы ориентируются на простое правило: «чем выше лимит соединений, тем больше соединений я могу обслужить». Казалось бы, установка max_connections = 1000 — это дальновидный запас на будущее. ⚠️Однако за этим решением скрывается неочевидная плата, которую база данных взимает ежесекундно, даже если большую часть времени вы используете лишь 20 подключений.
https://dzen.ru/a/aZU7pxjKSFnPnVXE
Синтез статистики и искусственного интеллекта: pg_expecto v.7 собирает данные, DeepSeek формирует отчет по нагрузочному тестированию.

Настоящий отчет подготовлен по результатам комплексного корреляционного анализа производительности СУБД PostgreSQL и инфраструктуры сервера за период 12 февраля 2026 года (14:11 – 16:00). Цель работы — выявление узких мест, количественная оценка влияния различных типов событий ожидания на операционную скорость базы данных, а также анализ системных метрик (vmstat) для определения первопричин наблюдаемой деградации производительности.
В основе отчета лежат методы статистического анализа, включая регрессионный анализ трендов, расчет коэффициентов корреляции и детерминации, а также авторская метрика ВКО (Взвешенная корреляция ожиданий) для ранжирования приоритетности проблем. Все выводы и рекомендации базируются исключительно на собранных за указанный период данных. Отчет предназначен для администраторов баз данных и инженеров.
https://dzen.ru/a/aZXEW-hoVUfN5XTT
pg_expecto v.7+ DeepSeek: Интеграция статистического анализатора и генеративной нейросети - методология и механизмы взаимодействия.
Нагрузочное тестирование PostgreSQL генерирует огромные массивы сырых метрик, в которых легко утонуть, но сложно найти истину. Традиционный подход требует либо мучительного ручного анализа временных рядов, либо упрощённых выводов, не учитывающих всех нюансов. Но можно подойти к этой задаче иначе, объединив математическую строгость статистики с когнитивными способностями больших языковых моделей.
https://dzen.ru/a/aZX_FXE3fC_-1yy_
PG_EXPECTO v.7: Нейросеть DeepSeek в роли эксперта по PostgreSQL

Традиционный DBA-анализ часто субъективен и опирается на опыт конкретного специалиста. PG_EXPECTO предлагает другой метод : автоматизация сбора и обработки статистики с помощью PG_EXPECTO v.7 и формирование выводов нейросети DeepSeek.
PG_EXPECTO рассчитал граничные значения и метрики ВКО, отсеяв незначимые события. DeepSeek, получив эти «чистые» данные, провел сравнительный анализ экспериментов с 30 и 3000 подключениями, указав на скрытые доминанты и системные паттерны.
https://dzen.ru/a/aZclG3DdMxbLg_ra
PG_EXPECTO v.7+DeepSeek: Статистическая обработка данных и формирование сравнительных отчетов OLTP vs OLAP.

Сравнение OLTP и OLAP нагрузок на PostgreSQL 17 — задача, требующая глубокого погружения в метрики. Чтобы исключить субъективные оценки и автоматизировать формирование выводов, используется связка инструментов: сбор и статистическая обработка данных выполнялись утилитой pg_expecto, а подготовка итоговых аналитических отчетов — языковой моделью DeepSeek на основе заранее подготовленных промптов.
https://dzen.ru/a/aZhlE5KSzncHIO25
Комплекс pg_expecto v.7 предоставляет инженерам и администраторам PostgreSQL мощный инструментарий для автоматизированного нагрузочного тестирования и сбора метрик производительности. Однако данные — это лишь исходный материал; настоящая ценность рождается в их глубоком анализе.
Данное руководство описывает полный цикл работы: от конфигурации параметров нагрузки до применения промптов для получения сводных заключений с помощью DeepSeek, что значительно ускоряет диагностику и принятие решений при настройке PostgreSQL.
https://dzen.ru/a/aZlV_MXyW1yI9r-j