Релиз СУБД PostgreSQL 17
После года разработки опубликована новая стабильная ветка СУБД PostgreSQL 17. Обновления для новой ветки будут выходить в течение пяти лет до ноября 2029 года. Поддержка PostgreSQL 12.x, самой старой из поддерживаемых веток, будет прекращена 14 ноября.
Основные новшества:
При выполнении операции VACUUM (сборка мусора, чистка и упаковка дискового хранилища) задействована новая структура данных, потребляющая до 20 раз меньше памяти. Задействование новой структуры позволило ускорить выполнение операций VACUUM и сократить потребление совместно используемых ресурсов.
Продолжена оптимизация производительности ввода/вывода. Благодаря улучшению кода для обработки лога отложенной записи WAL удалось до двух раз повысить пропускную способность операций записи в системах с большим числом одновременно выполняемых запросов. Предложен новый интерфейс потокового ввода/вывода, позволивший повысить скорость последовательного перебора данных в таблицах и ускорить обновление статистики для планировщика запросов после выполнения операции ANALYZE.
Повышена производительность запросов с выражением «IN», если в них используются индексы на базе структуры B-tree. Реализована возможность параллельного построения индексов BRIN (Block Range Index). В планировщике запросов оптимизированы проверки «NOT NULL» и ускорена обработка обобщённых табличных выражений (Common Table Expression, CTE) определяемых при помощи SQL-команды «WITH». Обеспечено использование векторных процессорных инструкций (SIMD) для ускорения некоторых вычислений, например, для ускорения функции bit_count задействованы инструкции AVX-512.
Реализована поддержка новых возможностей для работы с форматом JSON, определённых в стандарте SQL/JSON. Добавлена функция JSON-TABLE для преобразования данных в формате JSON в обычные таблицы PostgreSQL, а также новые операторы jsonpath для преобразования данных JSON в родные для PostgreSQL типы данных. Предложены новые функции для создания (JSON, JSON_SCALAR и JSON_SERIALIZE) и запроса (JSON_EXISTS, JSON_QUERY и JSON_VALUE) данных в формате JSON.
- Расширены возможности SQL-команды «MERGE», позволяющей создавать условные SQL-выражения, объединяющие в одном выражении операции INSERT, UPDATE и DELETE. Добавлена поддержка выражения RETURNING, позволяющего вычислять и возвращать значения на основе добавленных, обновлённых или удалённых строк. Реализована поддержка обновления представлений.
Расширены возможности загрузки и экспорта данных в пакетном режиме. В команде COPY до двух раз увеличена скорость экспорта больших строк, оптимизировано копирование при совпадении исходной и целевых кодировок, добавлена опция ON_ERROR, позволяющая продолжить импорт после ошибок при вставке данных.
Для секционированных таблиц добавлена возможность использования столбцов с уникальными идентификаторами и поддержка техники оптимизации запросов «Constraint exclusion».
В механизме подключения внешних таблиц Foreign Data Wrapper (postgres_fdw) реализована возможность передачи на внешний сервер подзапросов «EXISTS» и «IN».
Реализован встроенный платформонезависимый движок для обработки свойств локали «Collation», используемых для задания правил сортировки и методов сопоставления с учётом смысла символов (например, при сортировке цифровых значений учитывается наличие минуса и точки перед числом и разные виды написания, а при сравнении не принимается во внимание регистр символов и наличие знака ударения). Новый движок обеспечивает единое поведение при сортировке результатов запросов, не зависящее от того, на какой платформе запускается PostgreSQL.
В механизме логической репликации, позволяющем транслировать на другой сервер изменения, вносимые в БД в ходе добавления, удаления или обновления записей, упрощён процесс обновления СУБД. Если раньше при переходе на новый значительный выпуск приходилось удалять слоты логической репликации и повторно синхронизировать данные, то теперь можно обойтись без удаления слотов. Для отказоустойчивых конфигураций реализована возможность управления переключением на запасной сервер (failover) для логической репликации. Добавлена новая утилита pg_createsubscriber для преобразования физической реплики в новую логическую реплику.
Добавлена новая опция sslnegotiation для прямого согласования защищённых TLS-соединений с использованием TLS-расширения ALPN.
- Реализована предопределённая роль pg_maintain, предоставляющая пользователю право выполнения операций, связанных с обслуживанием СУБД.
В утилиту pg_basebackup, применяемую для создания резервных копий БД, добавлена поддержка инкрементальных бэкапов. Для реконструирования полного бэкапа из набора инкрементальных копий предложена новая утилита pg_combinebacku. В утилиту pg_dump добавлена опция »--filter» для выбора включаемых в дамп объектов.
При анализе запросов при помощи операции «EXPLAIN» реализован вывод времени, потраченном на чтение и запись локальных блоков при вводе/выводе. В «EXPLAIN» также добавлены две новые опции «MEMORY» и «SERIALIZE», при помощи которых можно определить размер используемой памяти и время, потраченное на преобразование данных для передачи по сети.
Обеспечена индикация прогресса выполнения операции VACUUM с индексами. Добавлено системное представление pg_wait_events, которое в сочетании с представлением pg_stat_activity позволяет подробнее изучить причины нахождения активных сеансов в состоянии ожидания.
Источник: http://www.opennet.ru/opennews/art.shtml? num=61935
© OpenNet