После года разработки опубликована (https://www.postgresql.org/about/news/1894/) новая стабильная ветка СУБД PostgreSQL 11. Обновления для новой ветки будут выходить (http://www.postgresql.org/support/versioning/) в течение пяти лет до октября 2023 года. Основное внимание при подготовке новой ветки было уделено расширению функциональности в областях управления очень большими базами данных и разработки приложений для масштабируемой обработки больших данных.
Основные новшества (https://www.postgresql.org/docs/11/static/release-11.html):
- Добавлена возможность применения JIT-компиляции (Just-in-Time) для ускорения выполнения некоторых выражений в процессе обработки SQL-запроса. Например, JIT применим для ускорения выполнения выражений внутри блоков "WHERE", в выходных списках (target lists), агрегатных выражениях и проекциях. JIT также задействован для ускорения некоторых внутренних операций. Предложенный JIT-компилятор построен на основе наработок LLVM и для включения требует установки дополнительных зависимостей, связанных с LLVM. Включение осуществляется настройкой "jit = on" в файле конфигурации или командой "SET jit = on" в интерактивном сеансе;
- Добавлен новый вид хранимых процедур, позволяющих использовать транзакции. Процедуры определяются с использованием синтаксиса SQL и позволяют использовать все средства управления транзакциями. Поддержка транзакций даёт возможность создавать более продвинутые серверные обработчики, например, для пакетной загрузки данных. Для определения хранимых процедур с транзакциями добавлена новая команда CREATE PROCEDURE (https://www.postgresql.org/docs/11/static/sql-createprocedur...). Для выполнения процедуры используется команда CALL. К SQL-процедурам также можно обращаться из хранимых процедур на PL/pgSQL, PL/Perl, PL/Python и PL/Tcl;
- Улучшения, связанные с секционированием (партицированием):
- Реализована поддержка секционирования данных по хэшу, которая позволяет секционировать таблицы не только по диапазонам значений и спискам, но и по произвольным ключам.
- Обеспечена корректная маршрутизация операций INSERT, UPDATE и COPY для секционированных таблиц, обрабатываемых с использованием модуля postgres_fdw (https://www.postgresql.org/docs/current/static/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".
URL: https://www.postgresql.org/about/news/1894/
Новость: https://www.opennet.ru/opennews/art.shtml?num=49462