После 11 месяцев разработки Объявлено о выпуске новой версии PostgreSQL 16, который появляется как новая стабильная ветвь СУБД и в которой обновления в течение пяти лет, до ноября 2028 года, Кроме того, это знаменует собой конец ветки PostgreSQL 11.x, самой старой из текущих веток с поддержкой, которая завершится 9 ноября.
Тем, кто еще не знаком с PostgreSQL, следует знать, что он также известен как Postgres и это система управления реляционной базой данных (СУБД) бесплатно, с открытым исходным кодом, цель которого — предложить базу данных, основанную на расширяемости и соответствии с техническими стандартами.
Основные новые возможности PostgreSQL 16
В представленной новой версии PostgreSQL 16 выделяется то, что Расширены инструменты контроля доступа для логической репликации. Например, была добавлена новая предопределенная функция «pg_create_subscription», которая позволяет давать пользователям право создавать новые подписки.
Добавлено поддержка балансировки нагрузки на стороне клиента которые используют стандартную библиотеку libpq, балансировка позволяет клиенту подключаться к разным хостам, которые могут выбираться в определенном или случайном порядке. Если хост недоступен, предпринимается попытка подключения к другому серверу. После установления соединения запросы внутри сеанса отправляются на выбранный сервер.
Помимо этого произведены оптимизации и улучшена работа планировщика запросов, поскольку предусмотрено распараллеливание операций соединения таблиц » ПОЛНОСТЬЮ » и » ПРАВОЕ СОЕДИНЕНИЕ »
В PostgreSQL 16 мы также можем найти это расширенная поддержка локальных свойств «Сортировка», что позволяет установить правила классификации и методы сравнения с учетом значения символов. По умолчанию он теперь компилируется с локалями ICU вместо локали libc.
Это было улучшена производительность логической репликации, поскольку возможность использовать процессоры, работающие одновременно, помимо добавления возможности использовать индексы B-дерева для таблиц без первичных ключей, что устраняет необходимость последовательного сканирования при поиске записей, а также ускорило первоначальную синхронизацию некоторых таблиц в двоичном формате.
Еще одно улучшение, которое получил механизм логической репликации, заключается в том, что теперь позволяет передавать изменения, внесенные в базу данных При добавлении, удалении или обновлении записей на другой сервер расширена возможность репликации изменений с резервного сервера.
Также добавлено поддержка двунаправленной репликации логических таблиц, что позволяет синхронизировать изменения в двух таблицах на разных серверах. Возможности репликации, добавленные в PostgreSQL 16, позволяют создавать конфигурации с несколькими активными серверами (режим «активный-активный»), на которых вы можете одновременно выполнять операции INSERT, UPDATE, DELETE.
Из другие изменения которые выделяются:
- Оптимизировано использование операций «ПРАВОЕ СОЕДИНЕНИЕ» и «ВНЕШНЕЕ СОЕДИНЕНИЕ» для поиска строк, которых нет в объединенной таблице («антиобъединение»).
- Повышена эффективность плана оптимизации для запросов, в которых используются агрегатные функции в сочетании с предложениями DISTINCT или ORDER BY.
- Инкрементная сортировка используется для ускорения запросов SELECT DISTINCT.
Стратегия работы VACUUM была улучшена, чтобы уменьшить количество ситуаций, требующих блокировки всей таблицы. - В архитектурах x86 и ARM реализованы инструкции векторного процессора (SIMD) для ускорения обработки строк ASCII, операций с данными JSON, а также выполнения поиска в массиве и субтранзакций.
- Модуль «auto_explain» теперь включает поддержку протоколирования значений, передаваемых в параметризованные запросы.
- Повышена точность алгоритма отслеживания запросов, используемого в представлениях pg_stat_statements и pg_stat_activity.
- Расширены возможности мониторинга производительности СУБД. Добавлено сервисное представление » pg_stat_io » со статистикой, отражающей нагрузку на систему ввода-вывода различными бэкендами (фоновый работник, автоочистка и т.д.) и объектами.
- В представление сервиса добавлено новое поле «pg_stat_all_tables» с информацией о времени последнего сканирования таблицы или индекса.
наконец, если вы интересно узнать об этом больше, вы можете проверить детали в по следующей ссылке.