Postgres 19: REPACK, SQL/PGQ и умный autovacuum — что нового в бета-версии
Бета-версия PostgreSQL 19 уже доступна для тестирования, и она приносит долгожданные функции, которые изменят подход к обслуживанию баз данных и работе с данными. В этом обновлении разработчики сосредоточились на практических улучшениях, повышающих производительность и упрощающих эксплуатацию. REPAC

Бета-версия PostgreSQL 19 уже доступна для тестирования, и она приносит долгожданные функции, которые изменят подход к обслуживанию баз данных и работе с данными. В этом обновлении разработчики сосредоточились на практических улучшениях, повышающих производительность и упрощающих эксплуатацию. REPACK CONCURRENTLY, SQL/PGQ и умный autovacuum — лишь вершина айсберга.
REPACK CONCURRENTLY: обслуживание без простоев
Одной из ключевых возможностей Postgres 19 стала команда REPACK CONCURRENTLY. Она позволяет перестраивать таблицы и индексы без блокировки на запись, что критически важно для высоконагруженных систем. Ранее для дефрагментации или изменения параметров хранения приходилось использовать сторонние утилиты или длительные блокировки, что приводило к простоям. Теперь REPACK CONCURRENTLY делает это на лету: создаёт новую версию таблицы в фоне, а затем атомарно переключает указатели. Это снижает нагрузку на администраторов и позволяет поддерживать базу данных в оптимальном состоянии без прерывания работы приложений.
Как работает REPACK CONCURRENTLY и чем он отличается от обычного REPACK?
Обычный REPACK блокирует таблицу на запись, что неприемлемо для production-систем с 24/7 доступностью. REPACK CONCURRENTLY использует механизм snapshot isolation: новая версия таблицы строится параллельно, а затем моментально подменяет старую. Это стало возможным благодаря улучшениям в MVCC и механизме блокировок. Администраторам больше не нужно планировать окна обслуживания — они могут выполнять дефрагментацию в любое время, минимизируя влияние на пользователей.
SQL/PGQ: запросы к графам свойств на уровне ядра
Ещё одно значительное нововведение — поддержка SQL/PGQ (Property Graph Queries). Эта функция позволяет выполнять запросы к графовым структурам данных напрямую через SQL, не прибегая к отдельным графовым базам. SQL/PGQ стандартизирует синтаксис для обхода графов, поиска путей и анализа связей. Для разработчиков, работающих с социальными сетями, рекомендательными системами или сетевыми топологиями, это означает возможность использовать единый стек PostgreSQL без необходимости внедрения дополнительных инструментов. Хотя реализация пока базовая, она открывает путь к более сложным графовым операциям в будущих версиях.
Какие графовые запросы теперь можно выполнять в PostgreSQL 19?
SQL/PGQ позволяет задавать шаблоны обхода графа с помощью ключевого слова MATCH. Например, можно найти всех друзей пользователя или кратчайший путь между двумя узлами. Синтаксис интуитивно понятен для тех, кто знаком с SQL, и не требует изучения нового языка запросов. Это упрощает интеграцию графовых аналитик в существующие приложения.
Умный autovacuum и другие улучшения
Разработчики значительно доработали механизм autovacuum. Новая версия учитывает не только количество изменённых строк, но и паттерны доступа к данным, что позволяет точнее определять момент для очистки. Это снижает вероятность разрастания таблиц и уменьшает нагрузку на ввод-вывод. Кроме того, улучшена работа VACUUM для секционированных таблиц, что особенно актуально для больших хранилищ данных.
Как умный autovacuum снижает нагрузку на базу данных?
Традиционный autovacuum запускается по порогу изменений, что может приводить к излишней активности на часто читаемых таблицах. В Postgres 19 autovacuum анализирует статистику доступа и адаптирует частоту очистки, избегая ненужных операций. Это особенно полезно для систем с смешанной нагрузкой, где одни таблицы интенсивно обновляются, а другие — только читаются.
Технические подробности: EXPLAIN, COPY и планировщик
Postgres 19 получил обновлённый EXPLAIN, который теперь показывает более детальную информацию о времени выполнения и использовании буферов. Команда COPY стала быстрее при работе с большими объёмами данных благодаря оптимизации ввода-вывода. Планировщик запросов научился лучше оценивать стоимость параллельных планов, что повышает производительность сложных аналитических запросов. Для администраторов добавлены новые представления мониторинга, позволяющие отслеживать активность VACUUM и логической репликации в реальном времени.
Логическая репликация становится зрелой
Логическая репликация, введённая в Postgres 10, в версии 19 получила поддержку двунаправленной синхронизации и автоматического разрешения конфликтов. Это упрощает построение активных кластеров и географически распределённых систем. Также улучшена репликация для таблиц с большим количеством секций — теперь она работает эффективнее и требует меньше ручной настройки.
Кого затронет и как
Разработчики приложений оценят SQL/PGQ для работы с графовыми данными без переключения контекста. Администраторы баз данных получат инструменты для обслуживания без простоев и более точный autovacuum, что снизит операционные риски. Для бизнеса, использующего PostgreSQL в критических системах, эти изменения означают более высокую доступность и предсказуемую производительность. В российских компаниях, где PostgreSQL является стандартом де-факто, обновление может быть отложено до стабильного релиза, но бета-версия уже позволяет планировать миграцию.
Что будет дальше
Финальный релиз PostgreSQL 19 ожидается в конце 2025 года. До этого возможны изменения в API и поведении, поэтому использовать бета-версию в production не рекомендуется. Разработчикам стоит начать тестирование на стендах, чтобы оценить влияние на существующие приложения. В сообществе активно обсуждается дальнейшее развитие SQL/PGQ и улучшение параллельных запросов. Postgres 19 задаёт вектор на упрощение эксплуатации и расширение возможностей без потери стабильности.
Итог
Postgres 19 — это не революция, а эволюция, делающая базу данных ещё более удобной и производительной. REPACK CONCURRENTLY, SQL/PGQ и умный autovacuum решают реальные проблемы разработчиков и администраторов. Если вы используете PostgreSQL, стоит присмотреться к бета-версии уже сейчас, чтобы быть готовыми к обновлению после стабильного релиза.