Релиз СУБД PostgreSQL 12
После года разработки опубликована новая стабильная ветка СУБД PostgreSQL 12. Обновления для новой ветки будут выходить в течение пяти лет до ноября 2024 года.
Основные новшества:
- Добавлена поддержка «генерируемых столбцов», значение которых вычисляется на основе выражения, охватывающего значения других столбцов в той же таблице (аналог представлений, но для отдельных столбцов). Генерируемые столбцы могут быть двух типов — хранимые и виртуальные. В первом случае значение вычисляется в момента добавления или изменения данных, а во втором — при каждом чтении на основе текущего состояния других столбцов. В настоящее время в PostgreSQL 12 поддерживаются только хранимые генерируемые столбцы;
- Добавлена возможность выполнения запросов данных из JSON-документов при помощи Path-выражений, напоминающих XPath и определённых в стандарте SQL/JSON. Для повышения эффективности обработки подобных выражений для документов, хранимых в формате JSONB, применяются существующие механизмы индексирования;
- Включено по умолчанию применение JIT-компилятора (Just-in-Time) на основе наработок LLVM для ускорения выполнения некоторых выражений в процессе обработки SQL-запроса. Например, JIT применим для ускорения выполнения выражений внутри блоков «WHERE», в выходных списках (target lists), агрегатных выражениях и некоторых внутренних операциях;
- Существенно увеличена производительность индексирования. Индексы B-tree оптимизированы для работы в условиях частого изменения индексов — в тестах TPC-C наблюдается общее повышение производительности и снижение потребления дискового пространства в среднем на 40%. Снижены накладные расходы при генерации лога упреждающей записи (WAL) для типов индексов GiST, GIN и SP-GiST. Для GiST добавлена возможность создания индексов-обёрток (через выражение INCLUDE), включающих дополнительные столбцы. В операции CREATE STATISTICS обеспечена поддержка статистики о наиболее типичных значениях (MCV), позволяющей генерировать более оптимальные планы запросов при использовании неравномерно распределенных столбцов;
- Реализация секционирования (партицирования) оптимизирована для запросов, охватывающих таблицы с тысячами секций, но ограничивающихся выборкой ограниченного подмножества данных. Увеличена производительность добавления данных в секционированные таблицы при помощи операций INSERT и COPY, а также обеспечена возможность добавления новых секций без блокировки выполнения запросов;
- Добавлена поддержка автоматического inline-развёртывания обобщённых табличных выражений (Common Table Expression, CTE), позволяющих использовать временные именованные результирующие наборы, задаваемые при помощи оператора WITH. Inline-развёртывание позволяет повысить производительность большинства запросов, но пока применяется только для нерекурсивных CTE;
- Расширена поддержка свойства локали «Collation», позволяющего задавать правила сортировки и методы сопоставления с учётом смысла символов (например, при сортировке цифровых значений учитывается наличие минуса и точки перед числом и разные виды написания, а при сравнении не принимается во внимание регистр символов и наличие знака ударения);
- Добавлена поддержка многофакторной аутентификации клиента, при которой для аутентификации используется связка из SSL-сертификата и дополнительного метода аутентификации, такого как scram-sha-256;
- Добавлена поддержка шифрования при аутентификации через GSSAPI, как на стороне клиента, так и на стороне сервера;
- Добавлена поддержка определения LDAP-серверов для запросов аутентификации, если PostgreSQL собран с OpenLDAP;
- Добавлена операция «REINDEX CONCURRENTLY» для перестроения индексов без блокировки операций записи в индекс;
- Добавлена команда pg_checksums, позволяющая для существующей БД включать и выключать проверку контрольных сумм для страниц данных (ранее данная операция поддерживалась только во время инициализации БД);
Источник: http://www.opennet.ru/opennews/art.shtml? num=51604
© OpenNet