Мощь PostgreSQL всегда заключалась в расширяемости: благодаря открытым внутренним хукам планировщика и интерфейсам индексных методов ядро можно адаптировать под самые узкоспециализированные нагрузки.
Но у этой гибкости есть оборотная сторона: каждый мажорный релиз СУБД меняет внутренние структуры ядра, требуя синхронного обновления модулей расширения. С выходом первого релиз-кандидата Postgres 19 разработчики ключевых расширений представили совместимые версии: оптимизатор подсказок pg_hint_plan 1.9.0, инкрементальные матвью pg_ivm 1.17 и геопространственный гигант PostGIS 3.7.0 RC3.
Давай рассмотрим, какие критические задачи эксплуатации решают эти релизы.
pg_hint_plan 1.9.0
Планировщик запросов PostgreSQL в 99% случаев строит оптимальный план выполнения на основе актуальной статистики ANALYZE. Но в оставшемся 1% сложных аналитических запросов с десятью JOIN оптимизатор ошибается в оценке кардинальности (cost estimation) и выбирает медленный Nested Loop вместо Hash Join, подвешивая продакшен.
Расширение pg_hint_plan позволяет инженеру директивно подсказать планировщику нужную стратегию выполнения через специальные комментарии к SQL-запросу:
/*+
HashJoin(orders customers)
IndexScan(orders idx_orders_created_at)
Leading((orders customers))
*/
SELECT c.name, count(o.id)
FROM customers c
JOIN orders o ON o.customer_id = c.id
WHERE o.created_at >= '2026-10-01'
GROUP BY c.name;
Версия 1.9.0 адаптирована под измененные структуры узлов планировщика Postgres 19 и добавляет поддержку подсказок для параллельного сканирования партиционированных таблиц.
pg_ivm 1.17
Материализованные представления (Materialized Views) в стандартном Postgres имеют фатальный недостаток: чтобы обновить данные в представлении, нужно вызвать REFRESH MATERIALIZED VIEW, что приводит к полному пересчету всего запроса с нуля. Если в исходных таблицах миллиарды строк, обновление может длиться часами.
Расширение pg_ivm (Incremental View Maintenance) внедряет инкрементальное обновление: при вставке или изменении одной строки в базовой таблице через триггеры мгновенно обновляется только дельта в матвью. О развитии инкрементальных матвью в pg_ivm и безопасности данных мы писали ранее, а версия 1.17 закрывает главную боль админов — сохранение представлений при мажорном апгрейде базы:
-- Проверка целостности метаданных IVM перед запуском pg_upgrade
SELECT * FROM pg_ivm_dump_metadata();
-- Создание инкрементального представления в pg_ivm 1.17
CREATE INCREMENTAL MATERIALIZED VIEW daily_revenue AS
SELECT date_trunc('day', order_date) AS day, sum(amount) AS revenue
FROM orders
GROUP BY 1;
Ранее утилита pg_upgrade теряла метаданные инкрементальности, заставляя пересоздавать все витрины. В 1.17 добавлен экспорт метаданных, обеспечивающий мгновенный переезд на 19-ю ветку.
PostGIS 3.7.0 RC3
Географическое расширение PostGIS 3.7.0 RC3 завершает фазу стабилизации перед релизом девятнадцатой ветки ядра.
Главные улучшения версии:
- Ускорение пространственных джойнов: алгоритм
ST_IntersectsиST_DWithinоптимизирован под векторные инструкции процессора AVX-512, что дало двукратный прирост скорости на геометриях высокой сложности. - Поддержка параллельной агрегации кластеров: функции пространственной кластеризации (
ST_ClusterKMeans) научились эффективно распараллеливаться по всем ядрам процессора в связке с планировщиком Postgres 19.
Итоги обновления расширений
Своевременная адаптация pg_hint_plan, pg_ivm и PostGIS гарантирует, что переход на PostgreSQL 19 пройдет безболезненно для сервисов со сложной аналитикой и высокими требованиями к производительности.
