Рэліз СКБД PostgreSQL 12

Пасля года распрацоўкі апублікаваная новая стабільная галіна СКБД PostgreSQL 12. Абнаўленні для новай галінкі будуць выходзіць цягам пяці гадоў да лістапада 2024 года.

Асноўныя навіны:

  • Дададзена падтрымка «генераваных слупкоў«, значэнне якіх вылічаецца на аснове выразы, які ахоплівае значэння іншых слупкоў у той жа табліцы (аналаг уяўленняў, але для асобных слупкоў). Генераваныя слупкі могуць быць двух тыпаў - захоўваемыя і віртуальныя. У першым выпадку значэнне вылічаецца ў момант дадання ці змены дадзеных, а ў другім - пры кожным чытанні на аснове бягучага стану іншых слупкоў. У наш час у PostgreSQL падтрымліваюцца толькі захоўваемыя генераваныя слупкі;
  • Дададзена магчымасць выканання запытаў дадзеных з JSON-дакументаў пры дапамозе Path-выразаў, якія нагадваюць XPath і вызначаных у стандарце SQL/JSON. Для павышэння эфектыўнасці апрацоўкі падобных выразаў для дакументаў, якія захоўваюцца ў фармаце JSONB, прымяняюцца існуючыя механізмы індэксавання;
  • Уключана па змаўчанні прымяненне JIT-кампілятара (Just-in-Time) на аснове напрацовак LLVM для паскарэння выканання некаторых выразаў у працэсе апрацоўкі SQL-запыту. Напрыклад, JIT дастасоўны для паскарэння выканання выразаў усярэдзіне блокаў «WHERE», у выходных спісах (target lists), агрэгатных выразах і некаторых унутраных аперацыях;
  • Істотна павялічана прадукцыйнасць індэксавання. Індэксы B-tree аптымізаваны для працы ва ўмовах частай змены індэксаў – у тэстах TPC-C назіраецца агульнае павышэнне прадукцыйнасці і зніжэнне спажывання дыскавай прасторы ў сярэднім на 40%. Зніжаны накладныя выдаткі пры генерацыі лога папераджальнай запісы (WAL) для тыпаў індэксаў GiST, GIN і SP-GiST. Для GiST дададзена магчымасць стварэння індэксаў-акрутак (праз выраз INCLUDE), якія ўключаюць дадатковыя слупкі. У аперацыі СТВАРЫЦЬ СТАТЫСТЫКУ забяспечана падтрымка статыстыкі аб найбольш тыповых значэннях (MCV), якая дазваляе генераваць больш аптымальныя планы запытаў пры выкарыстанні нераўнамерна размеркаваных слупкоў;
  • Рэалізацыя секцыянавання (партыцыравання) аптымізавана для запытаў, якія ахопліваюць табліцы з тысячамі секцый, але абмяжоўваюцца выбаркай абмежаванага падмноства дадзеных. Павялічана прадукцыйнасць дадання дадзеных у секцыянаваныя табліцы пры дапамозе аперацый INSERT і COPY, а таксама забяспечана магчымасць дадання новых секцый праз "ALTER TABLE ATTACH PARTITION" без блакіроўкі выканання запытаў;
  • Дададзена падтрымка аўтаматычнага inline-разгортвання абагульненых таблічных выразаў (Common Table Expression, CTE), якія дазваляюць выкарыстоўваць часовыя найменныя выніковыя наборы, якія задаюцца пры дапамозе аператара WITH. Inline-разгортванне дазваляе павысіць прадукцыйнасць большасці запытаў, але пакуль ужываецца толькі для нерэкурсіўных CTE;
  • Дададзена падтрымка недэтэрмінаваных уласцівасцяў лакалі «Collation», які дазваляе задаваць правілы сартавання і метады супастаўлення з улікам сэнсу сімвалаў (напрыклад, пры сартаванні лічбавых значэнняў улічваецца наяўнасць мінуса і кропкі перад лікам і розныя віды напісання, а пры параўнанні не прымаецца да ўвагі рэгістр сімвалаў і наяўнасць знака націску) ;
  • Дададзена падтрымка шматфактарнай аўтэнтыфікацыі кліента, пры якой у pg_hba.conf для аўтэнтыфікацыі можна камбінаваць аўтэнтыфікацыю па SSL-сертыфікаце (clientcert=verify-full) c дадатковым метадам аўтэнтыфікацыі, такім як scram-sha-256;
  • Дададзена падтрымка шыфравання канала сувязі пры аўтэнтыфікацыі праз GSSAPI, як на баку кліента, так і на баку сервера;
  • Дададзена падтрымка вызначэння LDAP-сервераў на аснове запісаў "DNS SRV", калі PostgreSQL сабраны з OpenLDAP;
  • Дададзена аперацыя «REINDEX CONCURRENTLY»для перастраення індэксаў без блакіроўкі аперацый запісу ў індэкс;
  • Дададзена каманда pg_checksums, якая дазваляе для існуючай БД уключаць і выключаць праверку кантрольных сум старонак дадзеных (раней дадзеная аперацыя падтрымлівалася толькі падчас ініцыялізацыі БД);
  • Забяспечаны вывад індыкатара прагрэсу выканання аперацый CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL і pg_checksums;
  • Дададзена каманда «CREATE ACCESS METHOD»для падлучэння апрацоўшчыкаў новых метадаў захоўвання табліц, аптымізаваных для розных спецыфічных задач. У цяперашні час адзіным убудаваным метадам доступу да табліц з'яўляецца "heap";
  • Файл канфігурацыі recovery.conf аб'яднаны з postgresql.conf. У якасці індыкатараў пераходу ў стан аднаўлення пасля збою зараз варта выкарыстоўваць файлы recovery.signal і standby.signal.

Крыніца: opennet.ru

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