Реліз СУБД PostgreSQL 15

Після року розробки опубліковано нову стабільну гілку СУБД PostgreSQL 15. Оновлення для нової гілки виходитимуть протягом п'яти років до листопада 2027 року.

Основні нововведення:

  • Додано підтримку SQL-команди «MERGE», що нагадує вираз «INSERT … ON CONFLICT». MERGE дозволяє створювати умовні SQL-вирази, що поєднують в одному виразі операції INSERT, UPDATE та DELETE. Наприклад, за допомогою MERGE можна організувати злиття двох таблиць, вставляючи відсутні записи та оновлюючи існуючі. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES
  • Значно покращено алгоритми сортування даних у пам'яті та на диску. Залежно від типу даних у тестах спостерігається підвищення швидкості сортування від 25 до 400%.
  • Прискорено роботу віконних функцій з використанням row_number(), rank(), dense_rank() та count().
  • Реалізовано можливість паралельного виконання запитів із виразом «SELECT DISTINCT».
  • У механізмі підключення зовнішніх таблиць Foreign Data Wrapper (postgres_fdw) реалізовано підтримку асинхронних коммітів на додаток до доданої раніше можливості асинхронної обробки запитів до зовнішніх серверів.
  • Додано можливість застосування алгоритмів LZ4 та Zstandard (zstd) для стиснення WAL-логів транзакцій, що при деяких навантаженнях дозволяє одночасно підвищити продуктивність та заощадити дисковий простір. Для скорочення часу відновлення після збою додано підтримку випереджального вилучення сторінок, що фігурують у WAL-лозі.
  • В утиліту pg_basebackup додано підтримку стиснення файлів з резервними копіями на стороні сервера, використовуючи методи gzip, LZ4 або zstd. Надано можливість використання власних модулів для архівування, що дозволяє уникнути необхідності запуску shell-команд.
  • Додано серію нових функцій для обробки рядків з використанням регулярних виразів: regexp_count(), regexp_instr(), regexp_like() та regexp_substr().
  • До функції range_agg() додано можливість агрегування багатодіапазоних типів («multirange»).
  • Додано режим security_invoker, який дозволяє створювати уявлення, що виконуються з правами користувача, а не творця уявлення.
  • Для логічної реплікацією реалізована підтримка фільтрації рядків та завдання списків стовпців, що дозволяють на стороні відправника виділити з таблиці підмножину даних для реплікації. Крім того, в новій версії спрощено управління конфліктами, наприклад, з'явилася можливість пропуску транзакцій, що конфліктують, і автоматичного відключення підписки при виявленні помилки. За логічної реплікації дозволено використання двофазних коммітів (2PC).
  • Доданий новий формат логів - jsonlog, що зберігає інформацію в структурованому вигляді, використовуючи формат JSON.
  • Адміністратору надано можливість делегування користувачам окремих повноважень зміни певних параметрів конфігурації сервера PostgreSQL.
  • В утиліту psql додана підтримка пошуку інформації про налаштування (pg_settings) за допомогою команди \dconfig.
  • Забезпечено використання пам'яті, що розділяється, для накопичення статистики про роботу сервера, що дозволило позбутися окремого процесу збору статистики та періодичного скидання стану на диск.
  • Надано можливість використання за умовчанням ICU локалів «ICU Collation», раніше як локаль за замовчуванням можна було використовувати лише локалі libc.
  • Запропоновано вбудоване розширення pg_walinspect, що дозволяє перевіряти вміст файлів з WAL-логами за допомогою SQL-запитів.
  • Для схеми public у всіх користувачів, за винятком власника БД, здійснено відкликання повноважень на виконання команди CREATE.
  • У PL/Python видалено підтримку Python 2. Видалено застарілий ексклюзивний режим резервного копіювання («exclusive backup»).

Додаток: З 19 до 00 (MSK) відбудеться вебінар-обговорення змін нової версії з Павлом Лузановим (Postgres Professional). Для тих, хто не зможе приєднатися до ефіру, відкрито запис червневої доповіді Павла «PostgreSQL 20: MERGE і не тільки» на PGConf.Russia.

Джерело: opennet.ru

Додати коментар або відгук