Компания Postgres Professional выпустила новое поколение СУБД Postgres Pro Enterprise 18, которая объединила в себе передовые решения для крупного бизнеса и возможности новейшего ядра PostgreSQL 18.
Ниже — подробный разбор ключевых нововведений.
Возможности ядра PostgreSQL 18
Переход на ядро PostgreSQL 18 даёт пользователям повышение производительности и более удобную эксплуатацию. В Postgres Pro Enterprise 18 доступны все новые решения ванильной версии, включая:
- Асинхронный ввод-вывод (AIO). Внедрение AIO позволяет СУБД выполнять множественные запросы на чтение данных с диска параллельно, не дожидаясь ответа на каждый из них. Это существенно ускоряет последовательное сканирование, операции VACUUM и сбор статистики, закладывает фундамент для будущих рекордов производительности в высоконагруженных аналитических и транзакционных системах.
- Оптимизация Skip Scan. Новая стратегия планировщика позволяет более эффективно использовать многоколоночные B-tree индексы даже в тех случаях, когда условие WHERE не включает ведущую колонку индекса. Это часто превращает полное сканирование таблицы (seq scan) в быстрый индексный поиск.
- Расширенные инструменты мониторинга. Доработки EXPLAIN ANALYZE (автоматическое отображение BUFFERS, детализация временного хранилища и I/O) делают диагностику и настройку сложных запросов более наглядными и эффективными.
- Эффективный VACUUM. Значительно переработан механизм VACUUM, включая «нетерпеливую заморозку» (eager freezing), которая снижает вероятность блокировок и позволяет лучше контролировать масштабирование рабочих процессов автовакуума.
KVik — кеширование данных СУБД в RAM
Для систем с высокой нагрузкой на чтение данных в расширение proxima добавлен экспериментальный функционал KVik — кеширующий в оперативной памяти данные СУБД и обеспечивающий быструю работу с ними через RESP-протокол
Основная функциональность KVik:
- высокопроизводительное чтение данных;
- поддержка RESP-протокола, команды GET, SET, DEL;
- автоматическая инвалидация данных в кеше при их изменении в СУБД при операциях insert, update, delete;
- автоматическое изменение данных в СУБД при их изменении в кеше при операциях SETи DEL.
Улучшенная адаптивная оптимизация запросов (AQO 4.0)
Модуль AQO (Adaptive Query Optimizer) 4.0 использует машинное обучение для автоматического исправления ошибок в планах выполнения запросов, возникающих в стандартном планировщике.
Ключевое отличие версии 4.0 — устранение накладных расходов на этапе планирования, которые ограничивали применение модуля в предыдущих версиях.
Также из улучшений:
- благодаря нивелированию затрат ресурсов на планирование, модуль теперь рекомендован для любых типов рабочих нагрузок, а не только для специфических сценариев;
- за счёт построения более эффективных планов запросов пользователи отмечают снижение нагрузки на дисковую подсистему на десятки процентов;
- в новой версии реализована поддержка конфигураций высокой доступности, а также устранены проблемы с разрастанием служебных данных и временными таблицами.
Масштабируемость и отказоустойчивость (BiHA)
Кластерное решение BiHA получило обновления для геораспределенных систем и Enterprise-эксплуатации.
- Каскадная репликация.Решена проблема избыточной нагрузки на сеть и основной сервер (Лидер) в кластерах с большим количеством узлов или распределённых по разным ЦОД. Теперь реплики могут получать данные не напрямую от Лидера, а транзитом через другие узлы. Это минимизирует трафик между дата-центрами и освобождает ресурсы Лидера для обработки транзакций. Механизм полностью автоматизирован: при сбоях промежуточных узлов кластер самостоятельно перестраивает цепочку репликации, выбирая наиболее актуальный источник (Best Follower).
- Мажорный апгрейд с минимальным простоем.Реализована процедура обновления кластера BiHA с версии 17 на 18 с минимальным простоем, гарантией отсутствие потери данных и возможностью отката на старую версию в процессе обновления.
Load Balancer: умная балансировка
В расширении proxima появился встроенный балансировщик нагрузки, упрощающий маршрутизацию запросов. Теперь драйверу не нужно гадать, куда отправлять запросы — СУБД предоставляет специализированные порты:
- P2L (Proxy-to-Leader) — порт для пишущей нагрузки (RW);
- P2F (Proxy-to-Follower) — порт для распределения читающей нагрузки (RO) между репликами.
Для порта P2F реализовано несколько стратегий балансировки, позволяющих гибко адаптироваться под требования системы и выравнивать утилизацию ресурсов в кластере:
- Round-Robin и Random для равномерного распределения запросов по очереди или в случайном порядке;
- Weighted Round-Robin позволяет учитывать разную мощность серверов с помощью весовых коэффициентов;
- Least Connection направляет запросы на реплику с наименьшим количеством активных сессий.
Оптимизация записи и больших данных
Для администраторов баз данных, сталкивающихся с ETL-процессами и массовой загрузкой, Postgres Pro Enterprise 18 предлагает три новых инструмента:
- Append Optimized TableНовая табличная опция append_optimized = true. При массовой вставке данные буферизируются пачками, что кратно снижает количество поисков свободных буферов и записей в WAL. Идеально для быстрой загрузки логов и исторических данных.
- Мультисегментная вставкаРешает проблему конкуренции за блокировки (buffer contention) при параллельной вставке в одну таблицу. Каждый бэкенд-процесс пишет в свой собственный файловый сегмент. Это позволяет линейно масштабировать скорость записи при 10–50 параллельных потоках.
- Отложенное сжатие (CFS)Для сжатых файловых систем (CFS) появилась возможность вставлять данные без компрессии (для максимальной скорости), а сжатие выполнять фоново позже. Это ускоряет процесс загрузки данных («ночное окно»).
Секционирование по ссылке (Reference Partitioning)
Теперь можно автоматически создавать партиции в дочерних таблицах на основе внешнего ключа (Foreign Key) к родительской таблице.
Пример: При создании новой партиции «Январь 2025» в таблице Orders, в связанной таблице Order_Items соответствующая партиция появится автоматически. Это значительно упрощает управление иерархическими структурами данных.
Отложенная смена пароля
Для технических учётных записей введен механизм плавной ротации паролей. Параметр OLD_PASSWORD_TIME позволяет задать период, в течение которого действуют и старый и новый пароли. Это даёт возможность обновлять конфигурации приложений постепенно, без остановки сервиса.
Кеширование результатов запросов
Для сценариев с «тяжелыми» повторяющимися выборками (например, пагинация на высоконагруженных сайтах) добавлен модуль pgpro_result_cache.Достаточно добавить хинт result_cache в SQL-запрос, и результат будет сохранён в памяти. При любом изменении данных в исходных таблицах кеш мгновенно сбрасывается. Это позволяет сократить время выполнения запросов с секунд до долей миллисекунды.
Postgres Pro Enterprise 18 уже доступна для изучения. Подробности в документации.