Uasghrádú don leisciúil: conas a fheabhsaíonn PostgreSQL 12 feidhmíocht

Uasghrádú don leisciúil: conas a fheabhsaíonn PostgreSQL 12 feidhmíocht

PostgreSQL 12, an leagan is déanaí de “an bunachar sonraí foinse oscailte is fearr ar domhan,” ag teacht amach i gceann cúpla seachtain (má théann gach rud de réir an phlean). Leanann sé seo an gnáthsceideal maidir le leagan nua a scaoileadh le tonna de ghnéithe nua uair sa bhliain, agus le fírinne, tá sé sin go hiontach. Sin an fáth a tháinig mé i mo bhall gníomhach de phobal PostgreSQL.

Is é mo thuairim, murab ionann agus eisiúintí roimhe seo, níl gné réabhlóideach amháin nó dhá ghné ag PostgreSQL 12 (cosúil le comhthreomhaireacht deighilte nó ceiste). Rinne mé magadh uair amháin gurb é príomhghné PostgreSQL 12 cobhsaíocht níos mó. Nach é sin a bheidh uait agus tú ag bainistiú sonraí ríthábhachtacha do ghnó?

Ach ní stopann PostgreSQL 12 ann: le gnéithe agus feabhsuithe nua, is fearr a éireoidh le feidhmchláir, agus níl le déanamh agat ach uasghrádú!

(Bhuel, b'fhéidir na hinnéacsanna a atógáil, ach níl sé chomh scanrúil san eisiúint seo agus a bhfuil taithí againn air.)

Beidh sé iontach PostgreSQL a uasghrádú agus taitneamh a bhaint as feabhsuithe suntasacha láithreach gan fuss gan ghá. Cúpla bliain ó shin, rinne mé athbhreithniú ar uasghrádú ó PostgreSQL 9.4 go PostgreSQL 10 agus chonaic mé conas a d'fhás an t-iarratas a bhuíochas leis an gcomhthreomhaireacht cheist fheabhsaithe i PostgreSQL 10. Agus, níos tábhachtaí fós, ní raibh beagnach aon rud ag teastáil uaim (ach socraigh paraiméadar cumraíochta max_parallel_workers).

Aontaigh, tá sé áisiúil nuair a oibríonn feidhmchláir níos fearr díreach tar éis uasghrádú. Agus déanaimid ár ndícheall úsáideoirí a shásamh, toisc go bhfuil níos mó agus níos mó acu PostgreSQL.

Mar sin, conas is féidir le huasghrádú simplí go PostgreSQL 12 tú a dhéanamh sásta? inseoidh mé duit anois.

Feabhsuithe móra innéacsaithe

Gan innéacsú, ní rachaidh bunachar sonraí i bhfad. Conas eile is féidir leat faisnéis a fháil go tapa? Tugtar bunchóras innéacsaithe PostgreSQL B-crann. Tá an cineál innéacs seo optamaithe le haghaidh córais stórála.

Ní úsáidimid ach an t-oibreoir CREATE INDEX ON some_table (some_column), agus déanann PostgreSQL go leor oibre chun an t-innéacs a choinneáil cothrom le dáta agus muid ag cuir isteach, ag nuashonrú agus ag scriosadh luachanna i gcónaí. Oibríonn gach rud ar a chuid féin, amhail is dá mba le draíocht.

Ach tá fadhb amháin ag innéacsanna PostgreSQL - siad atá teannta agus spás diosca breise a thógáil agus feidhmíocht aisghabhála agus nuashonrú sonraí a laghdú. Le "bloat" is éard atá i gceist agam an struchtúr innéacs a chothabháil go neamhéifeachtach. D'fhéadfadh sé seo - nó d'fhéadfadh sé nach - a bheith bainteach leis na tuples truflais go mbainfidh sé VACUUM (buíochas le Peter Gaghan as an eolas)Peadar Geoghegan)). Tá bloat innéacs go háirithe faoi deara in ualaí oibre ina bhfuil an t-innéacs ag athrú go gníomhach.

Feabhsaíonn PostgreSQL 12 feidhmíocht innéacsanna crann B go mór, agus léirigh turgnaimh le tagarmharcanna cosúil le TPC-C go n-úsáidtear 40% níos lú spáis ar an meán anois. Anois caitheann muid níos lú ama, ní hamháin ar innéacsanna crann B a chothabháil (is é sin, ar oibríochtaí scríofa), ach freisin ar aisghabháil sonraí, toisc go bhfuil na hinnéacsanna i bhfad níos lú.

Feidhmchláir a dhéanann a dtáblaí a nuashonrú go gníomhach - feidhmchláir OLTP de ghnáth (próiseáil idirbheart fíor-ama) - úsáidfidh sé diosca agus próiseálfaidh iarratais i bhfad níos éifeachtaí. Dá mhéad spás diosca is ea is mó spáis a bheidh ar an mbunachar sonraí a fhás gan an bonneagar a uasghrádú.

Éilíonn roinnt straitéisí uasghrádaithe innéacsanna crainn B a atógáil chun leas a bhaint as na tairbhí seo (m.sh. pg_uasghrádú Ní dhéanfaidh sé innéacsanna a atógáil go huathoibríoch). I leaganacha roimhe seo de PostgreSQL, bhí aga neamhfhónaimh suntasach mar thoradh ar atógáil innéacsanna móra ar tháblaí toisc nach bhféadfaí athruithe a dhéanamh idir an dá linn. Ach tá gné fionnuar eile ag PostgreSQL 12: anois is féidir leat innéacsanna a atógáil i gcomhthreo leis an ordú REINDEX COMHTHÁTHAIRa sheachaint go hiomlán downtime.

Tá feabhsuithe eile ar an mbonneagar innéacsaithe in PostgreSQL 12 . Rud eile a raibh draíocht ann - logáil ar aghaidh, aka WAL (loga a scríobh roimh ré). Taifeadann loga réamhscríofa gach idirbheart in PostgreSQL i gcás teipe agus macasamhlú. Úsáideann feidhmchláir é le haghaidh cartlannú agus aisghabháil pointe-in-am. Ar ndóigh, scríobhtar an loga réamhscríofa chuig diosca, rud a d'fhéadfadh tionchar a bheith aige ar fheidhmíocht.

Laghdaigh PostgreSQL 12 forchostais na dtaifead WAL a chruthaíonn na hinnéacsanna GiST, GIN, agus SP-GiST le linn na tógála innéacs. Soláthraíonn sé seo roinnt buntáistí inláimhsithe: glacann taifid WAL níos lú spáis diosca, agus athsheinntear sonraí níos tapúla, mar shampla le linn athshlánaithe tubaiste nó aisghabháil pointe-in-am. Má úsáideann tú innéacsanna den sórt sin i d’fheidhmchláir (mar shampla, úsáideann feidhmchláir geospásúla atá bunaithe ar PostGIS an t-innéacs GiST go leor), is gné eile é seo a chuirfidh feabhas suntasach ar an taithí gan aon iarracht ar do thaobh.

Partitioning - níos mó, níos fearr, níos tapúla

PostgreSQL 10 tugtha isteach deighilt dhearbhach. I PostgreSQL 11 tá sé i bhfad níos éasca le húsáid. In PostgreSQL 12 is féidir leat scála na gcodanna a athrú.

I PostgreSQL 12, tá feidhmíocht an chórais deighilte i bhfad níos fearr, go háirithe má tá na mílte deighiltí sa tábla. Mar shampla, mura mbíonn tionchar ag ceist ach ar roinnt deighiltí i dtábla a bhfuil na mílte acu, déanfaidh sé i bhfad níos tapúla. Ní hamháin go gcuirtear feabhas ar fheidhmíocht i gcás na gcineálacha fiosrúchán seo. Tabharfaidh tú faoi deara freisin cé chomh tapa agus atá oibríochtaí INSERT ar tháblaí a bhfuil deighiltí iolracha acu.

Sonraí a thaifeadadh ag baint úsáide as CÓIP - dála an scéil, is bealach iontach é seo Íoslódáil an mórchóir sonraí agus seo sampla ag fáil JSON — tá táblaí deighilte in PostgreSQL 12 tar éis éirí níos éifeachtaí freisin. Le CÓIP bhí gach rud go tapa cheana féin, ach i PostgreSQL 12 eitilt go hiomlán.

A bhuíochas leis na buntáistí seo, ligeann PostgreSQL duit tacair sonraí níos mó fós a stóráil agus iad a dhéanamh níos éasca iad a aisghabháil. Agus gan aon iarracht ar do thaobh. Má tá go leor deighiltí ag an iarratas, mar shampla sonraí sraith ama a thaifeadadh, feabhsóidh uasghrádú simplí a fheidhmíocht go suntasach.

Cé nach feabhas "uasghrádaithe agus taitneamh" é seo go díreach, ligeann PostgreSQL 12 duit eochracha eachtracha a chruthú a dhéanann tagairt do tháblaí deighilte, rud a fhágann gur pléisiúr é an deighilt a bheith ag obair leis.

D'éirigh níos fearr fós le fiosruithe

Nuair a cuireadh paiste i bhfeidhm le haghaidh nathanna tábla coitianta ionsuite (aka CTE, nó LE ceisteanna), ní raibh mé in ann fanacht chun alt a scríobh faoi cé chomh sásta agus a bhí forbróirí feidhmchlár le PostgreSQL. Tá sé seo ar cheann de na gnéithe sin a luasóidh an t-iarratas. Ach amháin, ar ndóigh, go n-úsáideann tú CTE.

Is minic a fheictear dom gur breá le daoine nua SQL CTEanna a úsáid; má scríobhann tú iad ar bhealach áirithe, mothaíonn sé i ndáiríre go bhfuil tú ag scríobh clár riachtanach. Go pearsanta, thaitin liom na ceisteanna seo a athscríobh chun dul timpeall без CTE agus táirgiúlacht a mhéadú. Anois tá gach rud difriúil.

Ligeann PostgreSQL 12 duit cineál sonrach CTE a inlíneáil gan fo-iarmhairtí (SELECT), nach n-úsáidtear ach uair amháin gar do dheireadh na hiarrata. Má choinnigh mé súil ar na ceisteanna CTE a d'athscríobh mé, thiocfadh an chuid is mó díobh sa chatagóir seo. Cuidíonn sé seo le forbróirí cód soiléir a scríobh a ritheann go tapa anois.

Ina theannta sin, déanann PostgreSQL 12 forghníomhú SQL féin a bharrfheabhsú, gan gá duit aon rud a dhéanamh. Agus cé gur dócha nach mbeidh orm ceisteanna den sórt sin a bharrfheabhsú anois, tá sé iontach go leanann PostgreSQL ag obair ar optamú fiosrúchán.

Díreach in Am (JIT) - réamhshocraithe anois

Ar chórais PostgreSQL 12 le tacaíocht LLVM Tá tiomsú JIT cumasaithe de réir réamhshocraithe. Ar an gcéad dul síos, faigheann tú tacaíocht JIT i gcás roinnt oibríochtaí inmheánacha, agus sa dara háit, fiosrúcháin le habairtí (an sampla is simplí ná x + y) i liostaí roghnaithe (atá agat tar éis SELECT), comhiomláin, slonn le clásail WHERE agus is féidir le daoine eile JIT a úsáid chun feidhmíocht a fheabhsú.

Ós rud é go bhfuil JIT cumasaithe de réir réamhshocraithe i PostgreSQL 12, feabhsóidh an fheidhmíocht ina aonar, ach molaim an t-iarratas a thástáil i PostgreSQL 11, a thug isteach JIT, chun feidhmíocht fiosrúcháin a thomhas agus féachaint an gá duit aon rud a tune.

Cad mar gheall ar an gcuid eile de na gnéithe nua i PostgreSQL 12?

Tá an-chuid gnéithe nua iontacha ag PostgreSQL 12, ón gcumas sonraí JSON a fhiosrú trí úsáid a bhaint as gnáthshlabhra bealaigh SQL/JSON go fíordheimhniú ilfhachtóiriúil le paraiméadar clientcert=verify-full, colúin cruthaithe agus i bhfad níos mó. Go leor le haghaidh post ar leith.

Cosúil le PostgreSQL 10, feabhsóidh PostgreSQL 12 feidhmíocht fhoriomlán díreach tar éis an uasghrádú. Is féidir leat, ar ndóigh, do chosán féin a bheith agat - déan an t-iarratas a thástáil faoi choinníollacha comhchosúla ar an gcóras táirgthe sula gcumasófar feabhsuithe, mar a rinne mé le PostgreSQL 10. Fiú má tá PostgreSQL 12 níos cobhsaí cheana féin ná mar a bhí mé ag súil leis, ná bí leisciúil sa tástáil. iarratais go críochnúil, roimh iad a scaoileadh isteach i dtáirgeadh.

Foinse: will.com

Add a comment