Генерал Авайлабилити PostgreSQL 11

czhnxy6kjxr8aplnzuvjgttiedg.jpeg

Специальный выпуск POSTGRESSO, посвященный выходу официального релиза версии 11.


На улице PostgreSQL праздник. После четырех beta вышла PostgreSQL 11 General Availability, то есть официальная версия. В анонсе есть даже приветственное слово Брюса Момжана: «готовя этот релиз, сообщество особенно заботилось о добавлении функциональности, необходимой для работы с очень большими базами данных. Доказано, что PostgreSQL хорошо работает с транзакционными нагрузками, а теперь новая версия — PostgreSQL 11 — облегчит разработчикам еще и создание приложений для Big Data».

В release notes выделяют

  • секционирование:
    • добавлено секционирование по хешу;
    • PRIMARY KEY, FOREIGN KEY, индексы (см. ниже на эту тему) и триггеры;
    • секция по умолчанию для записей, вышедших за границы созданных секций;
    • UPDATE по ключу секционирования теперь может автоматически перемещать запись в соответствующую секцию;
    • PostgreSQL научился исключать ненужные секции (partition pruning) во время исполнения запросов SELECT;
  • распараллеливание:
    • теперь можно параллельно создавать индекс в случае B-tree;
    • при CREATE TABLE… AS, CREATE MATERIALIZED VIEW и в некоторых случаях запросов с UNION;
    • улучшена производительность в параллельных HASH JOIN и SEQUENTIAL SCAN;
  • появились хранимые процедуры, и в них возможно управление транзакциями;
  • JIT-компиляция некоторых запросов, выигрыш на вычислении выражений;
  • оконные функции теперь поддерживают все фреймовые опции SQL:2011 стандарта, в том числе расстояния по RANGE у PRECEDING/FOLLOWING, режим GROUPS, возможность исключения строк из фрейма;
  • появились покрывающие индексы [не покрывающие, а инклюзивные, строго говоря — прим. POSTGRESSO], использующие выражение INCLUDE при CREATE INDEX;
  • из раздела «разное»: ALTER TABLE… ADD COLUMN c значениями NOT NULL по умолчанию: этот вариант команды теперь не перезаписывает все строки таблицы и, следовательно, работает быстро.


Впечатляющий список, хотя и не сенсационный: по определению Feature freeze фиксирует функциональность, а было это еще в середине апреля.

Постгресисты из HPE регулярно публикуют детальную сводку функциональности. После апрельской Feature freeze она была такова (в этом PDF есть и краткая сводка новшеств, и детали, и примеры).

Не совсем понятны, все же, сверхбурные восторги (см. ниже реакцию Лукаса Фитла) по поводу этой версии. Сделано очень много полезного, но доделывать еще предстоит очень важные вещи, а есть направления по которым не то чтобы конь не валялся, но это лишь свет в начале тоннеля. Например, многое доделали в секционировании, спору нет, но до сих пор невозможно сослаться на секционированную таблицу при помощи FOREIGN KEY. Можно создать FOREIGN KEY, но в самой секционированной таблице. Глобальных индексов нет.

JIT/LLVM появился, но тут же исчез из дефолтной конфигурации: по умолчанию он выключен. И это неспроста, ведь в некоторых случаях он не ускоряет, а вносит ненужные оверхеды.

Не вошли в новую версию большие патчи с функциями для работы с JSON/JSONB.

За подключаемыми движками хранения (pluggable storage) и, в том числе, zheap (то есть Oracle-подобный UNDO, работающий без VACUUM) многие следят с замиранием сердца. Они в эмбриональном состоянии, не утрясли еще даже API. Обзор возможностей в этом направлении есть здесь.

Но это было лишь напоминание о том, что еще предстоит. Работа над новым и недоделанным старым идёт вовсю, направление развития понятно.

Статьи

New in Postgres 11: Monitoring JIT performance, Auto Prewarm & Stored Procedures
Лукас Фитл (Lukas Fittl) не только перечисляет важнейшие новшества, но и приводит оценки производительности, листинги, планы. Лукас поясняет, что нового в расширении для предразогрева базы (pg_prewarm), напоминает об особенностях хранимых процедур, тестирует JIT. Вывод ультраоптимистический: похоже, это будет лучший релиз PostgreSQL.

Postgres 11 — a First Look
Крейг Кирстинс (Craig Kerstiens) обращает внимание в том числе на фичи, не расписанные выше, напоминает об изменениях в статистике, например. Или о… см. ниже.

Adding new table columns with default values in PostgreSQL 11
Статья о любопытном патче автора, Эндрю Данстэна (Andrew Dunstan) из 2ndQuadrant. Теперь, например, в столбце по умолчанию могут задаваться не только статические величины, но и CURRENT_TIMESTAMP или random ().

На конференциях и на вебинарах на тему PostgreSQL 11

Питер Айзентраут (Peter Eisentraut) из 2ndQuadrant провёл вебинар по новшествам PostgreSQL 11. Запись дополнена ответами на вопросы, неотвеченные на вебинаре.

На PGCONF.EU в Лиссабоне (вот программа) запланирован, конечно, обзорный доклад: Магнуса Хагандера (Magnus Hagander)
What’s new in PostgreSQL 11? и к нему парой
What is old in PostgreSQL 11? Деврима Гюндюца (Devrim Gündüz).
Towards more efficient query plans: PostgreSQL 11 and beyond Александра Кузьменкова (Postgres Professional), в котором будут упомянуты не только (и даже не столько) закоммиченные фичи, сколько то, что еще в работе.
Также в программе есть и доклады
PostgreSQL worst practices Ильи Космодемьянского (Data Egret)
Do you need a Full-Text Search in PostgreSQL? Олега Бартунова (Postgres Professional),
Advanced PostgreSQL Backup and Recovery methods Анастасии Лубенниковой (Postgres Professional)


Подписывайтесь на канал postgresso!

Идеи и пожелания присылайте на почту: news_channel@postgrespro.ru
Предыдущие выпуски: #10, #9, #8, #7, #6, #5, #4, #3, #2, #1

© Habrahabr.ru