Релиз PostgreSQL 12

Группа разработчиков PostgreSQL объявила о выходе PostgreSQL 12, новейшей версии реляционной системы управления базами данных с открытым исходным кодом.
В PostgreSQL 12 значительно улучшена производительность запросов – особенно это касается работы с большими объёмами данных, также произведена оптимизация использования дискового пространства в целом.

Среди новых возможностей:

  • реализация языка запросов JSON Path (важнейшей части стандарта SQL/JSON);
  • оптимизация исполнения общих табличных выражений (WITH);
  • поддержка генерируемых столбцов

Также сообщество продолжает работу над расширяемостью и надёжностью PostgreSQL, развивая поддержку интернационализации, возможностей аутентификации, предоставляя более простые пути администрирования системы.

В этот релиз вошла реализация интерфейса подключаемых движков хранения, что отныне позволяет разработчикам создавать свои собственные методы хранения данных.

Улучшения производительности

PostgreSQL 12 включает существенные улучшения производительности и процедур обслуживания для систем индексирования и секционирования.

Индексы B-tree — стандартный тип индексирования в PostgreSQL, были оптимизированы в версии 12 для нагрузок, предполагающих частые модификации индексов. Использование эталонного теста TPC-C для PostgreSQL 12 продемонстрировало сокращение использования пространства в среднем на 40% и общий прирост производительности запросов.

Запросы к секционированным таблицам получили заметные улучшения, особенно для таблиц, состоящих из тысяч секций, предполагающих работу только с ограниченными частями массивов данных. Была улучшена производительность добавления данных в секционированные таблицы с помощью INSERT и COPY, а также возможность подсоединения новой секции без блокирования выполняемых запросов.

В PostgreSQL 12 были произведены дополнительные усовершенствования в индексировании, которые влияют на общую производительность, включая:

  • снижение накладных расходов при генерации WAL для типов индексов GiST, GIN и SP-GiST;
  • возможность создавать так называемые покрывающие индексы (covering indexes, предложение INCLUDE) на GiST-индексы;
  • возможность выполнять запросы «ближайших соседей» (k-NN search) с помощью оператора расстояния (<->) и использованием индексов SP-GiST;
  • поддержку сбора статистики наиболее распространенных значений (most-common value, MCV) с помощью CREATE STATISTICS, что помогает получать лучшие планы выполнения запросов при использовании столбцов, значения для которых распределены неравномерно.

JIT-компиляция с использованием LLVM, появившаяся в PostgreSQL 11, теперь включена по умолчанию. JIT-компиляция позволяет повышать производительность при работе с выражениями в предложениях WHERE, целевых списках, агрегатах и некоторых внутренних операциях. Она доступна, если вы скомпилировали PostgreSQL с LLVM или используете пакет PostgreSQL, который был создан с включённым LLVM.

Улучшения возможностей языка SQL и совместимости со стандартом

В PostgreSQL 12 появилась возможность выполнять запросы к документам JSON с использованием выражений пути JSON, определенных в стандарте SQL/JSON. Такие запросы могут использовать существующие механизмы индексации для документов, хранящихся в формате JSONB, для эффективного извлечения данных.

Общие табличные выражения, также известные как запросы с WITH, в PostgreSQL 12 теперь могут автоматически исполняться с применением подстановки, что, в свою очередь, может помочь повысить производительность многих существующих запросов. В новой версии часть запроса WITH может выполняться с подстановкой, только если она не является рекурсивной, не имеет побочных эффектов и на неё ссылаются только один раз в последующей части запроса.

В PostgreSQL 12 появляется поддержка «генерируемых столбцов». Описанный в стандарте SQL, этот тип столбца вычисляет значение на основе содержимого других столбцов в той же таблице. В этой версии PostgreSQL поддерживает «хранимые генерируемые столбцы», где вычисленное значение хранится на диске.

Интернационализация

PostgreSQL 12 расширяет поддержку ICU-сопоставлений, разрешая пользователям определять «недетерминированные сопоставления», которые могут, например, позволять сравнения без учёта регистра или ударения.

Аутентификация

PostgreSQL расширяет свою поддержку надёжных методов аутентификации с помощью нескольких улучшений, которые обеспечивают дополнительную безопасность и функциональность. В этом выпуске представлено шифрование на стороне клиента и на стороне сервера для аутентификации через интерфейсы GSSAPI, а также возможность PostgreSQL обнаруживать серверы LDAP, если PostgreSQL скомпилирован с OpenLDAP.

Кроме того, PostgreSQL 12 теперь поддерживает вариант многофакторной аутентификации. Теперь сервер PostgreSQL может затребовать у клиента предоставление валидного SSL-сертификата с соответствующим именем пользователя с использованием clientcert=verify-full, и комбинировать это с отдельным требованием метода аутентификации (например, scram-sha-256).

Администрирование

В PostgreSQL 12 появилась возможность выполнять неблокирующее перестроение индексов с помощью команды REINDEX CONCURRENTLY. Это позволяет пользователям избегать простоя в работе СУБД при длительном перестроении индексов.

Кроме того, в PostgreSQL 12 можно включать или отключать контрольные суммы страниц в кластере, находящемся в выключенном состоянии, с помощью команды pg_checksums. Ранее контрольные суммы страниц — функцию, помогающую проверить целостность данных, хранящихся на диске, — можно было включить только в момент инициализации кластера PostgreSQL с помощью initdb.

Источник: linux.org.ru

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