Сравнительная таблица функционала PostgreSQL 16, 17 и 18

Основная информация о релизах

ПараметрPostgreSQL 16PostgreSQL 17PostgreSQL 18
Дата релиза14 сентября 202326 сентября 202425 сентября 2025
Текущая минорная версия16.1117.718.1
Протокол3.03.03.2 (первое обновление с 2003 года)

Производительность и оптимизация

Система ввода-вывода

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Асинхронный I/O (AIO)❌ Нет❌ Нет✅ Новая подсистема AIO с поддержкой io_uring на Linux, до 3x улучшение производительности
Streaming I/O❌ Нет✅ Новый интерфейс для последовательных сканирований✅ Унаследовано и расширено
io_methodНе применимоНе применимо✅ Настройка метода I/O (worker, io_uring, sync)

Оптимизация запросов

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Skip Scan на B-tree индексах❌ Нет❌ Нет✅ Поддержка пропуска префиксных колонок без “=” условия
FULL/RIGHT OUTER hash joins параллелизация✅ Да✅ Да✅ Да
Incremental sorts для DISTINCT✅ Да✅ Да✅ Да
Оптимизация IS NOT NULLЧастично✅ Улучшенная оптимизация для NOT NULL колонок✅ Унаследовано
Correlated IN subqueries → joins❌ Нет✅ Преобразование в joins✅ Унаследовано
Оптимизация OR/IN условийЧастичноЧастично✅ Расширенная оптимизация для использования индексов
Pre-sorted aggregate data✅ Да (enable_presorted_aggregate)✅ Да✅ Да
CTE оптимизацияБазовая✅ Улучшенная с учетом статистики и сортировки✅ Унаследовано

VACUUM и управление памятью

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Page freezing✅ Во время non-freeze операций✅ Да✅ Да
Управление памятью VACUUMСтандартное✅ Новая система управления памятью, снижение потребления✅ Унаследовано
Vacuum стратегияБазоваяУлучшенная✅ Дополнительные улучшения

Параллелизация

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Parallel GIN index builds❌ Нет❌ Нет✅ Поддержка параллельного построения
Hash joins✅ Параллельные FULL/RIGHT✅ Да✅ Улучшенная производительность

Репликация и высокая доступность

Логическая репликация

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Репликация со standby✅ Логическое декодирование на standby✅ Да✅ Да
Параллельное применение больших транзакций✅ Да✅ Да✅ Да
Сохранение слотов при обновлении❌ Нет✅ pg_upgrade сохраняет слоты и состояние подписок✅ Да
Failover слотов❌ Нет✅ Поддержка failover для логических слотов✅ Да
Фильтрация по origin✅ Поддержка bi-directional репликации✅ Да✅ Да
Использование hash индексов❌ Только B-tree✅ Поддержка hash индексов на subscriber✅ Да
Generated columns в репликации❌ Нет❌ Нет✅ Поддержка STORED generated columns

pg_upgrade

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Сохранение статистики❌ Требуется ANALYZE после обновления❌ Требуется ANALYZE✅ Сохранение статистики планировщика
Параллельные проверкиЧастичноЧастично✅ Параллельная обработка с –jobs
–swap flag❌ Нет❌ Нет✅ Обмен директорий вместо копирования
Скорость обновленияБазоваяУлучшенная✅ Значительное ускорение для баз с множеством объектов

SQL/JSON и типы данных

JSON функциональность

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
SQL/JSON конструкторы✅ JSON_ARRAY(), JSON_ARRAYAGG(), IS JSON✅ JSON, JSON_SCALAR, JSON_SERIALIZE✅ Унаследовано
JSON query функцииБазовые✅ JSON_EXISTS, JSON_QUERY, JSON_VALUE✅ Унаследовано
JSON_TABLE()❌ Нет✅ Преобразование JSON в табличный формат✅ Унаследовано
jsonpath expressionsБазовые✅ Расширенные с конвертацией типов✅ Унаследовано

UUID

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
UUID v4✅ gen_random_uuid()✅ Да✅ Да (теперь алиас uuidv4())
UUID v7❌ Нет❌ Нет✅ uuidv7() с timestamp-ordering

Generated Columns

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
STORED✅ Да✅ Да✅ Да
VIRTUAL❌ Нет❌ Нет✅ По умолчанию, вычисление при чтении

Ограничения и constraints

Temporal constraints

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
WITHOUT OVERLAPS❌ Нет❌ Нет (была попытка в бета)✅ PRIMARY KEY, UNIQUE с PERIOD
Temporal FOREIGN KEY❌ Нет❌ Нет✅ С поддержкой PERIOD

NOT NULL constraints

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
NOT VALID❌ Нет❌ Нет✅ Добавление без полного сканирования таблицы
Отложенная валидация❌ Нет❌ Нет✅ VALIDATE CONSTRAINT без ACCESS EXCLUSIVE lock

Другие constraints

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Identity columns на партициях❌ Нет✅ Да✅ Да
Exclusion constraints на партициях❌ Нет✅ Да✅ Да

RETURNING и DML

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
MERGE с RETURNING❌ Нет✅ Да✅ Да
OLD/NEW в RETURNING❌ Нет❌ Нет✅ Доступ к старым и новым значениям в INSERT/UPDATE/DELETE/MERGE
UPDATE viewsОграниченно✅ Расширенные возможности✅ Да

Безопасность и аутентификация

Методы аутентификации

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
OAuth 2.0❌ Нет❌ Нет✅ Нативная поддержка с oauth_validator_libraries
MD5 статусАктивенАктивен⚠️ Устарел (deprecated)
SCRAM-SHA-256✅ Рекомендуется✅ Рекомендуется✅ Предпочтителен
Direct SSL negotiation❌ Нет✅ sslnegotiation=direct с ALPN✅ Да

Другие возможности безопасности

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Regex в pg_hba.conf✅ Да✅ Да✅ Да
require_auth параметр✅ Да✅ Да✅ Да
sslrootcert=“system”✅ Да✅ Да✅ Да
Data checksums по умолчанию❌ Нет❌ Нет✅ Да (–no-data-checksums для отключения)
ssl_tls13_ciphers❌ Нет❌ Нет✅ Настройка TLS 1.3 cipher suites

Роли и привилегии

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
CREATEROLE ограничения✅ Требуется ADMIN OPTION✅ Да✅ Да
GRANT … WITH INHERIT✅ Гранулярный контроль наследования✅ Да✅ Да
pg_maintain роль✅ Да✅ Да✅ Да
pg_create_subscription✅ Да✅ Да✅ Да
MAINTAIN привилегия❌ Нет✅ VACUUM, ANALYZE без владения✅ Да

Мониторинг и диагностика

Системные представления

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
pg_stat_io✅ Новое представление для I/O статистики✅ Да✅ Расширенная статистика с AIO
pg_stat_all_tables улучшенияБазовыеБазовые✅ Время vacuum/analyze
Статистика по соединениямБазоваяБазовая✅ I/O и WAL на уровне соединений
pg_stat_subscription_statsБазовая✅ Конфликты записи✅ Расширенная информация

EXPLAIN

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
EXPLAIN ANALYZE BUFFERSТребуется явное указаниеТребуется явное указание✅ Автоматически включается
EXPLAIN ANALYZE VERBOSEБазовыйБазовый✅ WAL, CPU, средняя статистика чтения
Index lookup counts❌ Нет❌ Нет✅ Количество поисков в индексе
WAL buffer full count❌ Нет❌ Нет✅ В EXPLAIN, VACUUM/ANALYZE, autovacuum

pg_stat_statements

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
JIT deform_counter❌ Нет✅ Да✅ Да
minmax_only в reset()❌ Нет✅ 4-й аргумент✅ Да
stats_since, minmax_stats_since❌ Нет✅ Отслеживание времени создания✅ Да
wal_buffers_full❌ Нет❌ Нет✅ Отчет о полных WAL буферах

COPY и массовая загрузка

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Производительность✅ До 300% улучшение при concurrent✅ До 2x для больших строк✅ Унаследовано
ON_ERROR опция✅ Продолжение при ошибках вставки✅ Да✅ Да
Оптимизация для одинаковой кодировки❌ Нет✅ Улучшения✅ Да

Индексы

Типы индексов

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
GIN parallel builds❌ Нет❌ Нет✅ Параллельное построение
BRIN parallel builds❌ Нет✅ Поддержка✅ Да
Non-B-tree unique indexes на партициях❌ Нет❌ Нет✅ Поддержка
Non-B-tree unique indexes на матвью❌ Нет❌ Нет✅ Поддержка

Collation и локализация

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
C.UTF-8 collation❌ Нет✅ Неизменяемый, кроссплатформенный✅ Да
PG_UNICODE_FAST❌ Нет❌ Нет✅ Встроенная collation

Инструменты разработчика (psql)

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
\bind✅ Параметризованные запросы✅ Да✅ Да
\watch min_rows❌ Нет✅ Остановка после минимума строк✅ Да
Control-C для отмены подключения❌ Нет✅ Да✅ Да
FETCH_COUNT для non-SELECT❌ Нет✅ Да✅ Да
\pset null в backslash командах❌ Нет✅ Да✅ Да
\dp улучшенияБазовые✅ (none) для пустых привилегий✅ Да
Команды с ‘x’ для expanded mode❌ Нет❌ Нет✅ \df+x, \do+x и др.
Pipeline status (%P)❌ Нет❌ Нет✅ Pipeline переменные

Криптография (pgcrypto)

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
sha256crypt, sha512crypt❌ Нет❌ Нет✅ Новые алгоритмы
CFB mode❌ Нет❌ Нет✅ Для шифрования/дешифрования
fips_mode()❌ Нет❌ Нет✅ Отчет о FIPS режиме
builtin_crypto_enabled❌ Нет❌ Нет✅ Отключение non-FIPS функций

Производительность текста и SIMD

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
SIMD поддержка✅ x86 и ARM✅ Расширенная✅ AVX-512 для bit_count
ASCII/JSON оптимизация✅ Да✅ Да✅ Да
upper/lower ускорениеБазовоеУлучшенное✅ Общее ускорение

Партиционирование

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
Identity columns❌ Нет✅ Поддержка✅ Да
Exclusion constraints❌ Нет✅ Поддержка✅ Да
LIMIT оптимизацияБазовая✅ Улучшенная✅ Да
Pruning improvementsБазовыеБазовые✅ Pruned партиции не блокируются
Кэширование RANGE/LIST lookups✅ Да✅ Да✅ Да

WAL и восстановление

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
WAL Summarizer❌ Нет✅ Эффективное отслеживание изменений✅ Да
Incremental backup❌ Нет✅ Поддержка✅ Да
Write throughputБазовый✅ До 2x улучшение при высоком concurrency✅ Унаследовано

Расширения и плагины

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
@extschema:extension_name@✅ Да✅ Да✅ Да
no_relocate✅ Да✅ Да✅ Да
PG_MODULE_MAGIC_EXT❌ Нет❌ Нет✅ Отчет о имени и версии модуля

Устаревшие и удаленные функции

ФункцияPostgreSQL 16PostgreSQL 17PostgreSQL 18
db_user_namespaceАктивна❌ Удалена❌ Удалена
adminpackАктивен❌ Удален❌ Удален
snapshot_too_oldАктивна❌ Удалена❌ Удалена
MD5 authenticationАктивнаАктивна⚠️ Deprecated
PQservice() в libpqАктивнаАктивна❌ Удалена

Совместимость и изменения поведения

PostgreSQL 16

  • Изменение присвоения для PL/pgSQL bound cursor переменных
  • Ограничения CREATEROLE требуют ADMIN OPTION

PostgreSQL 17

  • Изменение search_path для maintenance операций
  • Изменение обработки SET SESSION AUTHORIZATION
  • Удаление символических ссылок для postmaster

PostgreSQL 18

  • Data checksums включены по умолчанию
  • Изменение обработки time zone abbreviations
  • Новая версия протокола 3.2
  • Виртуальные generated columns по умолчанию

Рекомендации по выбору версии

PostgreSQL 16 подходит для:

  • Стабильных production систем
  • Проектов, требующих максимальной совместимости
  • Систем, где критична проверенная надежность

PostgreSQL 17 стоит выбрать для:

  • Проектов с интенсивной работой с JSON
  • Систем с логической репликацией и высокой доступностью
  • Сценариев с частыми major version upgrades
  • Workloads с высоким write throughput

PostgreSQL 18 рекомендуется для:

  • I/O-интенсивных workloads (благодаря AIO)
  • Распределенных систем с UUID v7
  • Приложений с SSO/OAuth интеграцией
  • Temporal данных и аудита (OLD/NEW в RETURNING)
  • Проектов, требующих cutting-edge производительности

Примечание: PostgreSQL 18 был выпущен 25 сентября 2025 года и представляет значительный архитектурный прорыв с новой подсистемой асинхронного I/O.