Релиз СУБД PostgreSQL 11

После года разработки опубликована новая стабильная ветка СУБД PostgreSQL 11. Обновления для новой ветки будут выходить в течение пяти лет до октября 2023 года. Основное внимание при подготовке новой ветки было уделено расширению функциональности в областях управления очень большими базами данных и разработки приложений для масштабируемой обработки больших данных.

Основные новшества:

  • Добавлена возможность применения JIT-компиляции (Just-in-Time) для ускорения выполнения некоторых выражений в процессе обработки SQL-запроса. Например, JIT применим для ускорения выполнения выражений внутри блоков «WHERE», в выходных списках (target lists), агрегатных выражениях и проекциях. JIT также задействован для ускорения некоторых внутренних операций. Предложенный JIT-компилятор построен на основе наработок LLVM и для включения требует установки дополнительных зависимостей, связанных с LLVM. Включение осуществляется настройкой «jit = on» в файле конфигурации или командой «SET jit = on» в интерактивном сеансе;
  • Добавлен новый вид хранимых процедур, позволяющих использовать транзакции. Процедуры определяются с использованием синтаксиса SQL и позволяют использовать все средства управления транзакциями. Поддержка транзакций в процедурах даёт возможность создавать более продвинутые серверные обработчики, например, для пакетной загрузки данных. Для определения хранимых процедур с транзакциями добавлена новая команда CREATE PROCEDURE. Для выполнения процедуры используется команда CALL. К SQL-процедурам также можно обращаться из хранимых процедур на PL/pgSQL, PL/Perl, PL/Python и PL/Tcl;
  • Улучшения, связанные с секционированием (партицированием):
    • Реализована поддержка секционирования данных по хэшу, которая позволяет секционировать таблицы не только по диапазонам значений и спискам, но и по произвольным ключам.
    • Обеспечена корректная маршрутизация операций INSERT, UPDATE и COPY для секционированных таблиц, обрабатываемых с использованием модуля postgres_fdw (логически объединяет таблицы с нескольких серверов);
    • Представлена секция «catch-all», которая используется по умолчанию для данных, не соответствующих ключу секции, и позволяет применять первичные ключи, внешние ключи, индексы и триггеры над секционированными таблицами.
    • Обеспечено автоматическое перемещение записей в корректную секцию, в случае изменения в записи ключа для выбора секции;
    • Увеличена производительность запросов при чтении данных из секций;
    • Добавлена возможность применения операции «upsert» (добавить-или-модифицировать) к секционированным таблицам, что позволяет упростить код приложений и снизить число сетевых запросов;
  • Проведена работа по увеличению производительности параллельной обработки запросов. Увеличена производительность распараллеливания операций последовательного сканирования и слияния хэшей. Добавлена возможности распараллеливания операций при выполнении команд «CREATE TABLE … AS», «CREATE MATERIALIZED VIEW» и блоков UNION. В команду «CREATE INDEX» реализована параллельная обработка данных при построении индексов B-tree;
  • Обеспечена возможность обойтись без полной перезаписи таблицы при выполнении «ALTER TABLE … ADD COLUMN» при отличающемся от null значении столбца по умолчанию;
  • В «CREATE INDEX» добавлена опция INCLUDE для создания индексов-обёрток, включающих дополнительные столбцы;
  • В оконные функции добавлена поддержка всех опций «рамок окна» (window frame), определённых в стандарте SQL:2011, включая возможность использования RANGE для PRECEDING/FOLLOWING, режима GROUPS и опций исключения рамок;
  • В интерфейс командной строки в дополнение к штатной команде «q» добавлены более привычные для новичков команды «quit» и «exit».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.