- PVSM.RU - https://www.pvsm.ru -

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

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

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


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

В release notes [2] выделяют

  • секционирование:
    • добавлено секционирование по хешу;
    • 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 фиксирует функциональность, а было это [3] еще в середине апреля.

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

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

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

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

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

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

Статьи

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

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

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

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

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

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


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

Идеи и пожелания присылайте на почту: news_channel@postgrespro.ru
Предыдущие выпуски: #10 [21], #9 [22], #8 [23], #7 [24], #6 [25], #5 [26], #4 [27], #3 [28], #2 [29], #1 [30]

Автор: Igor_Le

Источник [31]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/postgresql/296333

Ссылки в тексте:

[1] анонсе: https://www.postgresql.org/about/news/1894/

[2] release notes: https://www.postgresql.org/docs/11/static/release-11.html

[3] было это: https://habr.com/company/postgrespro/blog/353412/

[4] такова: https://h50146.www5.hpe.com/products/software/oe/linux/mainstream/support/lcc/pdf/PostgreSQL_11_New_Features_beta1_en_20180525-1.pdf

[5] zheap: http://rhaas.blogspot.com/2018/01/do-or-undo-there-is-no-vacuum.html

[6] здесь: https://pgconf.ru/media/2018/02/19/%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%BE%D0%B2_pgconfru-2018-pluggable-storages.pdf

[7] перечисляет важнейшие новшества: https://pganalyze.com/blog/postgres11-jit-compilation-auto-prewarm-sql-stored-procedures

[8] расширении для предразогрева базы: https://www.postgresql.org/docs/11/static/pgprewarm.html

[9] обращает внимание: http://www.craigkerstiens.com/2018/09/20/postgresql-11-a-first-look/

[10] Статья о любопытном патче автора, Эндрю Данстэна (Andrew Dunstan): https://blog.2ndquadrant.com/add-new-table-column-default-value-postgresql-11/

[11] Запись: https://register.gotowebinar.com/recording/recordingView?webinarKey=8775304949088333569&registrantEmail=i.levshin%40postgrespro.ru

[12] ответами на вопросы, неотвеченные: https://blog.2ndquadrant.com/webinar-postgresql-11-new-features/

[13] программа: https://www.postgresql.eu/events/pgconfeu2018/schedule/

[14] What's new in PostgreSQL 11?: https://www.postgresql.eu/events/pgconfeu2018/schedule/session/2051-whats-new-in-postgresql-11/

[15] What is old in PostgreSQL 11?: https://www.postgresql.eu/events/pgconfeu2018/schedule/session/2033-what-is-old-in-postgresql-11/

[16] Towards more efficient query plans: PostgreSQL 11 and beyond: https://www.postgresql.eu/events/pgconfeu2018/schedule/session/2124-towards-more-efficient-query-plans-postgresql-11-and-beyond/

[17] PostgreSQL worst practices: https://www.postgresql.eu/events/pgconfeu2018/schedule/session/2169-postgresql-worst-practices/

[18] Do you need a Full-Text Search in PostgreSQL ?: https://www.postgresql.eu/events/pgconfeu2018/schedule/session/2116-do-you-need-a-full-text-search-in-postgresql/

[19] Advanced PostgreSQL Backup and Recovery methods: https://www.postgresql.eu/events/pgconfeu2018/schedule/session/2098-advanced-postgresql-backup-and-recovery-methods/

[20] postgresso: https://t.me/postgresso

[21] #10: https://habr.com/company/postgrespro/blog/422527/

[22] #9: https://habr.com/company/postgrespro/blog/420283/

[23] #8: https://habr.com/company/postgrespro/blog/415675/

[24] #7: https://habr.com/company/postgrespro/blog/413419/

[25] #6: https://habr.com/company/postgrespro/blog/358560/

[26] #5: https://habr.com/company/postgrespro/blog/353736/

[27] #4: https://habrahabr.ru/company/postgrespro/blog/351650/

[28] #3: https://habrahabr.ru/company/postgrespro/blog/349100/

[29] #2: https://habrahabr.ru/company/postgrespro/blog/347858/

[30] #1: https://habrahabr.ru/company/postgrespro/blog/345652/

[31] Источник: https://habr.com/post/426745/?utm_campaign=426745