26 сентября 2024 года состоялся релиз стабильной версии СУБД PostgreSQL 17. Обновления для новой ветки будут выходить в течение пяти лет до ноября 2029 года. Подготовка к выпуску PostgreSQL 17 проходила в рамках годового цикла разработки проекта.
По данным OpenNET, основные изменения и дополнения в PostgreSQL 17:
• при выполнении операции 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_combinebackup. В утилиту pg_dump добавлена опция «—filter» для выбора включаемых в дамп объектов;
• при анализе запросов при помощи SQL-команды «EXPLAIN» реализован вывод времени, потраченного на чтение и запись локальных блоков при вводе/выводе. В команду EXPLAIN также добавлены две новые опции MEMORY и SERIALIZE, при помощи которых можно определить размер использованной памяти и время, потраченное на преобразование данных для передачи по сети;
• обеспечена индикация прогресса выполнения операции VACUUM с индексами;
• добавлено системное представление pg_wait_events, которое в сочетании с представлением pg_stat_activity позволяет подробнее изучить причины нахождения активных сеансов в состоянии ожидания.
В конце августа Postgres Professional обновила свободно доступный курс DEV2 по разработке серверной части приложений PostgreSQL. В обновлённой версии курса добавлена информация о новинках версий 13, 14, 15 и 16, переработан материал отдельных тем, а в виртуальной машине курса используется более лёгкий почтовый клиент.
В июне Postgres Professional выпустила новую книгу «PostgreSQL 16 изнутри». Электронная версия учебника находится в свободном доступе. Автор книги — Егор Рогов, директор по разработке образовательных программ Postgres Professional. В актуальной редакции книги «PostgreSQL 16 изнутри» учтены замечания читателей, исправлены опечатки, а также отражены изменения, произошедшие в версии PostgreSQL 16. Также Postgres Professional обновила локализованную документацию к PostgreSQL 16.
Ранее Postgres Professional выложила в свободный доступ книги, учебники и брошюры по работе с PostgreSQL. На сайте компании доступны для свободного скачивания в формате pdf следующие книги:
«Путеводитель по базам данных» — рассказывает об архитектурных принципах современных СУБД, а также об алгоритмах и структурах данных, которые в них используются. Практическим знаниям она даст прочный фундамент в виде понимания общих закономерностей. Книга написана для архитекторов информационных систем и ведущих разработчиков;
«Postgres: первое знакомство» — брошюра по базовым сведениям, содержащая краткий экскурс в историю PostgreSQL и инструкции для начала работы;
«Мониторинг PostgreSQL» — соединяет в себе справочные материалы об инструментарии мониторинга, практические приёмы его использования и способы интерпретации полученных данных на основе понимания внутреннего устройства PostgreSQL. Опыт автора пригодится администраторам баз данных, системным администраторам, специалистам по надёжности.;
«PostgreSQL. Основы языка SQL» — учебник для тех, кто хочет познакомиться с языком SQL и его спецификой в PostgreSQL;
«Основы технологий баз данных» — пособие для студентов, включающее теорию баз данных, методы и алгоритмы, применяемые для реализации СУБД, и особенности PostgreSQL. Курс рассчитан на студентов вузов, имеющих базовую подготовку по программированию, а также разработчиков баз данных и СУБД. Во втором издании книги добавлено подробное рассмотрение структур хранения, методов выполнения и оптимизации запросов, средств поддержки согласованности и надёжности, создания параллельных и распределённых систем баз данных и других вопросов.
Источник: habr.com