ManuprÄt, atŔķirÄ«bÄ no iepriekÅ”Äjiem laidieniem, PostgreSQL 12 nesatur vienu vai divas revolucionÄras funkcijas (piemÄram, sadalÄ«Å”ana vai vaicÄjumu paralÄlisms). Es reiz jokoju, ka PostgreSQL 12 galvenÄ iezÄ«me ir lielÄka stabilitÄte. Vai tas nav nepiecieÅ”ams, pÄrvaldot sava uzÅÄmuma kritiskos datus?
TaÄu PostgreSQL 12 nebeidzas ar to: ar jaunÄm funkcijÄm un uzlabojumiem lietojumprogrammas darbosies labÄk, un viss, kas jums jÄdara, ir jauninÄt!
(Nu, varbÅ«t pÄrbÅ«vÄjiet indeksus, taÄu Å”ajÄ laidienÄ tas nav tik biedÄjoÅ”i, kÄ mÄs esam pieraduÅ”i.)
BÅ«s lieliski jauninÄt PostgreSQL un nekavÄjoties baudÄ«t ievÄrojamus uzlabojumus bez liekas satraukuma. Pirms dažiem gadiem es pÄrskatÄ«ju jauninÄÅ”anu no PostgreSQL 9.4 uz PostgreSQL 10 un redzÄju, kÄ lietojumprogramma ir paÄtrinÄjusies, pateicoties uzlabotajam vaicÄjumu paralÄlismam programmÄ PostgreSQL 10. Un, pats galvenais, no manis netika prasÄ«ts gandrÄ«z nekas (vienkÄrÅ”i iestatiet konfigurÄcijas parametru max_parallel_workers
).
PiekrÄ«tu, tas ir Ärti, ja lietojumprogrammas darbojas labÄk uzreiz pÄc jauninÄÅ”anas. Un mÄs ļoti cenÅ”amies izpatikt lietotÄjiem, jo āāPostgreSQL tÄdu ir arvien vairÄk.
TÄtad, kÄ vienkÄrÅ”a jauninÄÅ”ana uz PostgreSQL 12 var jÅ«s iepriecinÄt? Es tev tagad pateikÅ”u.
BÅ«tiski indeksÄcijas uzlabojumi
Bez indeksÄÅ”anas datu bÄze netiks tÄlu. KÄ vÄl jÅ«s varat Ätri atrast informÄciju? PostgreSQL pamatindeksÄÅ”anas sistÄma tiek saukta
MÄs vienkÄrÅ”i izmantojam operatoru CREATE INDEX ON some_table (some_column)
, un PostgreSQL veic lielu darbu, lai indekss bÅ«tu atjauninÄts, kamÄr mÄs pastÄvÄ«gi ievietojam, atjauninÄm un dzÄÅ”am vÄrtÄ«bas. Viss darbojas pats no sevis, it kÄ uz burvju mÄjienu.
Bet PostgreSQL indeksiem ir viena problÄma - tie
PostgreSQL 12 ievÄrojami uzlabo B-koku indeksu veiktspÄju, un eksperimenti ar tÄdiem etaloniem kÄ TPC-C ir parÄdÄ«juÅ”i, ka tagad tiek izmantots vidÄji par 40% mazÄk vietas. Tagad mÄs tÄrÄjam mazÄk laika ne tikai B-koka indeksu uzturÄÅ”anai (tas ir, rakstÄ«Å”anas operÄcijÄm), bet arÄ« datu izgÅ«Å”anai, jo indeksi ir daudz mazÄki.
Lietojumprogrammas, kas aktÄ«vi atjaunina savas tabulas ā parasti OLTP lietojumprogrammas (
DažÄm jauninÄÅ”anas stratÄÄ£ijÄm ir nepiecieÅ”ams atjaunot B-koka indeksus, lai izmantotu Ŕīs priekÅ”rocÄ«bas (piem.,
PostgreSQL 12 indeksÄÅ”anas infrastruktÅ«rai ir arÄ« citi uzlabojumi. VÄl viena lieta, kur bija kÄda maÄ£ija -
PostgreSQL 12 ir samazinÄjusi WAL ierakstu pieskaitÄmÄs izmaksas, ko indeksa veidoÅ”anas laikÄ rada GiST, GIN un SP-GiST indeksi. Tas nodroÅ”ina vairÄkas taustÄmas priekÅ”rocÄ«bas: WAL ieraksti aizÅem mazÄk vietas diskÄ, un dati tiek atskaÅoti ÄtrÄk, piemÄram, avÄrijas atkopÅ”anas vai precÄ«zas atkopÅ”anas laikÄ. Ja lietojat Å”Ädus indeksus savÄs lietojumprogrammÄs (piemÄram, uz PostGIS balstÄ«tÄs Ä£eotelpiskÄs lietojumprogrammas daudz izmanto GiST indeksu), Ŕī ir vÄl viena funkcija, kas ievÄrojami uzlabos pieredzi bez jÅ«su piepÅ«les.
SadalÄ«Å”ana - lielÄka, labÄka, ÄtrÄka
Ieviests PostgreSQL 10
ProgrammÄ PostgreSQL 12 nodalÄ«jumu sistÄmas veiktspÄja ir kļuvusi ievÄrojami labÄka, it Ä«paÅ”i, ja tabulÄ ir tÅ«kstoÅ”iem nodalÄ«jumu. PiemÄram, ja vaicÄjums ietekmÄ tikai dažus nodalÄ«jumus tabulÄ ar tÅ«kstoÅ”iem no tiem, tas tiks izpildÄ«ts daudz ÄtrÄk. VeiktspÄja tiek uzlabota ne tikai Å”Äda veida vaicÄjumiem. JÅ«s arÄ« pamanÄ«sit, cik ÄtrÄkas INSERT darbÄ«bas notiek tabulÄs ar vairÄkiem nodalÄ«jumiem.
Datu ierakstīŔana, izmantojot
Pateicoties Ŕīm priekÅ”rocÄ«bÄm, PostgreSQL ļauj saglabÄt vÄl lielÄkas datu kopas un atvieglot to izgÅ«Å”anu. Un nekÄdas pÅ«les no jÅ«su puses. Ja lietojumprogrammai ir daudz nodalÄ«jumu, piemÄram, laikrindu datu ierakstÄ«Å”ana, vienkÄrÅ”a jauninÄÅ”ana ievÄrojami uzlabos tÄs veiktspÄju.
Lai gan tas nav gluži "jauniniet un izbaudiet" uzlabojums, PostgreSQL 12 ļauj izveidot ÄrÄjÄs atslÄgas, kas atsaucas uz sadalÄ«tajÄm tabulÄm, padarot sadalÄ«Å”anu patÄ«kamu darbu.
AR vaicÄjumiem kļuva daudz labÄk
Kad
Es bieži atklÄju, ka SQL iesÄcÄjiem patÄ«k izmantot CTE; ja tos rakstÄt noteiktÄ veidÄ, Ŕķiet, ka jÅ«s rakstÄt obligÄtu programmu. PersonÄ«gi man patika pÄrrakstÄ«t Å”os vaicÄjumus, lai apietu bez CTE un palielinÄt produktivitÄti. Tagad viss ir savÄdÄk.
PostgreSQL 12 ļauj iekļaut noteikta veida CTE bez blakusparÄdÄ«bÄm (SELECT
), kas tiek izmantota tikai vienu reizi pieprasÄ«juma beigÄs. Ja es sekotu lÄ«dzi pÄrrakstÄ«tajiem CTE vaicÄjumiem, lielÄkÄ daļa no tiem ietilptu Å”ajÄ kategorijÄ. Tas palÄ«dz izstrÄdÄtÄjiem uzrakstÄ«t skaidru kodu, kas tagad arÄ« darbojas Ätri.
TurklÄt PostgreSQL 12 optimizÄ paÅ”u SQL izpildi, jums nekas nav jÄdara. Un, lai gan man, visticamÄk, tagad nevajadzÄs optimizÄt Å”Ädus vaicÄjumus, ir lieliski, ka PostgreSQL turpina strÄdÄt pie vaicÄjumu optimizÄcijas.
Just-in-Time (JIT) ā tagad noklusÄjuma
PostgreSQL 12 sistÄmÄs ar atbalstu
TÄ kÄ sistÄmÄ PostgreSQL 12 pÄc noklusÄjuma ir iespÄjots JIT, veiktspÄja uzlabosies pati par sevi, taÄu es iesaku pÄrbaudÄ«t lietojumprogrammu programmÄ PostgreSQL 11, kas ieviesa JIT, lai izmÄrÄ«tu vaicÄjuma veiktspÄju un noskaidrotu, vai jums ir nepiecieÅ”ams kaut ko pielÄgot.
KÄ ar pÄrÄjÄm jaunajÄm funkcijÄm programmÄ PostgreSQL 12?
PostgreSQL 12 ir daudz lielisku jaunu funkciju, sÄkot ar iespÄju pÄrbaudÄ«t JSON datus, izmantojot standarta SQL/JSON marÅ”ruta izteiksmes, lÄ«dz daudzfaktoru autentifikÄcijai ar parametru. clientcert=verify-full
, izveidotas kolonnas un daudz kas cits. Pietiek atseviŔķam ierakstam.
TÄpat kÄ PostgreSQL 10, arÄ« PostgreSQL 12 uzlabos vispÄrÄjo veiktspÄju tÅ«lÄ«t pÄc jauninÄÅ”anas. Jums, protams, var bÅ«t savs ceļŔ - pirms uzlabojumu iespÄjoÅ”anas pÄrbaudiet lietojumprogrammu lÄ«dzÄ«gos apstÄkļos ražoÅ”anas sistÄmÄ, kÄ es to darÄ«ju ar PostgreSQL 10. Pat ja PostgreSQL 12 jau ir stabilÄks, nekÄ es gaidÄ«ju, neesiet slinks ar testÄÅ”anu. lietojumprogrammas rÅ«pÄ«gi pirms to laiÅ”anas ražoÅ”anÄ.
Avots: www.habr.com