PostgreSQL 18 релізнуто! Дивимося, що нового
Вчора спільнота розробників представила PostgreSQL 18. Цей реліз приносить суттєві покращення продуктивності, нові можливості для розробників і кращу інтеграцію з сучасними системами аутентифікації. Що саме в цьому оновленні цікавого — давайте дивитися.
Головні зміни
Асинхронний ввід/вивід
PostgreSQL отримав нову підсистему I/O, яка дозволяє виконувати кілька операцій паралельно. Якщо раніше база чекала завершення кожного читання по черзі, то тепер може подавати кілька запитів одразу. Це забезпечує до ×3 прискорення при роботі зі сховищем. Підтримуються послідовні сканування, сканування купи за допомогою бітової карти та операції VACUUM.
Нові серверні змінні io_combine_limit та io_max_combine_limit дають можливість тонко контролювати поведінку AIO, а системний вигляд pg_aios показує активні файлові дескриптори.
Швидші оновлення між версіями
У PostgreSQL 18 статистика планувальника переноситься під час апгрейду, тому продуктивність системи після оновлення не падає, як це було раніше. Утиліта pg_upgrade отримала нові можливості: паралельні перевірки (--jobs), прискорену обробку баз із великою кількістю об’єктів та новий режим --swap, який міняє каталоги місцями без копіювання даних.
Прискорення запитів
З’явилась підтримка skip scan у багатоколонкових B-tree індексах. Це пришвидшує запити, де не всі колонки мають умови рівності. Також оптимізовано виконання OR у WHERE, покращено роботу JOIN (hash і merge join), а створення GIN-індексів тепер можливе паралельно, як і для B-tree та BRIN.
Оптимізатор також автоматично усуває зайві self-join, перетворює IN (VALUES…) на x = ANY, а GROUP BY враховує функціональну залежність колонок, що зменшує кількість оброблюваних рядків.
Нові можливості для розробників
PostgreSQL 18 робить згенеровані стовпці віртуальними за замовчуванням, тобто їх значення обчислюються під час запиту. Крім того, тепер вони можуть реплікуватися.
Додано підтримку UUIDv7 через функцію uuidv7(), що генерує впорядковані за часом і придатні до індексації UUID. У RETURNING можна використовувати старі й нові значення для всіх CRUD-операцій, а також з’явилася можливість створювати зовнішні таблиці за аналогією з локальними (CREATE FOREIGN TABLE ... LIKE).
Також оновлено підтримку Unicode. З’явилася нова колація PG_UNICODE_FAST, швидші порівняння Unicode, функція casefold(), поліпшено повнотекстовий пошук та додано Estonian stemming. Для масивів і байтів додані нові функції array_sort(), array_reverse(), reverse(), а також покращено роботу з jsonb.
Безпека та автентифікація
Найважливіше нововведення — підтримка OAuth 2.0, що відкриває шлях для інтеграції з сучасними системами єдиного входу (SSO). Паролі MD5 позначені застарілими й у майбутніх версіях будуть видалені, рекомендується використовувати SCRAM.
Додано SCRAM passthrough для підключень через postgres_fdw і dblink, нові можливості налаштування TLS 1.3 та SHA-2 для хешування паролів у pgcrypto. Також збільшено безпеку cancel-запитів
Реплікація
У логах тепер відображаються конфлікти логічної реплікації, а CREATE SUBSCRIPTION за замовчуванням працює у режимі паралельного стрімінгу. Утиліта pg_createsubscriber отримала прапорець --all, що дозволяє створити копії для всіх баз даних одразу. Крім того, з’явилася функція автоматичного видалення неактивних слотів реплікації, щоб уникати накопичення WAL-файлів.
Інші зміни
Окрім основних нововведень, PostgreSQL 18 отримав безліч другорядних покращень. VACUUM тепер обробляє сторінки навіть за умов all-visible, додаються нові можливості EXPLAIN ANALYZE з детальною статистикою буферів, CPU, WAL, а також нові метрики у pg_stat_all_tables і pg_stat_io.
Нові кластери тепер створюються з контрольними сумами сторінок за замовчуванням, а протокол взаємодії PostgreSQL оновлено до версії 3.2, вперше з 2003 року. Для продуктивності додано підтримку ARM NEON та SVE інструкцій, SIMD-прискорення обробки довгих JSON-рядків, оптимізацію числових операцій і прискорення CRC32C за допомогою AVX-512.
Також з’явилися нові адміністративні функції. Детальна статистика WAL на рівні бекенду, нові функції для керування оптимізаторською статистикою, можливості pg_dump/pg_restore для селективного експорту політик безпеки, а також додаткові опції для pg_upgrade, pg_verifybackup і pg_resetwal.
Детальніше про оновлення можете почитати в офіційній документації: Посилання
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівМожна було відразу на україномовну сторінку посилання давати www.postgresql.org/...bout/press/presskit18/uk
О, дякую! Замінив посилання