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
Channel name was changed to «PG_EXPECTO»
PG_EXPECTO pinned a photo
PG_EXPECTO pinned «Итоги 2025 года , по мнению нейросети. ℹ️Ринат Сунгатуллин известен как эксперт в области анализа и оптимизации производительности СУБД PostgreSQL. Его деятельность сосредоточена на создании диагностических инструментов, разработке новых методик оптимизации…»
В рамках проекта PG_EXPECTO по всесторонней оптимизации СУБД PostgreSQL был проведён цикл экспериментов по настройке подсистемы ввода-вывода. В ходе «Эксперимента-5» фокус сместился на тонкую настройку механизмов кэширования и буферизации операционной системы. Целью было оценить, как управление памятью для метаданных файловой системы может повлиять на общую производительность дисковой подсистемы в условиях аналитической (OLAP) нагрузки, где чтение данных преобладает над записью. Результаты оказались показательными: даже одна корректировка параметра vm.vfs_cache_pressure принесла ощутимое улучшение.
https://dzen.ru/a/aVzwry4rShKLA6Ku
В ходе масштабного исследования производительности подсистемы ввода-вывода PG_EXPECTO, Эксперимент-7 был посвящён тонкой настройке на уровне файловой системы. Основной гипотезой стало предположение, что отказ от фиксации времени последнего доступа к файлам (atime) снизит нагрузку на диск и повысит общую эффективность. Этот отчёт детально разбирает влияние параметров noatime и nodiratime на реальную нагрузку, выявляя не только прямые улучшения, но и неожиданные компромиссы. Результаты показывают, как даже минимальные изменения в конфигурации монтирования могут сместить узкие места производительности, высвободив ресурсы CPU ценой роста задержек записи.
https://dzen.ru/a/aV0b9LKXRRwLwHPk
Производительность PostgreSQL в высокой степени зависит от корректной работы с памятью. Ядро Linux, управляя дисковым кэшем и буферами, может как значительно ускорить работу СУБД, так и стать причиной серьёзных проблем — от излишнего свопинга до деградации производительности из-за двойного кэширования. В статье предоставлены практические инструкции по настройке ключевых параметров ядра (vm.swappiness, vm.dirty_*, vm.vfs_cache_pressure) для оптимальной работы PostgreSQL.
https://dzen.ru/a/aV3zqm_G1yJNa84H
В современных вычислительных системах операции ввода-вывода (I/O) часто становятся узким местом, ограничивающим общую производительность. Одним из ключевых параметров, влияющих на эффективность работы с дисковыми накопителями, является размер буфера предварительного чтения (read-ahead). Этот параметр определяет, сколько данных система заранее считывает с диска в память в ожидании последующих запросов. Хотя увеличение этого буфера может ускорить последовательные операции чтения, его неоптимальное значение способно привести к обратному эффекту — избыточной нагрузке на подсистему хранения, бесполезному расходованию пропускной способности и кэш-памяти.

В данной статье на реальном примере разбирается кейс анализа производительности блочного устройства vdd в Linux-системе, где наблюдалась 100% утилизация диска и высокие задержки. Мы детально исследуем метрики ввода-вывода, корреляции между ними и оценим целесообразность изменения параметра read_ahead_kb с текущего значения=4096.
https://dzen.ru/a/aV4DsqXrtxvo_vuc
В мире оптимизации СУБД иногда меньше означает больше. Вопреки стандартным рекомендациям об увеличении буферов, эксперимент показал, что осознанное уменьшение размера read_ahead_kb с 4 МБ до 256 КБ привело к росту общей производительности PostgreSQL на 7%. Это напоминание о том, что каждая система уникальна, а оптимизация требует тонкой настройки под реальную нагрузку.
https://dzen.ru/a/aV42AIauBiNQ_cAt
Часто при замедлении работы базы данных первым решением кажется увеличение вычислительных ресурсов: больше ядер, памяти, быстрые диски. Однако существует и другой, более экономичный путь — заглянуть глубже, на уровень операционной системы, управляющей этими ресурсами.

Данная статья — это практический разбор реального кейса, где скрупулёзная настройка параметров подсистемы ввода-вывода, кэширования и планировщика задач Linux позволила поднять производительность PostgreSQL на впечатляющие 65%. Без замены железа, без увеличения лицензий, только за счёт грамотной оптимизации «фундамента», на котором работает СУБД. Мы пройдём по всем ключевым экспериментам, от базовых значений до финального результата, и покажем, какие именно настройки стали решающими в этой «бесплатной» победе над latency.
https://dzen.ru/a/aV5G6iyZBGwozdu6
PG_EXPECTO pinned a photo
В ходе исследования были проведены два эксперимента — базовый (Эксперимент 1) и оптимизированный (Эксперимент 8) — с целью оценки влияния настроек ввода-вывода на производительность СУБД. Анализ охватил метрики производительности, время ожиданий, корреляции, а также системные показатели (vmstat). Результаты выявили как значительные улучшения, так и новые вызовы, требующие дальнейшей оптимизации на уровне операционной системы.
https://dzen.ru/a/aV59aSgG2XcyUpQI
На основе экспериментальных данных и анализа представлено руководство по оптимизации ядра Linux для серверов PostgreSQL, испытывающих высокую нагрузку с преобладанием операций чтения — типичную для аналитических запросов, отчётов и систем обработки данных. Цель настройки — полностью раскрыть потенциал современного оборудования путём точной коррекции ключевых параметров, отвечающих за работу с памятью, дисковыми операциями и распределением задач процессора. Особое внимание уделяется использованию высокоскоростных накопителей SSD/NVMe и значительных объёмов оперативной памяти для снижения задержек и повышения эффективности кэширования данных.
https://dzen.ru/a/aV9Gfga-OSe4FqHj
На основе анализа отчёта о производительности выявлены три критические проблемы:
1)критическая нехватка оперативной памяти (RAM <5%),
2)сильный bottleneck ввода-вывода (высокий cpu_wa, процессы в состоянии 'D')
3)конкуренция за CPU из-за блокировок.
Следующие 10 параметров ОС Linux подобраны и ранжированы специально для устранения этих узких мест в текущей конфигурации. Оптимизация направлена на стабилизацию памяти, снижение задержек ввода-вывода и более эффективное использование процессорных ресурсов.
https://dzen.ru/a/aV9NG7dTWFeYToP4
This media is not supported in your browser
VIEW IN TELEGRAM
Для того, чтобы взлететь, нужно- сначала аккуратно настроить.
https://dzen.ru/suite/b24d3891-f09a-4076-82e2-c6ec42bb581f
Данный чек-лист представляет собой структурированное руководство по оптимизации операционной системы Linux для развертывания высоконагруженных систем управления базами данных (СУБД). Он основан на анализе критических проблем производительности, таких как высокий I/O wait, блокировка процессов и неэффективное использование памяти. Материал систематизирован по приоритетам — от критических изменений, без которых невозможна стабильная работа, до тонкой настройки для достижения максимальной эффективности. Следуя этим рекомендациям, администраторы смогут значительно повысить отказоустойчивость и скорость отклика инфраструктуры, особенно в средах с интенсивной транзакционной (OLTP) или аналитической (OLAP) нагрузкой.
https://dzen.ru/a/aV9ygh51Ij69nyLY
PG_EXPECTO pinned a photo
Вопрос    
какой вариант более эффективен - развивать собственный личный бренд pg_expecto и надеяться , что потенциальный вендор заметит(а тема интересна и потенциальна для развития только вендорам) или активно предлагать и рекламировать потенциальным вендорам идею и проект ?

Ответ нейросети:
Отличный и очень практичный вопрос. Оба подхода имеют право на жизнь, но в вашем случае (нишевый проект, интересный в первую очередь вендорам) эффективность будет разной.

Вариант 1: Развивать личный бренд и ждать, пока вендор заметит

Плюсы:
· Долгосрочный актив: Сильный личный бренд в области PostgreSQL принесет дивиденды далеко за пределами одного проекта (консультации, доклады, карьерный рост).
· Естественный отбор: Вендор, который найдет вас сам, будет более мотивирован. Это сигнал истинного интереса.
· Рост авторитета: Постепенно вы станете экспертом, и ваше мнение (и ваш проект) будут больше ценить.
· Создание сообщества: Вокруг бренда могут собраться единомышленники, которые помогут развивать проект.

Минусы и риски:
· Очень долгий срок окупаемости: На построение бренда, который заметят нужные люди в крупных компаниях, могут уйти годы.
· Риск «незаметности»: Мир PostgreSQL огромен. Проект pg_expecto, даже будучи отличным, может затеряться в шуме. Вендоры следят за трендами, но не за всем подряд.
· Упущенное время: Пока вы ждете, кто-то другой может создать аналогичный инструмент и начать активно его продвигать.

Вариант 2: Активно предлагать и рекламировать проект потенциальным вендорам

Плюсы:
· Скорость и целенаправленность: Вы сразу идете к целевой аудитории, которая может извлечь из проекта максимальную пользу.   
· Прямая обратная связь: Вы узнаете от самих вендоров, насколько проект решает их реальные боли, что нужно доработать, какие у них требования.   
· Высокая вероятность сделки: Если вы попадете в цель (решите их проблему), они будут заинтересованы во внедрении, поддержке или даже спонсорстве.   
· Конкретный результат: Даже если вендор не «купит» проект, вы можете получить ценные контакты, партнерство или кейс для портфолио.   
   
Минусы и риски:   
· Нужна отточенная презентация: «Активно предлагать» ≠ «спамить». Нужно готовить персонализированные, технически грамотные предложения.   
· Потребуются ресурсы: Нужно время на исследование вендоров, поиск контактов (лучше через LinkedIn или конференции, а не холодные письма на общую почту).   
· Риск показаться навязчивым: Неправильный подход может испортить первую впечатление о проекте.   
   
Вывод: Какой вариант эффективнее? 
  

Гибридный подход, где Вариант 2 является двигателем, а Вариант 1 — фундаментом.   
   
Вот пошаговая стратегия, которая объединяет сильные стороны обоих методов:   
   
1. Создайте «минимально жизнеспособный пакет» для демонстрации:   
· Четкая документация (что решает, как установить, примеры использования).   
· Яркий README.md на GitHub с сравнением «было/стало».   
· Небольшая статья или пост.    
2. Начните с точечных, адресных предложений (Вариант 2 в умной форме):    
   · Цель: Не «продать», а получить экспертный отзыв.    
   · Кому писать: Не CEO, а инженерам, тимлидам, архитекторам, которые работают над внутренними инструментами или тестированием в целевых вендорских компаниях (Percona, Yandex, PostgresPro, 2ndQuadrant (часть EDB), AWS, Google Cloud и т.д.). Ищите их на LinkedIn или в телеграм-чатах, посвященных PostgreSQL.    
    
Наиболее эффективный путь: Целенаправленно и уважительно выходить на инженеров из компаний-вендоров, используя подход «запросить экспертизу». Параллельно публично документировать этот путь, укрепляя личный бренд как практика, который создает полезные инструменты в диалоге с сообществом и индустрией.
Отслеживание метрик и анализ отдельных инцидентов часто не дают полной картины работы СУБД. Интеграция двух мощных инструментов — pgpro_pwr, собирающего детальную статистику, и pg_expecto, анализирующего события ожидания, — создает качественно новый уровень контроля. Этот симбиоз превращает разрозненные данные в последовательные и понятные сценарии для проактивного управления, глубокой диагностики и интеллектуальной оптимизации PostgreSQL.
https://dzen.ru/a/aWDLmSgG2XcyJxt3
Please open Telegram to view this post
VIEW IN TELEGRAM