Реліз PostgreSQL 12

Група розробників PostgreSQL оголосила про вихід PostgreSQL 12, новітньої версії реляційної системи управління базами даних із відкритим вихідним кодом.
У PostgreSQL 12 значно покращено продуктивність запитів – особливо це стосується роботи з великими обсягами даних, також оптимізовано використання дискового простору в цілому.

Серед нових можливостей:

  • реалізація мови запитів JSON Path (найважливішої частини стандарту SQL/JSON);
  • оптимізація виконання загальних табличних виразів (WITH);
  • підтримка стовпців, що генеруються

Також спільнота продовжує роботу над розширюваністю та надійністю PostgreSQL, розвиваючи підтримку інтернаціоналізації, можливостей автентифікації, надаючи простіші шляхи адміністрування системи.

У цей реліз увійшла реалізація інтерфейсу движків зберігання, що підключаються, що відтепер дозволяє розробникам створювати свої власні методи зберігання даних.

Поліпшення продуктивності

PostgreSQL 12 включає суттєві покращення продуктивності та процедур обслуговування для систем індексування та секціонування.

Індекси B-tree - стандартний тип індексування в PostgreSQL, були оптимізовані у версії 12 для навантажень, що передбачають часті модифікації індексів. Використання еталонного тесту TPC-C для PostgreSQL 12 продемонструвало скорочення використання простору в середньому на 40% та загальний приріст продуктивності запитів.

Запити до секційованих таблиць отримали помітні поліпшення, особливо для таблиць, що з тисяч секцій, що передбачають роботу лише з обмеженими частинами масивів даних. Була покращена продуктивність додавання даних у секційовані таблиці за допомогою INSERT та COPY, а також можливість приєднання нової секції без блокування виконуваних запитів.

У PostgreSQL 12 були проведені додаткові вдосконалення в індексуванні, які впливають на загальну продуктивність, включаючи:

  • зниження накладних витрат при генерації WAL для типів індексів GiST, GIN та SP-GiST;
  • можливість створювати так звані індекси, що покривають (covering indexes, пропозиція INCLUDE) на GiST-індекси;
  • можливість виконувати запити "найближчих сусідів" (k-NN search) за допомогою оператора відстані (<->) та використанням індексів SP-GiST;
  • підтримку збору статистики найбільш поширених значень (most-common value, MCV) за допомогою CREATE STATISTICS, що допомагає отримувати кращі плани виконання запитів під час використання стовпців, значення яких розподілені нерівномірно.

JIT-компіляція з використанням LLVM, що з'явилася в PostgreSQL 11, тепер включена за умовчанням. JIT-компіляція дозволяє підвищувати продуктивність при роботі з виразами у пропозиціях WHERE, цільових списках, агрегатах та деяких внутрішніх операціях. Вона доступна, якщо ви скомпілювали PostgreSQL із LLVM або використовуєте пакет PostgreSQL, який був створений із включеним LLVM.

Поліпшення можливостей мови SQL та сумісності зі стандартом

У PostgreSQL 12 з'явилася можливість виконувати запити до документів JSON з використанням виразів шляху JSON, визначених у стандарті SQL/JSON. Такі запити можуть використовувати існуючі механізми індексації для документів, що зберігаються у форматі JSONB для ефективного вилучення даних.

Загальні табличні вирази, також відомі як запити з WITH, в PostgreSQL 12 тепер можуть автоматично виконуватися із застосуванням підстановки, що, своєю чергою, допоможе підвищити продуктивність багатьох існуючих запитів. У новій версії частина запиту WITH може виконуватися з підстановкою тільки якщо вона не є рекурсивною, не має побічних ефектів і на неї посилаються лише один раз у наступній частині запиту.

У PostgreSQL 12 з'являється підтримка «стовпців, що генеруються». Описаний у стандарті SQL цей тип стовпця обчислює значення на основі вмісту інших стовпців у тій же таблиці. У цій версії PostgreSQL підтримує «збережені генеровані стовпці», де обчислене значення зберігається на диску.

Інтернаціоналізація

PostgreSQL 12 розширює підтримку ICU зіставлень, дозволяючи користувачам визначати «недетерміновані зіставлення», які можуть, наприклад, дозволяти порівняння без урахування регістру або наголосу.

аутентифікація

PostgreSQL розширює свою підтримку надійних методів аутентифікації за допомогою кількох покращень, які забезпечують додаткову безпеку та функціональність. У цьому випуску представлено шифрування на стороні клієнта та на стороні сервера для аутентифікації через інтерфейси GSSAPI, а також можливість PostgreSQL виявляти сервери LDAP, якщо PostgreSQL скомпільовано з OpenLDAP.

Крім того, PostgreSQL 12 тепер підтримує варіант багатофакторної автентифікації. Тепер сервер PostgreSQL може зажадати клієнта надання валідного SSL-сертифіката з відповідним ім'ям користувача з використанням clientcert=verify-full, і комбінувати це з окремою вимогою методу аутентифікації (наприклад, scram-sha-256).

адміністрування

У PostgreSQL 12 з'явилася можливість виконувати переблокування індексів, що не блокує, за допомогою команди REINDEX CONCURRENTLY. Це дозволяє користувачам уникати простою у роботі СУБД при тривалому перебудові індексів.

Крім того, у PostgreSQL 12 можна включати або відключати контрольні суми сторінок у кластері, що знаходиться у вимкненому стані, за допомогою команди pg_checksums. Раніше контрольні суми сторінок – функцію, що допомагає перевірити цілісність даних, що зберігаються на диску, – можна було включити лише в момент ініціалізації кластера PostgreSQL за допомогою initdb.

Джерело: linux.org.ru

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