19 October 2018

Вышел PostgreSQL 11

Postgres Professional corporate blogPostgreSQL


Специальный выпуск 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
Tags: postgresql postgres dbms базы данных субд
Hubs: Postgres Professional corporate blog PostgreSQL
+31
23.9k 67
Comments 31
Ads
Top of the day