PostgreSQL, также называемый Postgres, представляет собой объектно-ориентированную систему управления реляционными базами данных с открытым исходным кодом.
После 11 месяцев разработки был анонсирован релиз новой версии PostgreSQL 16. Эта новая стабильная ветка СУБД будет получать обновления в течение пяти лет, до ноября 2028 года. Это также знаменует собой конец ветки PostgreSQL 11.x, старейшей из поддерживаемых в настоящее время веток, которая будет прекращена 9 ноября.
Для тех, кто еще не знаком с PostgreSQL, это бесплатная реляционная система управления базами данных (СУБД) с открытым исходным кодом , которая стремится предложить базу данных, основанную на расширяемости и соответствии техническим стандартам.
Основные новые возможности PostgreSQL 16
В новой версии PostgreSQL 16 расширены инструменты контроля доступа для логической репликации. Например, добавлена новая предопределенная функция "pg_create_subscription", позволяющая предоставлять пользователям право создавать новые подписки.
В клиентскую часть добавлена поддержка балансировки нагрузки с использованием стандартной библиотеки libpq. Балансировка нагрузки позволяет клиенту подключаться к различным хостам, которые могут выбираться в определенном или случайном порядке. Если хост недоступен, предпринимается попытка подключения к другому серверу. После установления соединения запросы в рамках сессии отправляются на выбранный сервер.
Кроме того, были внесены оптимизации и улучшена работа планировщика запросов, обеспечивающая параллельную обработку операций объединения таблиц «ПОЛНОЕ» и «ПРАВОЕ ОБЪЕДИНЕНИЕ».
В PostgreSQL 16 также расширена поддержка локали "Collation" , которая позволяет устанавливать правила сортировки и методы сравнения на основе значения символов. По умолчанию теперь компиляция выполняется с использованием локали 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» с информацией о времени последнего сканирования таблицы или индекса.
Наконец, если вас интересует более подробная информация, вы можете найти ее по следующей ссылке.