Група разработчици на 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
