Faʻaleleia mo le paie: faʻafefea PostgreSQL 12 faʻaleleia le faʻatinoga

Faʻaleleia mo le paie: faʻafefea PostgreSQL 12 faʻaleleia le faʻatinoga

PostgreSQL 12, o le lomiga lata mai o "le lalolagi sili ona tatala punaoa relational database," o loʻo sau i fafo i ni nai vaiaso (pe a fai mea uma e tusa ai ma le fuafuaga). O loʻo mulimulitaʻia le faʻasologa masani o le tuʻuina atu o se lomiga fou ma le tele o foliga fou faʻatasi i le tausaga, ma saʻo, e manaia. O le mea lena na avea ai aʻu ma sui malosi o le PostgreSQL community.

I loʻu manatu, e le pei o faʻasalalauga talu ai, PostgreSQL 12 e le o iai se tasi pe lua faʻalavelave faʻalavelave (pei o le vaeluaga poʻo le fesili tutusa). Na ou ula i se tasi taimi o le vaega autu o PostgreSQL 12 e sili atu le mautu. E le o le mea lena e te manaʻomia pe a e pulea faʻamatalaga taua a lau pisinisi?

Ae o le PostgreSQL 12 e le muta ai iina: faʻatasi ai ma foliga fou ma faʻaleleia atili, o le a sili atu le lelei o talosaga, ma pau lava le mea e tatau ona e faia o le faʻaleleia!

(Ia, atonu e toe fausia faʻailoga, ae i lenei faʻasalalauga e le faʻafefe pei ona masani ai.)

O le a manaia le faʻaleleia o PostgreSQL ma vave fiafia i faʻaleleia atili e aunoa ma se faʻalavelave le manaʻomia. I ni nai tausaga talu ai, na ou toe iloiloina ai se faʻaleleia mai le PostgreSQL 9.4 i le PostgreSQL 10 ma vaʻai pe faʻafefea ona faʻavave le talosaga faʻafetai i le faʻaleleia atili o fesili i le PostgreSQL 10. Ma, sili ona taua, toetoe lava leai se mea na manaʻomia mai ia te aʻu (naʻo le setiina o se faʻatulagaga faʻatulagaina max_parallel_workers).

Ioe, e faigofie pe a sili atu le lelei o talosaga pe a maeʻa le faʻaleleia. Ma matou taumafai malosi e faʻamalie tagata faʻaoga, aua o le PostgreSQL e tele ma sili atu.

E fa'afefea la ona e fiafia i se fa'afouga faigofie i le PostgreSQL 12? O le a ou ta'u atu nei.

Fa'aleleia atili o fa'asino igoa

A aunoa ma le faasino igoa, o le a le alu mamao se database. E fa'apefea ona e vave maua fa'amatalaga? PostgreSQL's fa'avae fa'asino igoa ua ta'ua B-laau. O lenei ituaiga o fa'asinomaga e fa'amalieina mo le teuina o faiga.

Matou te faʻaaogaina le faʻaoga CREATE INDEX ON some_table (some_column), ma PostgreSQL faia le tele o galuega e faʻatumauina le faʻamaufaʻailoga i le taimi nei aʻo matou faʻapipiʻi pea, faʻafouina, ma tape mea taua. O mea uma e galue na o ia, e pei o se togafiti.

Ae o le PostgreSQL index e tasi le faʻafitauli - latou ua fa'ateleina ma fa'aaoga avanoa fa'aopoopo tisiki ma fa'aitiitia le fa'atinoga o le toe maua ma le fa'afouina o fa'amaumauga. O le "bloat" o lona uiga o le le lelei o le tausia o le faʻasologa o faʻasologa. Atonu - pe leai foi - e fesoʻotaʻi ma tuple lapisi na te aveese VACUUM (fa'afetai ia Peter Gaghan mo le fa'amatalaga)Peter Geoghegan)). Fa'ailoga bloat e matua iloga lava i galuega mamafa o lo'o suia malosi ai le fa'asino.

PostgreSQL 12 faʻaleleia atili le faʻatinoina o faʻamatalaga B-laau, ma faʻataʻitaʻiga ma faʻailoga e pei o le TPC-C ua faʻaalia ai i luga o le averesi 40% itiiti le avanoa ua faʻaaogaina nei. O le taimi nei matou te faʻaaluina le itiiti ifo o le taimi e le gata i le tausia o faʻamatalaga B-laau (o lona uiga, i luga o galuega tusitusi), ae faʻapea foʻi i le toe maua mai o faʻamaumauga, aua o faʻamaumauga e laʻititi tele.

Talosaga e fa'afou fa'afou a latou laulau - masani OLTP talosaga (fa'agaioiga fefa'ataua'iga i taimi moni) - o le a fa'aogaina le tisiki ma fa'agasolo talosaga e sili atu ona lelei. O le tele o avanoa tisiki, o le tele o avanoa e tatau ona tupu ai le database e aunoa ma le faʻaleleia o atinaʻe.

O nisi faiga fa'aleleia e mana'omia ai le toe fausia o fa'asino igoa B-laau e fa'aoga lelei ai nei fa'amanuiaga (eg. pg_fa'aleleia e le otometi ona toe fausia fa'asino igoa). I lomiga muamua o le PostgreSQL, o le toe fausia o fa'ailoga tetele i luga o laulau na i'u ai i le tele o taimi fa'aletonu ona e le mafai ona faia suiga i le taimi nei. Ae o le PostgreSQL 12 o loʻo i ai se isi mea manaia: o lea e mafai ona e toe fausia faʻasino igoa e tutusa ma le poloaiga REINDEX FAATATAUina ia matua aloese mai taimi malolo.

O loʻo i ai isi faʻaleleia atili i le faʻavasegaina o atinaʻe i PostgreSQL 12. O le isi mea sa i ai se togafiti faataulaitu - tusi-i luma ogalaau, aka WAL (tusi-i luma ogalaau). O se fa'amaumauga tusitusia i luma o lo'o fa'amauina uma fefa'atauaiga i le PostgreSQL pe a fa'aletonu ma toe faia. O lo'o fa'aaogaina e fa'aoga mo le teuina ma toe fa'afo'isia taimi-i-taimi. O le mea moni, o le tusi tusitusi i luma o loʻo tusia i le disk, lea e mafai ona aʻafia ai le faʻatinoga.

PostgreSQL 12 ua faʻaititia le pito i luga ole WAL faʻamaumauga o loʻo faia e GiST, GIN, ma SP-GIST faʻamaufaʻailoga i le taimi o le fausiaina o faʻamatalaga. E maua ai le tele o fa'amanuiaga fa'apitoa: O fa'amaumauga a le WAL e fa'aitiitia le avanoa o le tisiki, ma e vave ona toe ta'i fa'amaumauga, e pei o le taimi o fa'alavelave fa'afuase'i po'o le toe fa'aleleia o taimi. Afai e te faʻaogaina ia faʻasino igoa i au talosaga (mo se faʻataʻitaʻiga, PostGIS-based geospatial applications e faʻaaogaina tele le GiST index), o le isi lea mea e faʻaleleia atili ai le poto masani e aunoa ma se taumafaiga i lau vaega.

Vaevaega - tele, lelei, vave

PostgreSQL 10 faʻafeiloaʻi vaevaega fa'ailoa. I PostgreSQL 11 ua sili atu ona faigofie ona faʻaoga. I le PostgreSQL 12 e mafai ona e suia le fua o vaega.

I le PostgreSQL 12, o le faʻatinoga o le vaeluaga o faiga ua sili atu ona lelei, aemaise lava pe a iai le faitau afe o vaega i le laulau. Mo se faʻataʻitaʻiga, afai o se fesili e aʻafia ai naʻo ni nai vaega i totonu o se laulau ma le faitau afe o ia mea, o le a sili atu le saoasaoa. E le na'o le fa'aleleia o fa'atinoga mo nei ituaiga o fesili. E te va'aia fo'i le saosaoa o fa'agaioiga INSERT i luga o laulau e tele vaega.

Fa'amauina fa'amaumauga fa'aaoga KOPI - i le ala, o se auala sili lea tele fa'amaumauga download ma o se faataitaiga lenei mauaina o le JSON - vaelua laulau i PostgreSQL 12 ua sili atu ona lelei. Faatasi ai ma COPY ua uma ona vave mea uma, ae i le PostgreSQL 12 e matua lele lava.

Faʻafetai i nei faʻamanuiaga, PostgreSQL faʻatagaina oe e teuina faʻamaumauga sili atu ma faʻafaigofie ona toe aumai. Ma e leai se taumafaiga i lau vaega. Afai o le talosaga e tele ni vaega, e pei o le pueina o faʻamaumauga o taimi, o se faʻaleleia faigofie o le a faʻaleleia atili ai lona faʻatinoga.

E ui e le o se "faʻaleleia ma fiafia" le faʻaleleia atili, PostgreSQL 12 e mafai ai ona e faia ni ki mai fafo e faʻasino ai laulau vaeluaga, faia le vaeluaga o se fiafiaga e galue ai.

FA'AI fesili fa'ato'a sili atu le lelei

Pe a sa fa'aogaina se patch mo fa'amatalaga masani laulau faufale (aka CTE, aka WITH fesili), sa le mafai ona ou faatali e tusi se tala e uiga i maʻeu le fiafia o le au atinaʻe talosaga ma PostgreSQL. O se tasi lea o vaega o le a faʻavaveina le talosaga. Vagana, ioe, e te faʻaaogaina CTE.

E masani ona ou iloa o tagata fou ile SQL e fiafia e faʻaoga CTE pe afai e te tusia i latou i se auala patino, e foliga mai o loʻo e tusia se polokalame taua. Ia te au lava ia, sa ou fiafia e toe tusi nei fesili e fealuai ai e aunoa ma CTE ma faʻateleina le gaosiga. O lea la ua ese mea uma.

PostgreSQL 12 faʻatagaina oe e faʻaogaina se ituaiga CTE patino e aunoa ma ni aʻafiaga (SELECT), lea e na'o le tasi le fa'aoga e latalata ile fa'ai'uga ole talosaga. Afai ou te siakia fesili a le CTE na ou toe tusia, o le tele o na fesili o le a pa'ū i lenei vaega. E fesoasoani lea i le au atiaʻe e tusi manino le code lea e vave foi ona tamoʻe.

E le gata i lea, PostgreSQL 12 faʻamalosia le faʻatinoina o le SQL, e aunoa ma le faia o se mea. Ma e ui lava atonu o le a ou le manaʻomia le faʻamalieina o ia fesili i le taimi nei, e manaia le faʻaauau pea ona galue PostgreSQL i le suʻesuʻeina o fesili.

Na'o-i-Taimi (JIT) - ua faaletonu nei

I luga o PostgreSQL 12 faiga faʻatasi ma le lagolago LLVM O le tu'ufa'atasiga o le JIT e mafai ona fa'aletonu. Muamua, e te maua le lagolago HIT mo nisi gaioiga i totonu, ma lona lua, fesili ma faʻamatalaga (o le faʻataʻitaʻiga sili ona faigofie o le x + y) i lisi filifilia (lea e te maua pe a uma SELECT), faʻasalalauga, faʻamatalaga ma WHERE fuaiupu ma isi e mafai ona faʻaogaina le JIT e faʻaleleia ai le faʻatinoga.

Talu ai o le JIT e mafai ona faʻaogaina i le PostgreSQL 12, o le a faʻaleleia atili le faʻatinoga, ae ou te fautuaina le suʻeina o le talosaga i le PostgreSQL 11, lea na faʻafeiloaʻi ai le JIT, e fua ai le faʻatinoga o fesili ma vaʻai pe e te manaʻomia le faʻalogoina o se mea.

Ae fa'afefea isi vaega fou i PostgreSQL 12?

PostgreSQL 12 o loʻo i ai le tele o foliga fou fou, mai le mafai ona suʻesuʻeina faʻamaumauga a le JSON e faʻaaoga ai faʻamatalaga masani SQL / JSON auala i le faʻamaoni faʻateleina ma se parakalafa clientcert=verify-full, faia koluma ma sili atu. Ua lava mo se isi pou.

E pei o PostgreSQL 10, PostgreSQL 12 o le a faʻaleleia le faʻatinoga atoa i le taimi lava e maeʻa ai le faʻaleleia. O oe, ioe, e mafai ona i ai lau lava ala - faʻataʻitaʻi le talosaga i lalo o tulaga tutusa i luga o le gaosiga o le gaosiga aʻo leʻi mafai ona faʻaleleia atili, e pei ona ou faia i le PostgreSQL 10. E tusa lava pe ua sili atu ona mautu le PostgreSQL 12 nai lo le mea na ou faʻamoemoeina, aua le paie i le suʻega talosaga mae'ae'a, a'o le'i tu'uina atu i le gaosiga.

puna: www.habr.com

Faaopoopo i ai se faamatalaga