25 сентября 2025 состоялся официальный релиз PostgreSQL 18 — одного из самых значимых обновлений за последние годы. Версия приносит фундаментальные изменения в подсистему ввода-вывода с внедрением асинхронного I/O (AIO), ощутимые ускорения запросов, новые инструменты для разработчиков (включая UUIDv7 и виртуальные вычисляемые столбцы), а также расширенные возможности безопасности, апгрейда и мониторинга. Разбираемся, что именно изменилось и почему это важно для разработчиков и администраторов баз данных.
Три ключевых направления релиза
- Производительность: революционный асинхронный I/O, оптимизации планировщика и индексации
- Удобство для разработчиков: UUIDv7, виртуальные вычисляемые столбцы, расширения RETURNING и временные ограничения
- Эксплуатация и безопасность: улучшенный pg_upgrade, продвинутое наблюдение, OAuth 2.0 и контроль целостности по умолчанию
Мощный рывок производительности
Асинхронный I/O (AIO): новый фундамент ввода-вывода
PostgreSQL 18 вводит подсистему асинхронного ввода-вывода, меняя традиционную синхронную модель работы с диском. Это особенно заметно на чтении и в облачных средах: типичный прирост производительности достигает 2–3 раз за счёт лучшей утилизации ядра и снижения латентности ожиданий I/O.
- Поддержка Linux
io_uringи кросс-платформенных воркеров там, гдеio_uringнедоступен - Снижение I/O-латентности и более стабильная пропускная способность
- Новая системная статистика для наблюдения за AIO, включая представление
pg_aiosдля мониторинга операций в реальном времени
Оптимизации планировщика и индексов
- Skip scan для B-деревьев: ускоряет запросы, которые не указывают все ведущие столбцы индекса
- Умнее OR/IN: автоматическая конвертация в
ANY(array)для более предсказуемого выполнения - Hash join: оптимизировано использование памяти и стратегий соединения
- Параллельная сборка GIN: быстрее создание индексов для JSON и полнотекстового поиска
- Секционирование: улучшено отсечение секций и объединения по секционированным таблицам
Новое для разработчиков
Виртуальные вычисляемые столбцы по умолчанию
В PostgreSQL 18 виртуальные (вычисляемые на лету) столбцы становятся вариантом по умолчанию там, где это уместно. Это снижает требования к хранению и ускоряет операции INSERT/UPDATE, поскольку значения не материализуются на диске. При этом вычисления всегда консистентны и актуальны.
- Меньше затрат на хранение и обновление
- Гарантированная согласованность производных значений
- Материализованные (stored) вычисляемые столбцы теперь можно логически реплицировать
UUIDv7 — упорядочиваемые и кэш-дружелюбные идентификаторы
Нативная поддержка UUIDv7 объединяет глобальную уникальность с естественной хронологической сортировкой. Это уменьшает разбиение страниц и улучшает локальность доступа при индексных операциях по сравнению со случайными UUID.
- Лучшая производительность B-деревьев и кешей
- Хронологический порядок «из коробки» для временных данных
uuidv4()в этой версии выступает алиасом дляgen_rand_uuid
Расширения RETURNING и временные ограничения
- RETURNING: теперь можно гибко обращаться к старым и новым значениям в рамках одного DML с
RETURNING, упрощая аудит изменений и реактивную логику приложения - WITHOUT OVERLAPS: поддержка временных ограничений устраняет пересечения интервалов на уровне схемы и помогает гарантировать корректность расписаний и бронирований
Безопасность и целостность данных
OAuth 2.0, отказ от MD5 и контроль шифров TLS
- OAuth 2.0: новый метод аутентификации с конфигурацией через
pg_hba.confи загрузкой валидаторов токенов черезoauth_validator_libraries— удобная интеграция с современными провайдерами идентичности - MD5 — deprecated: устаревший метод помечен как нежелательный; рекомендуется SCRAM-SHA-256 (удаление MD5 ожидается в следующем мажорном релизе)
- Точный контроль шифров TLS 1.3: новый параметр
ssl_tls13_ciphersпозволяет задавать допустимые наборы шифров
Контроль целостности по умолчанию
Новые кластеры PostgreSQL 18 создаются с включёнными data checksums по умолчанию. Это помогает раньше обнаруживать повреждения данных, что особенно важно в неоднородных облачных средах и при использовании удалённых стораджей.
Эксплуатация, апгрейды и наблюдаемость
Ускоренный и предсказуемый апгрейд
- Сохранение статистики планировщика: избавляет от длительного
ANALYZEпосле обновления и позволяет быстрее вернуть систему к исходной производительности - Новый опыт с
pg_upgrade: флаг-jдля параллельной обработки,--swapдля быстрых операций с директориями и улучшения для крупных инсталляций
Глубже в EXPLAIN и pg_stat_*
- EXPLAIN: расширен деталями о количестве обращений к буферам, числу индексных чтений, а также метриками I/O, CPU и WAL по каждому узлу плана
- Мониторинг: расширенное
pg_stat_ioс пометкой байтовых объёмов, помимо счётчиков, пер-бэкендовая статистика по I/O и WAL - Логическая репликация: запись конфликтов и отражение их в
pg_stat_subscription_statsдля быстрой диагностики - Автообслуживание: время
VACUUMиANALYZEдоступно напрямую вpg_stat_all_tables
Управление схемой и совместимость
- NOT NULL без немедленного сканирования: добавляйте ограничение мгновенно и валидируйте в «окно» низкой нагрузки, минимизируя воздействие на прод
- NOT ENFORCED: мягкое введение ограничений с последующей проверкой
- Улучшенная наследуемость NOT NULL, поддержка NOT VALID и NO INHERIT
- Wire protocol 3.2: первое обновление протокола фронтенд/бэкенд со времён 7.4;
libpqпо умолчанию остаётся на 3.0, открывая путь для будущих клиентских улучшений
Как попробовать PostgreSQL 18 уже сейчас
PostgreSQL 18 доступен как превью в ряде облачных платформ, в том числе в сервисах, ориентированных на серверлесс и облачные нагрузки. Это хорошее время, чтобы:
- Протестировать совместимость приложений
- Провести бенчмарки с асинхронным I/O
- Экспериментировать с UUIDv7 и виртуальными столбцами
- Отработать процедуру апгрейда
Для локального тестирования можно поднять контейнер:
docker run --name pg18 -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres:18
После запуска подключайтесь любым клиентом PostgreSQL (например, psql) и сравните ключевые узкие места до и после включения соответствующих фич и параметров. Для продуктивных нагрузок рекомендуется дождаться снятия статуса превью в облачных сервисах и учесть текущие ограничения.
Почему это важно
PostgreSQL 18 модернизирует систему хранения и ввода-вывода под облачные, масштабируемые сценарии, не ломая совместимость. Один только AIO приносит кратный прирост производительности в типичных read-heavy профилях. В совокупности с UUIDv7, виртуальными столбцами и усовершенствованным мониторингом это делает релиз привлекательным для команд, которым важны предсказуемая производительность, упрощённый дизайн схем и расширенная наблюдаемость. Для DBA это также облегчение апгрейдов и укрепление безопасности за счёт современного стека аутентификации, шифрования и контроля целостности.