Рэліз 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

Дадаць каментар