Релиз СУБД PostgreSQL 12
3 октября 2019 года
После года разработки опубликована новая стабильная ветка СУБД PostgreSQL 12. Обновления для новой ветки будут выходить в течение пяти лет до ноября 2024 года.
Основные новшества:
- Добавлена поддержка "генерируемых столбцов", значение которых вычисляется на основе выражения, охватывающего значения других столбцов в той же таблице (аналог представлений, но для отдельных столбцов). Генерируемые столбцы могут быть двух типов - хранимые и виртуальные. В первом случае значение вычисляется в момент добавления или изменения данных, а во втором - при каждом чтении на основе текущего состояния других столбцов. В настоящее время в PostgreSQL поддерживаются только хранимые генерируемые столбцы;
- Добавлена возможность выполнения запросов данных из 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, а также обеспечена возможность добавления новых секций через "ALTER TABLE ATTACH PARTITION" без блокировки выполнения запросов;
- Добавлена поддержка автоматического inline-развёртывания обобщённых табличных выражений ( Common Table Expression, CTE), позволяющих использовать временные именованные результирующие наборы, задаваемые при помощи оператора WITH. Inline-развёртывание позволяет повысить производительность большинства запросов, но пока применяется только для нерекурсивных CTE;
- Добавлена поддержка недетерминированных свойств локали "Collation", позволяющего задавать правила сортировки и методы сопоставления с учётом смысла символов (например, при сортировке цифровых значений учитывается наличие минуса и точки перед числом и разные виды написания, а при сравнении не принимается во внимание регистр символов и наличие знака ударения);
- Добавлена поддержка многофакторной аутентификации клиента, при которой в pg_hba.conf для аутентификации можно комбинировать аутентификацию по SSL-сертификату (clientcert=verify-full) c дополнительным методом аутентификации, таким как scram-sha-256;
- Добавлена поддержка шифрования канала связи при аутентификации через GSSAPI, как на стороне клиента, так и на стороне сервера;
- Добавлена поддержка определения LDAP-серверов на основе записей "DNS SRV", если PostgreSQL собран с OpenLDAP;
- Добавлена операция "REINDEX CONCURRENTLY" для перестроения индексов без блокировки операций записи в индекс;
- Добавлена команда pg_checksums, позволяющая для существующей БД включать и выключать проверку контрольных сумм страниц данных (ранее данная операция поддерживалась только во время инициализации БД);
- Обеспечен вывод индикатора прогресса выполнения операций CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL и pg_checksums;
- Добавлена команда "CREATE ACCESS METHOD" для подключения обработчиков новых методов хранения таблиц, оптимизированных для различных специфичных задач. В настоящее время единственным встроенным методом доступа к таблицам является "heap";
- Файл конфигурации recovery.conf объединён с postgresql.conf. В качестве индикаторов перехода в состояние восстановления после сбоя теперь следует использовать файлы recovery.signal и standby.signal.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.