PG_EXPECTO
32 subscribers
69 photos
30 videos
132 links
Эксперименты по анализу и оптимизации производительности PostgreSQL.
📝Автор и ведущий: Сунгатуллин Ринат. 📨Telegram: @rinace
📧Email: kznalp@yandex.ru
⛩️Дзен: https://dzen.ru/kznalp
🗳️GitHub: https://github.com/pg-expecto/pg_expecto
Download Telegram
Принято считать, что выбор между JOIN и коррелированным подзапросом — одна из ключевых задач оптимизации, способная кардинально повлиять на нагрузку базы данных. В качестве эксперимента, было проведено нагрузочное тестирование, используя Демобазу 2.0 в качестве полигона и vmstat для мониторинга изменений со стороны инфраструктуры, готовясь наглядно продемонстрировать превосходство одного подхода над другим.
Однако результаты оказались неожиданными. Исследование показало практическое отсутствие существенного влияния выбранной структуры запроса на общую производительность СУБД и сервера. В данной статье показано, что в контексте современной оптимизации запросов и мощного аппаратного обеспечения, "страшилка" о катастрофических последствиях использования коррелированных подзапросов часто преувеличена. Нагрузочное тестирование выявило, что СУБД успешно справляется с обоими типами запросов, а реальное влияние на метрики vmstat оказалось малым, что позволяет разработчикам в подобных случаях делать выбор, основываясь на читаемости кода, а не на гипотетических рисках для производительности.
https://dzen.ru/a/aRwqQMQfaV04Qh7r
Результаты новых исследований указывают на необходимость создания отдельного направления по оптимизации параллельных процессов в СУБД PostgreSQL

Казань. 21.11.2025 – По результатам серии экспериментов, проведенных в области анализа производительности СУБД PostgreSQL, был выявлен фундаментальный пробел в современных методологиях оптимизации производительности систем управления базами данных (СУБД). Установлено, что традиционные паттерны и методики оптимизации демонстрируют резкое снижение эффективности или полную неприменимость в средах с высоким уровнем параллельной обработки транзакций.

Эмпирические данные свидетельствуют о том, что при значительной конкурентной нагрузке, когда множество процессов обращаются к данным одновременно, классические подходы, такие как тонкая настройка отдельных запросов или индексация, оказываются недостаточными. Вместо ожидаемого линейного роста производительности наблюдаются нелинейные эффекты, включая интенсивную борьбу за ресурсы (contention), блокировки (locks) и деградацию общей пропускной способности системы.

На основании полученных результатов научным и инженерным сообществом был сделан вывод о назревшей необходимости системного пересмотра принципов анализа и оптимизации СУБД. Для обеспечения устойчивой работы высоконагруженных информационных систем на базе СУБД PostgreSQL требуется выделение и глубокая проработка нового специализированного подраздела, посвященного исключительно оптимизации параллельных процессов (Parallel Processes Optimization).

Введение данной дисциплины предполагает фокусировку на таких аспектах, как:

· Анализ и минимизация конфликтов блокировок на уровне строк и таблиц.
· Оптимизация работы планировщика задач и управления памятью в условиях высокой конкуренции.
· Разработка специализированных метрик для диагностики узких мест, специфичных для параллельной работы.
· Создание рекомендаций по проектированию схемы данных и логики приложений, ориентированных на параллелизм.

Этот шаг является закономерным ответом на вызовы, связанные с ростом объемов данных и требований к масштабируемости современных приложений. Новая парадигма оптимизации позволит вывести управление производительностью СУБД PostgreSQL на качественно новый уровень, обеспечивая стабильность и эффективность в высокопараллельных средах.
This media is not supported in your browser
VIEW IN TELEGRAM
Иллюстрация применения советов нейросети для оптимизации производительности СУБД PostgreSQL
This media is not supported in your browser
VIEW IN TELEGRAM
Инженер DBA пытается объяснить менеджеру результаты работ по анализу производительности СУБД.
Менеджер ничего не понимает, ему скучно и неинтересно .
This media is not supported in your browser
VIEW IN TELEGRAM
ℹ️Эксперимент фактически представляет собой не "один эксперимент", а серию экспериментов при разных условиях нагрузки, агрегированных надежным статистическим методом.
В условиях данной тестовой среды с параллельной нагрузкой замена агрегатной функции MAX на конструкцию ARRAY не дает ожидаемого прироста производительности, что ставит под сомнение универсальность данной рекомендации из статьи "PostgreSQL Antipatterns".

Выбор между подходами должен основываться на конкретных требованиях к использованию памяти и стабильности I/O операций.
https://dzen.ru/a/aShnmmWcvx2BQRRq
This media is not supported in your browser
VIEW IN TELEGRAM
PostgreSQL Antipatterns? Анализ эффективности замены агрегатной функции MAX на ARRAY https://habr.com/p/971314/
This media is not supported in your browser
VIEW IN TELEGRAM
Для условий высокой параллельной нагрузки и конкуренции за вычислительные ресурсы, с точки зрения производительности СУБД - использование конструкции EXISTS не дает существенных преимуществ.
https://dzen.ru/a/aSrxeTDJzBf5ahad
This media is not supported in your browser
VIEW IN TELEGRAM
Оптимизация структуры запроса через LATERAL JOIN и параллельное выполнение доказала свою исключительную эффективность:

Ускорение выполнения на 45%
Рост операционной скорости на 71.77%
Снижение системных издержек на 49-71%
Устранение contention за ресурсы
Более здоровый паттерн использования CPU
Оптимизированный подход демонстрирует превосходную масштабируемость и эффективность использования ресурсов, что делает его рекомендованным решением для среды с высокой параллельной нагрузкой.
https://dzen.ru/a/aSwK2BiJIhwYg3Eo
This media is not supported in your browser
VIEW IN TELEGRAM
Для достижения максимальной производительности в production-среде рекомендуется применять подход с частичной агрегацией данных и использованием массивов, особенно для сложных аналитических запросов в PostgreSQL.

https://dzen.ru/a/aSxMAWNxci1E3-uc