После года разработки анонсирован выход новой стабильной ветки СУБД PostgreSQL 15, Этот выпуск включает в себя ряд улучшений, в том числе новые возможности сжатия, которые помогают в хранении и резервном копировании данных, улучшения сортировки данных для более быстрого поиска, а также новые возможности ведения журналов и SQL.
В этой новой версии, которая представлена, выделена команда SQL «MERGE», что позволяет создавать условные операторы SQL которые объединяют операции INSERT, UPDATE и DELETE в одном операторе. Например, MERGE можно использовать для объединения двух таблиц путем вставки отсутствующих записей и обновления существующих.
Команда позволяет объединять таблицы и делает PostgreSQL более совместимым с системами управления реляционными базами данных на основе SQL Server, включая Microsoft SQL Server и сервер реляционных баз данных SAP ASE, а также с любыми другими, поддерживающими набор программных расширений Transact-SQL.
Еще одно изменение, которое выделяется в этой новой версии, это в алгоритмах сортировки данных в памяти и на диске значительно улучшены. В зависимости от типа данных в тестах происходит увеличение скорости сортировки от 25% до 400%.
Для логической репликации реализована поддержка фильтрации строк и указания списков столбцов, что позволяет на стороне отправителя выбрать подмножество данных для репликации таблицы. Кроме того, в новой версии упрощено управление конфликтами, например возможность пропускать конфликтующие транзакции и автоматически отключать подписку при обнаружении ошибки. Логическая репликация позволяет использовать двухэтапные фиксации (2PC).
Механизм подключения внешних таблиц Внешний контейнер данных (postgres_fdw) реализует поддержку асинхронных коммитов в дополнение к ранее добавленной возможности асинхронной обработки запросов к внешним серверам.
Добавлена возможность использования алгоритмов LZ4 и Zstandard (zstd) для сжатия журналов транзакций WAL, что при некоторых рабочих нагрузках может одновременно повысить производительность и сэкономить место на диске, а также добавлена поддержка упреждающего извлечения страниц, которые появляются в журнале транзакций WAL для сокращения времени восстановления после сбоя.
Также подчеркивается, что добавлено в утилиту pg_basebackup la поддержка сжатия файлов резервных копий на стороне сервера с помощью методы gzip, LZ4 или zstd. Предусмотрена возможность использования собственных модулей для архивации, что позволяет обойтись без запуска команд оболочки.
Кроме того, теперь в PostgreSQL 15 было обеспечено использование общей памяти для накопления статистики по работе сервера, что позволило избавиться от отдельного процесса сбора статистики и периодического сброса состояния на диск.
Из других изменений, которые выделяются в новой версии:
- Добавлен ряд новых функций для обработки строк с использованием регулярных выражений: regexp_count(), regexp_instr(), regexp_like() и regexp_substr().
- В функцию range_agg() добавлена возможность добавлять мультидиапазонные типы («multi-ranges»).
Добавлен режим security_invoker, позволяющий создавать представления, которые запускаются с правами вызывающего пользователя, а не создателя представления. - Добавлен новый формат журнала: jsonlog, который сохраняет информацию в структурированном виде с использованием формата JSON.
- Администратор имеет возможность делегировать пользователям индивидуальные права на изменение определенных параметров конфигурации сервера PostgreSQL.
- Добавлена поддержка утилиты psql для поиска информации о настройках (pg_settings) с помощью команды «dconfig».
- Предложено встроенное расширение pg_walinspect, позволяющее проверять содержимое файлов с записями WAL с помощью SQL-запросов.
- Удалена поддержка Python 2 в PL/Python.
- Удален устаревший режим «эксклюзивного резервного копирования».
- Реализована возможность параллельного выполнения запросов с выражением «SELECT DISTINCT».
Наконец, стоит упомянуть, что обновления для новой ветки будут выпускаться в течение пяти лет до ноября 2027 года. Если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями в по следующей ссылке.