Ùrachadh airson an leisg: mar a bhios PostgreSQL 12 a’ leasachadh coileanadh

Ùrachadh airson an leisg: mar a bhios PostgreSQL 12 a’ leasachadh coileanadh

PostgreSQL 12, tha an dreach as ùire de “an stòr-dàta dàimh fosgailte as fheàrr san t-saoghal,” a’ tighinn a-mach ann am beagan sheachdainean (ma thèid a h-uile càil a rèir a’ phlana). Tha seo a’ leantainn a’ chlàr àbhaisteach airson dreach ùr a leigeil ma sgaoil le tunna de fheartan ùra uair sa bhliadhna, agus gu fìrinneach, tha sin drùidhteach. Sin as coireach gun tàinig mi gu bhith nam bhall gnìomhach de choimhearsnachd PostgreSQL.

Nam bheachd-sa, eu-coltach ri fiosan roimhe, chan eil aon no dhà de fheartan rèabhlaideach ann am PostgreSQL 12 (leithid sgaradh no ceist co-shìnte). Rinn mi magadh aon uair gur e am prìomh fheart de PostgreSQL 12 barrachd seasmhachd. Nach e sin a tha a dhìth ort nuair a stiùireas tu dàta èiginneach do ghnìomhachas?

Ach cha stad PostgreSQL 12 an sin: le feartan ùra agus leasachaidhean, obraichidh tagraidhean nas fheàrr, agus chan eil agad ach ùrachadh!

(Uill, is dòcha ath-thog na clàran-amais, ach anns an fhoillseachadh seo chan eil e cho eagallach ‘s a tha sinn cleachdte ris.)

Bidh e math PostgreSQL ùrachadh agus leasachaidhean mòra a mhealtainn sa bhad às aonais fealla-dhà neo-riatanach. O chionn beagan bhliadhnaichean, rinn mi ath-sgrùdadh air ùrachadh bho PostgreSQL 9.4 gu PostgreSQL 10 agus chunnaic mi mar a dh ’fhàs an tagradh mar thoradh air co-shìnteachd ceist leasaichte ann am PostgreSQL 10. Agus, nas cudromaiche, cha mhòr nach robh feum air dad bhuam (dìreach suidhich paramadair rèiteachaidh max_parallel_workers).

Aontaich, tha e goireasach nuair a bhios tagraidhean ag obair nas fheàrr dìreach às deidh ùrachadh. Agus bidh sinn a’ feuchainn gu cruaidh ri luchd-cleachdaidh a thoileachadh, oir tha barrachd is barrachd dhiubh aig PostgreSQL.

Mar sin ciamar as urrainn do ùrachadh sìmplidh gu PostgreSQL 12 do dhèanamh toilichte? Innsidh mi dhut a-nis.

Leasachaidhean mòra clàr-amais

Às aonais clàr-amais, cha tèid stòr-dàta fada. Ciamar eile a lorgas tu fiosrachadh gu sgiobalta? Canar siostam clàr-amais bunaiteach PostgreSQL B-chraobh. Tha an seòrsa clàr-amais seo air a mheudachadh airson siostaman stòraidh.

Bidh sinn dìreach a’ cleachdadh a’ ghnìomhaiche CREATE INDEX ON some_table (some_column), agus bidh PostgreSQL a’ dèanamh tòrr obrach gus an clàr-amais a chumail ùraichte fhad ‘s a bhios sinn an-còmhnaidh a’ cuir a-steach, ag ùrachadh, agus a ’cuir às do luachan. Bidh a h-uile dad ag obair leis fhèin, mar gum biodh le draoidheachd.

Ach tha aon dhuilgheadas aig clàran-amais PostgreSQL - iadsan air an àrdachadh agus gabh àite diosc a bharrachd agus lughdaich e coileanadh ath-lorg agus ùrachadh dàta. Le "bloat" tha mi a 'ciallachadh a bhith a' cumail suas structar clàr-amais gu neo-èifeachdach. Faodaidh seo - no 's dòcha nach eil - a bhith co-cheangailte ris na tuples sgudail a bheir e air falbh VACUUM (taing do Peter Gaghan airson an fhiosrachaidh)Peadar Geoghegan)). Tha bloat clàr-amais gu sònraichte follaiseach ann an eallach obrach far a bheil an clàr-amais ag atharrachadh gu gnìomhach.

Tha PostgreSQL 12 gu mòr a’ leasachadh coileanadh chlàran-craobhan B, agus tha deuchainnean le slatan-tomhais mar TPC-C air sealltainn gu bheil gu cuibheasach 40% nas lugha de rùm ga chleachdadh a-nis. A-nis bidh sinn a 'caitheamh nas lugha de ùine chan ann a-mhàin air cumail suas clàran-craobhan B (is e sin, air obraichean sgrìobhaidh), ach cuideachd air dàta fhaighinn air ais, oir tha na clàran-amais mòran nas lugha.

Tagraidhean a bhios gu gnìomhach ag ùrachadh na clàran aca - mar as trice tagraidhean OLTP (giullachd malairt fìor-ùine) - cleachdaidh e diosc agus giullachd iarrtasan mòran nas èifeachdaiche. Mar as motha de dh’ àite diosc, is ann as motha de rùm a bhios aig an stòr-dàta gun a bhith ag ùrachadh a’ bhun-structair.

Feumaidh cuid de ro-innleachdan ùrachadh clàran-amais B-craobhan ath-thogail gus brath a ghabhail air na buannachdan sin (m.e. pg_ ùrachadh cha dèan ath-thogail clàran-amais gu fèin-ghluasadach). Ann an dreachan roimhe seo de PostgreSQL, dh’ adhbhraich ath-thogail chlàran-amais mòra air clàran ùine downt mòr leis nach b’ urrainnear atharrachaidhean a dhèanamh san eadar-ama. Ach tha feart fionnar eile aig PostgreSQL 12: a-nis faodaidh tu clàran-amais ath-thogail ann an co-shìnte ris an àithne REINDEX CO CHEUDNAgus ùine downt a sheachnadh gu tur.

Tha leasachaidhean eile air a’ bhun-structar clàr-amais ann am PostgreSQL 12. Rud eile far an robh draoidheachd - log sgrìobhadh air thoiseach, aka WAL (log sgrìobhaidh air thoiseach). Bidh log sgrìobhaidh air thoiseach a’ clàradh a h-uile gnothach ann am PostgreSQL gun fhios nach fàilligeadh agus ath-riochdachadh. Bidh tagraidhean ga chleachdadh airson tasglann agus ath-bheothachadh puing-ann-ùine. Gu dearbh, tha an log sgrìobhaidh air adhart air a sgrìobhadh gu diosc, a bheir buaidh air coileanadh.

Tha PostgreSQL 12 air lùghdachadh a dhèanamh air na tha de chlàran WAL a tha air an cruthachadh le clàran-amais GiST, GIN, agus SP-GiST aig àm togail clàr-amais. Tha seo a’ toirt grunn bhuannachdan susbainteach: bidh clàran WAL a’ gabhail nas lugha de dh’ àite diosc, agus bidh dàta air ath-chluich nas luaithe, leithid nuair a thèid mòr-thubaist a thoirt air ais no faighinn seachad air puing-ann-ùine. Ma chleachdas tu clàran-amais mar seo anns na tagraidhean agad (mar eisimpleir, bidh tagraidhean geospatial stèidhichte air PostGIS a’ cleachdadh clàr-amais GiST gu mòr), is e feart eile a tha seo a leasaicheas an eòlas gu mòr gun oidhirp sam bith air do shon.

Pàirteachadh - nas motha, nas fheàrr, nas luaithe

PostgreSQL 10 air a thoirt a-steach sgaradh dearbhach. Ann am PostgreSQL 11 tha e air fàs gu math nas fhasa a chleachdadh. Ann am PostgreSQL 12 faodaidh tu sgèile nan earrannan atharrachadh.

Ann am PostgreSQL 12, tha coileanadh an t-siostam sgaradh air fàs gu math nas fheàrr, gu sònraichte ma tha mìltean de sgaradh sa chlàr. Mar eisimpleir, ma tha ceist a 'toirt buaidh air dìreach beagan phàirtean ann an clàr le mìltean dhiubh, bidh e a' coileanadh mòran nas luaithe. Chan eil coileanadh dìreach air a leasachadh airson an seòrsa cheistean seo. Mothaichidh tu cuideachd cho luath sa tha gnìomhachd INSERT air bùird le ioma-phàirteachaidhean.

A’ clàradh dàta a’ cleachdadh COPAIDH - leis an t-slighe, is e dòigh fìor mhath a tha seo mòr dàta luchdadh a-nuas agus seo eisimpleir a' faighinn JSON - tha bùird sgaradh ann am PostgreSQL 12 cuideachd air fàs nas èifeachdaiche. Le COPY bha a h-uile dad luath mu thràth, ach ann am PostgreSQL 12 bidh e ag itealaich gu tur.

Taing dha na buannachdan sin, leigidh PostgreSQL leat seataichean dàta eadhon nas motha a stòradh agus an dèanamh nas fhasa faighinn air ais. Agus gun oidhirp air do shon. Ma tha mòran phàirtean san tagradh, leithid clàradh dàta sreath ùine, leasaichidh ùrachadh sìmplidh a choileanadh gu mòr.

Ged nach e dìreach leasachadh “àrdachadh is tlachd” a tha seo, leigidh PostgreSQL 12 leat iuchraichean cèin a chruthachadh a bheir iomradh air bùird sgaraidh, a’ dèanamh sgaradh na thoileachas a bhith ag obair leis.

LE ceistean dìreach air fàs tòrr nas fheàrr

Cuin chaidh bad a chuir a-steach airson abairtean bùird cumanta a chaidh a thogail a-steach (aka CTE, aka WITH ceistean), cha b’ urrainn dhomh feitheamh gus artaigil a sgrìobhadh mu dheidhinn cho toilichte sa bha luchd-leasachaidh aplacaid le PostgreSQL. Is e seo aon de na feartan sin a luathaicheas an tagradh. Mura h-eil, gu dearbh, bidh thu a’ cleachdadh CTE.

Bidh mi tric a’ faighinn a-mach gu bheil daoine ùra gu SQL dèidheil air CTEn a chleachdadh; ma sgrìobhas tu iad ann an dòigh shònraichte, tha e dha-rìribh a’ faireachdainn gu bheil thu a’ sgrìobhadh prògram riatanach. Gu pearsanta, bu toil leam na ceistean sin ath-sgrìobhadh airson faighinn timcheall gun CTE agus àrdachadh cinneasachd. A-nis tha a h-uile dad eadar-dhealaichte.

Leigidh PostgreSQL 12 leat seòrsa sònraichte de CTE a in-loidhne gun bhuaidhean taobh (SELECT), a tha air a chleachdadh dìreach aon turas faisg air deireadh an iarrtais. Nam bithinn a’ cumail sùil air na ceistean CTE a rinn mi ath-sgrìobhadh, bhiodh a’ mhòr-chuid dhiubh san roinn seo. Cuidichidh seo le luchd-leasachaidh còd soilleir a sgrìobhadh a tha a-nis a’ ruith gu sgiobalta.

A bharrachd air an sin, tha PostgreSQL 12 a’ dèanamh an fheum as fheàrr de choileanadh SQL fhèin, gun a bhith agad ri dad a dhèanamh. Agus ged is dòcha nach fheum mi na ceistean sin a mheudachadh a-nis, tha e math gu bheil PostgreSQL a ’leantainn air adhart ag obair air optimization ceist.

Dìreach ann an Ùine (JIT) - a-nis bunaiteach

Air siostaman PostgreSQL 12 le taic LLVM Tha cruinneachadh JIT air a chomasachadh gu bunaiteach. An toiseach, gheibh thu taic JIT airson cuid de dh’ obrachaidhean a-staigh, agus san dàrna h-àite, ceistean le abairtean (is e x + y an eisimpleir as sìmplidh) ann an liostaichean taghte (a tha agad às deidh SELECT), co-chruinneachaidhean, abairtean le clàsan WHERE agus faodaidh cuid eile JIT a chleachdadh gus coileanadh a leasachadh.

Leis gu bheil JIT air a chomasachadh gu bunaiteach ann am PostgreSQL 12, thig piseach air coileanadh leis fhèin, ach tha mi a’ moladh deuchainn a dhèanamh air an tagradh ann am PostgreSQL 11, a thug a-steach JIT, gus coileanadh ceist a thomhas agus faicinn a bheil feum agad air rud sam bith a ghleusadh.

Dè mu dheidhinn a’ chòrr de na feartan ùra ann am PostgreSQL 12?

Tha tunna de fheartan ùra fionnar aig PostgreSQL 12, bhon chomas sgrùdadh a dhèanamh air dàta JSON a’ cleachdadh abairtean slighe àbhaisteach SQL / JSON gu dearbhadh ioma-fhactaraidh le paramadair clientcert=verify-full, colbhan air an cruthachadh agus mòran a bharrachd. Gu leòr airson post air leth.

Coltach ri PostgreSQL 10, leasaichidh PostgreSQL 12 coileanadh iomlan dìreach às deidh an ùrachadh. Faodaidh tu, gu dearbh, do shlighe fhèin a bhith agad - dèan deuchainn air an tagradh fo chumhachan co-chosmhail air an t-siostam toraidh mus cuir thu an comas leasachaidhean, mar a rinn mi le PostgreSQL 10. Fiù ma tha PostgreSQL 12 mar-thà nas seasmhaiche na bha mi an dùil, na bi leisg ann an deuchainn tagraidhean gu mionaideach, mus tèid an leigeil ma sgaoil gu cinneasachadh.

Source: www.habr.com

Cuir beachd ann