Skip to content

Настройка конфигурации PostgreSQL: лучшие практики и инструменты для повышения производительности

Пересказ статьи Uzzal Kumar Hore. PostgreSQL Configuration Tuning Best Practices and Tools for Production-Ready Performance


PostgreSQL является одной из наиболее мощных и универсальных баз данных с открытыми кодами, но установка из коробки не является вполне оптимизированной. Если вас серьезно беспокоит производительность - будь то OLTP, OLAP, смешанная нагрузка или данные временных рядов - важным моментом является настройка параметров конфигурации PostgreSQL.

Эта статья посвящена лучшим практикам настройки ключевых параметров PostgreSQL, обоснованию главных параметров конфигурации и разнообразным инструментам (включая, но не ограничиваясь timescaledb-tune), чтобы помочь автоматизировать или усовершенствовать этот процесс.

Почему PostgreSQL требует ручной настройки


Настройки по умолчанию в PostgreSQL намеренно консервативны - они рассчитаны на выполнение при минимальных аппаратных ресурсах. В результате, если вы имеете современную инфраструктуру (многоядерный ЦП, SSD, много оперативной памяти), эти параметры по умолчанию не могут в значительной мере использовать возможности вашей системы.
Continue reading "Настройка конфигурации PostgreSQL: лучшие практики и инструменты для повышения производительности"

Почему PostgreSQL предпочитает MergeJoin вместо HashJoin?

Автор: Андрей Лепихов

8 июля 2024 года - Why PostgreSQL prefers MergeJoin to HashJoin?


Сегодняшняя статья вызвана загадочным наблюдением: пользователи, особенно те, кто использует уровень абстракции наподобие REST или библиотек ORM для взаимодействия с базами данных, часто отключают опцию MergeJoin во всём экземпляре базы данных. Они оправдывают это действие многочисленными случаями снижения производительности.

Учитывая, сколько интересных путей выполнения MergeJoin добавляет в систему, разрабатывая IncrementalSort или порядки сортировки, полученные из лежащего в основе IndexScan, это выглядит странно: ещё одна ошибка искажённого баланса стоимости внутри модели стоимости PostgreSQL?

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

Continue reading "Почему PostgreSQL предпочитает MergeJoin вместо HashJoin?"

Когда планировщик запросов PostgreSQL плутует: погружение в оптимизацию запросов

Пересказ статьи Shailesh Kumar Mishra. When PostgreSQL Query Planner Goes Rogue: A Deep Dive into Query Optimization


Вы администратор баз данных, эксперт в PostgreSQL, специалист RDS/Aurora или архитектор решений, который борется с внезапным замедлением запросов? Узнайте, как воздействие на планировщик запросов PostgreSQL может преобразовать долгие минуты выполнения запросов в чудо-миллисекунды. Это исследование реального случая в PostgreSQL 14.2 должен помочь в вашем подходе к настройке запросов базы данных.

Вызов: когда быстрые запросы становятся медленными


Недавно я столкнулся со следующей ситуацией. Наша команда разработки приложений заявила о резком падении производительности запроса, который обычно выполнялся за секунды, но внезапно начал отрабатывать за несколько минут. Это исследование предлагает бесценные идеи тем, кто работает с PostgreSQL, вне зависимости от обслуживания локальных установок или же облачных решений типа Amazon RDS или Aurora.
Continue reading "Когда планировщик запросов PostgreSQL плутует: погружение в оптимизацию запросов"

Почему следует избегать правил в PostgreSQL и использовать вместо них триггеры

Пересказ статьи Basant C. Why You Should Avoid PostgreSQL RULEs and Use Triggers Instead


PostgreSQL предлагает мощную - но часто неправильно воспринимаемую - возможность, называемую CREATE RULE, которая позволяет вам переписывать и дописывать под капотом запросы SQL. Эта система изначально была предназначена, чтобы сделать представления доступными для записи, но со временем некоторые пользователи попытались изменить ее назначение для общей автоматизации или управления доступом.

Именно здесь начинаются неприятности. :-(

В этой статье мы разберемся с тем, что делает CREATE RULE, как он работает изнутри, и почему почти всегда лучше вместо этого использовать триггеры. Попутно мы увидим реальные примеры ошибок и раскроем скрытые опасности, таящиеся в автоматизации на основе правил. Continue reading "Почему следует избегать правил в PostgreSQL и использовать вместо них триггеры"

Как найти запросы с высокой загрузкой процессора в PostgreSQL

Перевод статьи: How To Find High CPU Utilization Query In Postgresql


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



При работе с запросами с высокой загрузкой CPU в PostgreSQL важно иметь возможность анализа планов исполнения запросов. Анализируя эти планы, изучая используемые индексы и выявляя последовательные просмотры или дорогостоящие операции, такие как сортировка и соединения, разработчики и администраторы баз данных могут точно определить запросы, вызывающие высокую загрузку CPU. После выявления эти запросы можно оптимизировать, что потенциально приведет к значительному улучшению общей производительности базы данных.



Continue reading "Как найти запросы с высокой загрузкой процессора в PostgreSQL"

Понимание функциональных индексов в PostgreSQL

Пересказ статьи abdelrahman yasser. Understanding Functional Indexes in PostgreSQL


Что такое функциональный индекс?


В PostgreSQL индексы играют решающую роль в оптимизации производительности запросов. Обычно индексы ссылаются на один или более столбцов таблицы. Однако функциональный индекс определяется как результат функции, применяемой к одному или нескольким столбцам одной таблицы. Эти индексы позволяют выполнять быстрый доступ к данным на основе результатов вызова функции.

Как работают функциональные индексы?

Continue reading "Понимание функциональных индексов в PostgreSQL"

Начинаем работать с Google MCP Toolbox для баз данных: практическое руководство

Пересказ статьи Gary Svenson. Getting Started with Google MCP Toolbox for Databases: A Practical Guide


Что такое MCP Toolbox?


MCP Toolbox от Google является бесплатной утилитой с открытыми кодами, которая действует как мост между вашими приложениями ИИ и базами данных. Можно представить ее как универсальный транслятор: ваш ИИ может делать простые запросы, а MCP Toolbox преобразует их в запросы к базе данных (например, SQL), используя протокол MCP (Model Context Protocol) - стандартизованный способ взаимодействия инструментов и моделей.

Зачем использовать MCP Toolbox?


MCP Toolbox - это больше, чем просто транслятор запросов. Он оптимизирует ваш рабочий процесс, повышает безопасность и упрощает управление вашими ИИ-проектами.
Continue reading "Начинаем работать с Google MCP Toolbox для баз данных: практическое руководство"