Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Oge ụfọdụ n'ọdịnihu dị anya, iwepụ data na-enweghị isi na akpaghị aka ga-abụ otu n'ime ọrụ dị mkpa nke DBMS [1]. Ka ọ dị ugbu a, anyị onwe anyị kwesịrị ilekọta ihichapụ ma ọ bụ bugharịa data na-enweghị isi na sistemụ nchekwa dị ọnụ ala. Ka anyị kwuo na ị kpebiri ihichapụ ahịrị nde ole na ole. Ọrụ dị mfe dị mfe, ọkachasị ma ọ bụrụ na amaara ọnọdụ ahụ ma enwere ndeksi dabara adaba. "Hichapụ na table1 WHERE col1 =: uru" - gịnị nwere ike ịdị mfe karị, nri?

Video:

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

  • Anọ m na kọmitii mmemme Highload kemgbe afọ mbụ, ya bụ kemgbe 2007.

  • Anọkwa m na Postgres kemgbe 2005. Ejiri ya n'ọtụtụ ọrụ.

  • Otu nwere RuPostges kwa kemgbe 2007.

  • Anyị etoola ka ndị sonyere 2100+ na Meetup. Ọ bụ nke abụọ n'ụwa mgbe New York gachara, San Francisco meriri ya ruo ogologo oge.

  • Ebiela m na California ọtụtụ afọ. M na-emeso ndị ụlọ ọrụ America ihe, gụnyere ndị buru ibu. Ha bụ ndị ọrụ Postgres na-arụsi ọrụ ike. Na e nwere ụdị ihe niile na-adọrọ mmasị.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

https://postgres.ai/ bụ ụlọ ọrụ m. Anyị na-arụ ọrụ na-arụ ọrụ akpaaka nke na-ewepụ mbelata mmepe.

Ọ bụrụ na ị na-eme ihe, mgbe ụfọdụ, a na-enwe ụfọdụ ụdị plọgụ gburugburu Postgres. Ka anyị kwuo na ị kwesịrị ichere ka onye nchịkwa guzobe ihe nlele maka gị, ma ọ bụ na ịchọrọ ichere ka DBA zaghachi gị. Na anyị na-ahụ ihe mgbochi dị otú ahụ na mmepe, nyocha na usoro nchịkwa ma gbalịa ikpochapụ ha site n'enyemaka nke akpaaka na ụzọ ọhụrụ.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

https://www.seagate.com/files/www-content/our-story/trends/files/idc-seagate-dataage-whitepaper.pdf

M nọ nso nso a na VLDB na Los Angeles. Nke a bụ ọgbakọ kacha ukwuu na ọdụ data. Ma enwere akụkọ na n'ọdịnihu DBMS agaghị echekwa naanị, kamakwa hichapụ data ozugbo. Nke a bụ isiokwu ọhụrụ.

Enwere ọtụtụ data na ụwa nke zettabytes - nke ahụ bụ 1 petabytes. Ma ugbu a, a na-eme atụmatụ na anyị nwere ihe karịrị 000 zettabytes nke data echekwara na ụwa. E nwekwara ọtụtụ n’ime ha.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

https://vldb2019.github.io/files/VLDB19-keynote-2-slides.pdf

Gịnịkwa ka a ga-eji ya mee? O doro anya na ọ dị mkpa ka ewepụ ya. Nke a bụ njikọ na akụkọ a na-atọ ụtọ. Mana ruo ugbu a emebeghị nke a na DBMS.

Ndị nwere ike ịgụta ego chọrọ ihe abụọ. Ha chọrọ ka anyị ihichapụ, yabụ na teknụzụ anyị ga-enwe ike ime ya.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ihe m ga-agwa ọzọ bụ ụfọdụ ọnọdụ nkịtị na-agụnye ụyọkọ nke ezigbo ọnọdụ, ya bụ ụdị nchịkọta ihe n'ezie mere m na ọdụ data gbara ya gburugburu ọtụtụ ugboro, ọtụtụ afọ. Rake na-adị ebe niile na onye ọ bụla na-agba ha mgbe niile.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ka anyị kwuo na anyị nwere ntọala ma ọ bụ ọtụtụ ntọala na-eto eto. Ma ụfọdụ ndekọ doro anya bụ ihe mkpofu. Dịka ọmụmaatụ, onye ọrụ malitere ime ihe n'ebe ahụ, ma ọ mechaghị ya. Ma mgbe oge ụfọdụ gasịrị, anyị maara na nke a emechabeghị enweghị ike ịchekwa ya. Ya bụ, anyị ga-achọ ihicha ụfọdụ ihe mkpofu iji chekwaa ohere, melite arụmọrụ, wdg.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

N'ozuzu, ọrụ ahụ bụ imezigharị nhichapụ nke ihe ụfọdụ, ahịrị ụfọdụ na tebụl ụfọdụ.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Na anyị nwere arịrịọ dị otú ahụ, nke anyị ga-ekwu maka taa, ya bụ, banyere iwepụ ihe mkpofu.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Anyị gwara onye nrụpụta nwere ahụmahụ ka o mee ya. O weere arịrịọ a, lelee ya n'onwe ya - ihe niile na-arụ ọrụ. A nwalere na nhazi - ihe niile dị mma. Akwụsịla - ihe niile na-arụ ọrụ. Otu ugboro n'ụbọchị anyị na-agba ya - ihe niile dị mma.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ebe nchekwa data na-eto ma na-eto. Nkwụsị kwa ụbọchị na-amalite ịrụ ọrụ nke nta nke nta.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Mgbe ahụ, anyị ghọtara na anyị nwere ụlọ ọrụ na-ere ahịa ugbu a na okporo ụzọ ga-ebuwanye ibu ọtụtụ ugboro, ya mere anyị na-ekpebi ịkwụsịtụ ihe ndị na-adịghị mkpa nwa oge. Echefukwala ịlaghachi.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ọnwa ole na ole ka e mesịrị, ha chetara. Ma onye nrụpụta ahụ kwụsịrị ma ọ bụ ji ọrụ n'aka n'ihe ọzọ, gwa onye ọzọ ka ọ weghachi ya.

Ọ lelee dev, na nhazi - ihe niile dị mma. Dị ka o kwesịrị ịdị, ọ ka dị mkpa ka ị na-ehicha ihe kwakọbara. Ọ tụlere ihe niile na-arụ ọrụ.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Gịnị ga-eme ọzọ? Mgbe ahụ ihe niile na-adakwasị anyị. Ọ na-adaba nke mere na mgbe ụfọdụ ihe niile daa. Onye ọ bụla nọ na-ama jijiji, ọ dịghị onye na-aghọta ihe na-eme. Mgbe ahụ, ọ na-apụta na okwu ahụ dị na ihichapụ a.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ọ nwere ihe adịghị mma? Nke a bụ ndepụta nke ihe gaara agahie. Kedu nke kacha mkpa n'ime ihe ndị a?

  • Dịka ọmụmaatụ, enweghị nyocha, ya bụ ọkachamara DBA eleghị ya anya. Ọ ga-ahụ nsogbu ahụ ozugbo site n'anya nwere ahụmahụ, ma e wezụgakwa, ọ na-enwe ohere ịnweta prod, bụ ebe ọtụtụ nde ahịrị chịkọbara.

  • Ma eleghị anya, ha enyochala ihe adịghị mma.

  • Ma eleghị anya, ngwaike emechiela ma ịchọrọ ịkwalite ntọala a.

  • Ma ọ bụ ihe adịghị njọ na nchekwa data n'onwe ya, anyị kwesịrị ịkwaga na Postgres na MySQL.

  • Ma ọ bụ ikekwe ọ nwere ihe adịghị mma na ọrụ ahụ.

  • Ma eleghị anya, e nwere ụfọdụ mmejọ na nhazi nke ọrụ ma ọ dị mkpa ka ị gbaa mmadụ ọkụ ma were ndị kacha mma n'ọrụ?

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Enweghị nlele DBA. Ọ bụrụ na e nwere DBA, ọ ga-ahụ ndị a ọtụtụ nde ahịrị na ọbụna na-enweghị ihe ọ bụla nnwale ga-asị: "Ha adịghị eme nke ahụ." Ka e were ya na ọ bụrụ na koodu a dị na GitLab, GitHub na a ga-enwe usoro nyochaa koodu na ọ dịghị ihe ọ bụla na-enweghị nkwado nke DBA ọrụ a ga-eme na prod, mgbe ahụ n'ụzọ doro anya na DBA ga-asị: "Nke a enweghị ike ime. "

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ọ ga-ekwukwa na ị ga-enwe nsogbu na diski IO na usoro niile ga-aga ara, enwere ike ịnwe mkpọchi, yana ị ga-egbochi autovacuum maka ụyọkọ nkeji, yabụ nke a adịghị mma.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

http://bit.ly/nancy-hl2018-2

Njehie nke abụọ - ha nyochara ebe na-ezighi ezi. Anyị hụrụ mgbe eziokwu ahụ bụ na ọtụtụ data junk chịkọbara na prod, mana onye nrụpụta enweghị chịkọbara data na nchekwa data a, ọ nweghịkwa onye kere ihe junk a n'oge nhazi. N'ihi ya, e nwere 1 ahịrị ndị rụpụtara ngwa ngwa.

Anyị ghọtara na ule anyị adịghị ike, ya bụ usoro a na-ewu anaghị ejide nsogbu. Emebeghị nnwale DB zuru oke.

A na-eme nnwale kacha mma n'otu akụrụngwa. Ọ bụghị mgbe niile ka ọ ga-ekwe omume ime nke a n'otu ngwá ọrụ ahụ, ma ọ dị ezigbo mkpa na ọ ga-abụ ihe zuru oke nke nchekwa data. Nke a bụ ihe m na-ekwusa kemgbe ọtụtụ afọ ugbu a. Na otu afọ gara aga m kwuru banyere nke a, ị nwere ike na-ekiri ya niile na YouTube.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ma eleghị anya, ngwá ọrụ anyị adịghị mma? Ọ bụrụ na ị na-ele anya, mgbe ahụ latency malie. Anyị ahụla na itinye n'ọrụ bụ 100%. N'ezie, ọ bụrụ na ndị a bụ draịva NVMe ọgbara ọhụrụ, mgbe ahụ ọ ga-adịrị anyị mfe karị. Ma eleghị anya, anyị agaghị atọgbọrọ n'efu na ya.

Ọ bụrụ na ị nwere igwe ojii, mgbe ahụ, a na-eme nkwalite ahụ ngwa ngwa n'ebe ahụ. Welitere oyiri ọhụrụ na ngwaike ọhụrụ ahụ. ngbanwe. Na ihe niile dị mma. Ọ dị mfe.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ọ ga-ekwe omume n'ụzọ ụfọdụ metụ obere diski aka? Na ebe a, naanị site n'enyemaka nke DBA, anyị na-amaba n'ime otu isiokwu a na-akpọ checkpoint tuning. Ọ bịara bụrụ na anyị enweghị nlegharị anya n'ọtụgharị anya.

Gịnị bụ checkpoint? Ọ dị na DBMS ọ bụla. Mgbe ị nwere data na ebe nchekwa na-agbanwe, a naghị ede ya ozugbo na diski. A na-ebu ụzọ dee ozi ahụ data agbanweela na ndekọ ederede n'ihu. Ma n'oge ụfọdụ, DBMS kpebiri na oge eruola ka a tụfuo ezigbo ibe na diski, nke mere na ọ bụrụ na anyị enwee ọdịda, anyị nwere ike ime obere REDO. Ọ dị ka ihe egwuregwu ụmụaka. Ọ bụrụ na e gburu anyị, anyị ga-amalite egwuregwu ahụ site na nlele ikpeazụ. Na DBMS niile mejuputa ya.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ntọala dị na Postgres na-ada azụ. Emebere ha maka ọnụọgụ data na azụmahịa dị afọ 10-15. Ebe a na-enyocha ya abụghịkwa ihe ọzọ.

Nke a bụ ozi sitere na mkpesa nyocha Postgres anyị, ya bụ nlele ahụike akpaka. Na ebe a bụ ụfọdụ nchekwa data nke ọtụtụ terabytes. Enwere ike ịhụ nke ọma na ebe a na-enyocha ihe fọrọ nke nta ka ọ bụrụ 90% nke ikpe.

Kedu ihe ọ pụtara? Enwere ntọala abụọ ebe ahụ. Ebe nleba anya nwere ike ịbịa site n'ịkwụsị oge, dịka ọmụmaatụ, n'ime nkeji iri. Ma ọ bụ ọ nwere ike ịbịa mgbe ejupụtala ọtụtụ data.

Na ndabara max_wal_saze atọrọ ka 1 gigabyte. N'ezie, nke a na-eme n'ezie na Postgres mgbe megabytes 300-400 gachara. Ị gbanweela ọtụtụ data na ebe nlele gị mere.

Ma ọ bụrụ na ọ dịghị onye na-ekiri ya, na ọrụ ahụ toro, ụlọ ọrụ ahụ na-enwetakwa ego buru ibu, ọ nwere ọtụtụ azụmahịa, mgbe ahụ, ebe nlele na-abịa otu ugboro na nkeji, mgbe ụfọdụ ọ bụla 30 sekọnd, na mgbe ụfọdụ ọbụna na-adaba. Nke a dị nnọọ njọ.

Anyị kwesịrị ijide n'aka na ọ na-abịa obere oge. Ya bụ, anyị nwere ike ibuli max_wal_size. Ọ ga-abịakwa obere oge.

Ma anyị emepụtala usoro dum maka otu esi eme ya nke ọma, ya bụ, otu esi eme mkpebi banyere ịhọrọ ntọala, dabere na data kpọmkwem.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

N'ihi ya, anyị na-eme usoro abụọ nke nnwale na ọdụ data.

Usoro nke mbụ - anyị na-agbanwe max_wal_size. Anyị na-emekwa nnukwu ọrụ. Nke mbụ, anyị na-eme ya na ntọala ndabara nke 1 gigabyte. Ma anyị na-eme nnukwu HIchapụ nke ọtụtụ nde ahịrị.

Ị nwere ike ịhụ otú ọ na-esiri anyị ike. Anyị na-ahụ na diski IO dị ezigbo njọ. Anyị na-ele anya ole WAL anyị mepụtara, n'ihi na nke a dị ezigbo mkpa. Ka anyị hụ ugboro ole ebe a na-enyocha ihe mere. Anyị na-ahụkwa na ọ dịghị mma.

Ọzọ anyị na-abawanye max_wal_size. Anyị na-ekwughachi. Anyị na-abawanye, anyị na-emegharị. Na ọtụtụ oge. Na ụkpụrụ, isi 10 dị mma, ebe 1, 2, 4, 8 gigabytes. Na anyị na-ele anya na omume nke otu usoro. O doro anya na ebe a akụrụngwa kwesịrị ịdị ka na prod. Ị ga-enwerịrị otu diski, otu oke nchekwa, yana otu ntọala Postgres.

Na n'ụzọ dị otú a, anyị ga-agbanwe anyị usoro, na anyị maara otú DBMS ga-akpa àgwà ma ọ bụrụ na a ọjọọ uka ehichapụ, otú ọ ga-enyocha.

Ebe a na-enyocha ya na Russian bụ ebe nlele.

Ọmụmaatụ: Wepu ọtụtụ nde ahịrị site na ndeksi, ahịrị ndị 'gbasasịa' n'ofe ibe.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Nke a bụ ihe atụ. Nke a bụ ụfọdụ ntọala. Na ndabara ntọala nke 1 gigabyte maka max_wal_size, o doro anya na diski anyị na-aga shelf maka ndekọ. Foto a bụ ihe mgbaàmà nke onye ọrịa na-arịa ọrịa, ya bụ, obi jọrọ ya njọ. Ma enwere otu ọrụ, enwere naanị HIchapụ nke ọtụtụ ahịrị nde.

Ọ bụrụ na anabata ọrụ dị otú ahụ na prod, mgbe ahụ, anyị ga-edina ala, n'ihi na o doro anya na otu DELETE na-egbu anyị na shelf.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ọzọkwa, ebe 16 gigabytes, o doro anya na ezé agaworị. Ezé adịlarị mma, ya bụ, anyị na-akụ aka n'uko ụlọ, ma ọ dịghị njọ. Enwere ụfọdụ nnwere onwe n'ebe ahụ. N'aka nri bụ ndekọ ahụ. Na ọnụ ọgụgụ nke arụmọrụ - nke abụọ eserese. Ma o doro anya na anyị na-eku ume ntakịrị mfe mgbe 16 gigabytes.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Na ebe 64 gigabytes nwere ike ịhụ na ọ dịla mma. Ugbua a na-akpọ ezé ezé, enwere ohere ndị ọzọ ịlanarị ọrụ ndị ọzọ ma mee ihe na diski ahụ.

N'ihi gịnị?

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

M ga-abanye n'ime nkọwa ntakịrị, ma isiokwu a, otu esi eduzi nlegharị anya nlele, nwere ike ime ka akụkọ zuru ezu pụta, n'ihi ya, agaghị m ebu ibu dị ukwuu, ma m ga-edepụta ntakịrị ihe isi ike dị.

Ọ bụrụ na ndị checkpoint na-eme kwa mgbe, na anyị na-emelite anyị ahịrị bụghị sequentially, ma chọta site index, nke dị mma, n'ihi na anyị adịghị ihichapụ dum table, mgbe ahụ, o nwere ike ime na na mbụ anyị metụrụ mbụ peeji nke, mgbe ahụ puku kwuru puku, wee laghachi na nke mbụ . Ma ọ bụrụ na n'etiti nleta ndị a na ibe mbụ, checkpoint echekwala ya na diski, mgbe ahụ ọ ga-echekwa ya ọzọ, n'ihi na anyị nwetara ya unyi nke ugboro abụọ.

Anyị ga-amanye ebe a na-enyocha ihe iji chekwaa ya ọtụtụ oge. Kedu ka a ga-esi arụ ọrụ maka ya.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ma ọ bụghị naanị nke ahụ. Ibe akwụkwọ bụ 8 kilobytes na Postgres na 4 kilobytes na Linux. Ma enwere ntọala_page_writes zuru ezu. Agbanyere ya na ndabara. Ma nke a bụ eziokwu, n'ihi na ọ bụrụ na anyị gbanyụọ ya, mgbe ahụ, e nwere ihe ize ndụ na naanị ọkara nke ibe ga-azọpụta ma ọ bụrụ na ọ daa.

Omume nke ịdegara WAL nke log na-aga n'ihu bụ na mgbe anyị nwere ebe nlele na anyị na-agbanwe ibe ahụ maka oge mbụ, ibe dum, ya bụ, 8 kilobytes niile, na-abanye na log na-aga n'ihu, ọ bụ ezie na anyị gbanwere naanị. ahịrị, nke ruru 100 bytes. Anyị ga-edekwa ibe ahụ dum.

Na mgbanwe ndị na-esote, a ga-enwe nanị otu tuple, ma na nke mbụ anyị na-ede ihe niile.

Na, ya mere, ọ bụrụ na nlele ahụ mere ọzọ, mgbe ahụ, anyị ga-amalite ihe niile site na ọkọ ọzọ ma na-agbanye ibe niile. N'ebe a na-enyocha ugboro ugboro, mgbe anyị na-aga n'otu ibe, full_page_writes = na ga-adị karịa ka ọ nwere ike ịbụ, ya bụ, anyị na-emepụta ọtụtụ WAL. A na-ezigakwu na oyiri, na ebe nchekwa, na diski.

Na, n'ihi ya, anyị nwere abụọ redundancies.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ọ bụrụ na anyị na-abawanye max_wal_size, ọ na-apụta na anyị na-eme ka ọ dịkwuo mfe maka ma checkpoint na wal writer. Nke ahụ dịkwa mma.

Ka anyị tinye na terabyte ka anyị na ya biri. Kedu ihe dị njọ na ya? Nke a dị njọ, n'ihi na ọ bụrụ na ọdịda, anyị ga-arịgo ruo ọtụtụ awa, n'ihi na ebe a na-enyocha ya bụ ogologo oge gara aga na ọtụtụ ihe agbanweela. Anyị kwesịrị ime REDO niile a. Ya mere, anyị na-eme usoro nke abụọ nke nnwale.

Anyị na-arụ ọrụ ma hụ mgbe ebe nlele ahụ na-aga imecha, anyị na-egbu -9 Postgres na nzube.

Ma mgbe nke ahụ gasịrị, anyị na-amalite ya ọzọ, ma hụ ogologo oge ọ ga-ebili na ngwá ọrụ a, ya bụ ole ọ ga-eme REDO n'ọnọdụ ọjọọ a.

Ugboro abụọ m ga-achọpụta na ọnọdụ ahụ dị njọ. Nke mbụ, anyị dara ozugbo tupu ebe a na-enyocha ya akwụsị, n’ihi ya, anyị nwere ọtụtụ ihe ga-efunahụ anyị. Nke abụọ, a wara anyị ahụ́ nke ukwuu. Ma ọ bụrụ na ebe a na-enyocha ya nọ n'oge, mgbe ahụ, o yikarịrị ka ọ ga-eme obere WAL kemgbe ebe nlele ikpeazụ. Ya bụ, ọ bụ ihe efu abụọ.

Anyị na-atụle ọnọdụ dị otú ahụ maka nha max_wal_size dị iche iche ma ghọta na ọ bụrụ na max_wal_size bụ 64 gigabytes, mgbe ahụ, n'ọnọdụ abụọ kachasị njọ, anyị ga-arịgo maka nkeji 10. Anyị na-eche ma ọ dabara anyị ma ọ bụ na ọ bụghị. Nke a bụ ajụjụ azụmahịa. Anyị kwesịrị igosi ndị na-ahụ maka achụmnta ego foto a ma jụọ, sị, “Ruo ole mgbe ka anyị ga-edina ala ma ọ bụrụ na e nwee nsogbu? Anyị nwere ike dinara ala n'ọnọdụ kachasị njọ maka nkeji 3-5? Na ị na-eme mkpebi.

Na ebe a bụ isi ihe na-adọrọ mmasị. Anyị nwere akụkọ ole na ole gbasara Patroni na ogbako ahụ. Ma eleghị anya, ị na-eji ya. Nke a bụ autofailover maka Postgres. GitLab na Data Egret kwuru maka nke a.

Ma ọ bụrụ na ị nwere autofailover nke na-abịa na 30 sekọnd, mgbe ahụ enwere ike anyị nwere ike dinara ala maka nkeji 10? N'ihi na anyị ga-agbanwe na oyiri site na nke a, na ihe niile ga-adị mma. Nke a bụ isi okwu. Amaghị m azịza doro anya. Enwere m mmetụta na isiokwu a abụghị naanị na mgbake ihe mberede.

Ọ bụrụ na anyị nwere ogologo mgbake mgbe ọdịda gasịrị, anyị agaghị enwe ahụ iru ala n'ọtụtụ ọnọdụ ndị ọzọ. Dị ka ihe atụ, na otu nnwale, mgbe anyị na-eme ihe na mgbe ụfọdụ ga-echere 10 nkeji.

Agaghị m aga ebe dị anya, ọbụlagodi na anyị nwere autofailover. Dị ka a na-achị, ụkpụrụ dị ka 64, 100 gigabytes bụ ezigbo ụkpụrụ. Mgbe ụfọdụ, ọ bara uru ịhọrọ obere. N'ozuzu, nke a bụ sayensị aghụghọ.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Iji mee ugboro ugboro, dịka ọmụmaatụ, max_wal_size = 1, 8, ị ga-emeghachi ọrụ ahụ ọtụtụ ugboro. I mere ya. Na n'otu isi ahụ ịchọrọ ime ya ọzọ, ma ị ehichapụla ihe niile. Ihe a ga-eme?

M ga-ekwu mgbe e mesịrị banyere anyị ngwọta, ihe anyị na-eme ka iterate na ndị dị otú ahụ ọnọdụ. Ma nke a bụ ụzọ kacha mma.

Ma na nke a, anyị nwere chioma. Ọ bụrụ na, dị ka ọ na-ekwu ebe a "BILI, HIchapụ, ROLLBACK", mgbe ahụ anyị nwere ike ikwugharị ihichapụ. Ya bụ, ọ bụrụ na anyị akagbuo ya n'onwe anyị, mgbe ahụ anyị nwere ike ikwugharị ya. Na anụ ahụ na gị data ga-edina n'otu ebe. Ị naghị enweta afọ ntachi ọ bụla. Ị nwere ike gụgharịa maka ụdị ihichapụ.

NKWUKWU a nwere ROLLBACK dị mma maka nlegharị anya nlele, ọbụlagodi na ịnweghị ụlọ nyocha nchekwa data etinyere nke ọma.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Anyị mere efere nwere otu kọlụm "i". Postgres nwere kọlụm ọrụ. Ha na-adịghị ahụ anya ma ọ bụrụ na a jụrụ kpọmkwem. Ndị a bụ: ctid, xmid, xmax.

Ctid bụ adreesị anụ ahụ. Ibe efu, nke mbụ n'ime ibe ahụ.

Enwere ike ịhụ na mgbe ROOLBACK gasịrị, tuple nọgidere n'otu ebe ahụ. Ya bụ, anyị nwere ike ịnwale ọzọ, ọ ga-akpa àgwà otu ụzọ ahụ. Nke a bụ isi ihe.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Xmax bụ oge ọnwụ nke tuple. Edere ya stampụ, mana Postgres maara na azụmaahịa a kpọgharịrị azụ, yabụ na ọ baghị uru ma ọ bụ 0 ma ọ bụ na ọ bụ azụmahịa akpọrela azụ. Nke a na-egosi na ọ ga-ekwe omume ịmegharị n'elu HIchapụ wee lelee nnukwu ọrụ nke omume sistemụ. Ị nwere ike ịme ụlọ nyocha nchekwa data maka ndị ogbenye.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Nke a bụ maka ndị mmemme. Banyere DBA, kwa, ha na-abara ndị mmemme mba maka nke a: "Gịnị kpatara ị na-eme ogologo oge na arụmọrụ siri ike?". Nke a bụ isiokwu perpendicular dị iche kpamkpam. Ọ dịbu ọchịchị, ugbu a, a ga-enwe mmepe.

N'ụzọ doro anya, anyị agbajibeghị. O doro anya. Ọ gaghị ekwe omume ịghara imebi ihichapụ dị otú ahụ maka ikpori nde ahịrị n'ime akụkụ. A ga-eme ya maka nkeji 20, ihe niile ga-edina ala. Ma, ọ dị mwute ikwu, ọbụna ndị mmepe nwere ahụmahụ na-emehie, ọbụna na nnukwu ụlọ ọrụ.

Gịnị mere o ji dị mkpa ịgbaji?

  • Ọ bụrụ na anyị ahụ na diski ahụ siri ike, yabụ ka anyị wetuo ya nwayọ. Ma ọ bụrụ na anyị agbajiri agbaji, mgbe ahụ, anyị nwere ike tinye nkwụsịtụ, anyị nwere ike belata throttling.

  • Anyị agaghịkwa egbochi ndị ọzọ ruo ogologo oge. N'ọnọdụ ụfọdụ ọ dịghị mkpa, ọ bụrụ na ị na-ehichapụ ezigbo ihe mkpofu na ọ dịghị onye na-arụ ọrụ, mgbe ahụ ọ ga-abụ na ị gaghị egbochi onye ọ bụla ma e wezụga ọrụ autovacuum, n'ihi na ọ ga-echere ka azụmahịa ahụ mechaa. Ma ọ bụrụ na ị wepụ ihe onye ọzọ nwere ike ịrịọ, mgbe ahụ, a ga-egbochi ha, a ga-enwe ụdị mmeghachi omume nke yinye. Ekwesịrị izere azụmahịa ogologo oge na weebụsaịtị na ngwa mkpanaka.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

https://postgres.ai/products/joe/

Nke a na-adọrọ mmasị. M na-ahụkarị na ndị mmepe na-ajụ: "Kedu nha mkpọ m ga-ahọrọ?".

O doro anya na ka nnukwu ngwugwu ahụ buru ibu, nke a na-eme ka azụmahịa ahụ dị ntakịrị, ya bụ, ihe ndị ọzọ na-esi na azụmahịa. Ma n'otu oge ahụ, oge na-abawanye maka azụmahịa a.

Enwere m iwu dị mfe: were oke ike, mana agabigala executables kwa nkeji.

Gịnị mere otu nkeji? Nkọwa ahụ dị nnọọ mfe na nghọta nye onye ọ bụla, ọbụna ndị na-abụghị ndị ọrụ nkà. Anyị na-ahụ mmeghachi omume. Ka anyị were millisekọnd iri ise. Ọ bụrụ na ihe agbanweela, mgbe ahụ, anya anyị ga-emeghachi omume. Ọ bụrụ na ọ dị obere, mgbe ahụ ka siri ike. Ọ bụrụ na ihe zaa mgbe 50 milliseconds, dịka ọmụmaatụ, ị pịrị òké, wee zaa gị mgbe 100 milliseconds, ị na-enwetala ntakịrị igbu oge. Aghọtala nke abụọ dị ka breeki.

N'ihi ya, ọ bụrụ na anyị na-agbaji anyị uka ọrụ n'ime 10-sekọnd gbawara, mgbe ahụ anyị nwere ihe ize ndụ na anyị ga-egbochi mmadụ. Ọ ga-arụkwa ọrụ maka sekọnd ole na ole, ndị mmadụ ga-achọpụtalarị ya. Ya mere, m na-ahọrọ ịghara ime ihe karịrị otu sekọnd. Ma n'otu oge ahụ, agbajila ya nke ọma, n'ihi na azụmahịa n'elu ga-ahụ anya. Isi ihe ga-esi ike karị, nsogbu ndị ọzọ dị iche iche nwere ike ibilite.

Anyị na-ahọrọ nha nke mkpọ. N'ọnọdụ ọ bụla, anyị nwere ike ime ya n'ụzọ dị iche. Enwere ike ịmegharị ya. Na anyị kwenyesiri ike na arụmọrụ nke nhazi otu mkpọ. Ya bụ, anyị na-eme ihichapụ otu mkpọ ma ọ bụ emelite.

Site n'ụzọ, ihe niile m na-ekwu abụghị naanị maka ihichapụ. Dị ka ị chere, ndị a bụ nnukwu arụmọrụ na data.

Anyị na-ahụkwa na atụmatụ a mara mma. Ị nwere ike ịhụ nyocha index, index naanị nyocha ka mma. Na anyị nwere obere ego nke data metụtara. Na ihe na-erughị nke abụọ na-emezu. Super.

Anyị ka kwesịrị ijide n'aka na ọ dịghị mmebi iwu. Ọ na-eme na ngwugwu mbụ na-arụ ọrụ ngwa ngwa, mgbe ahụ ọ na-akawanye njọ, na-akawanye njọ. Usoro dị otú ahụ na ịkwesịrị ịnwale ọtụtụ. Nke a bụ kpọmkwem ihe ụlọ nyocha nchekwa data bụ maka.

Na anyị ka ga-akwadebe ihe mere na ọ ga-ekwe ka anyị na-eso nke a n'ụzọ ziri ezi na mmepụta. Dịka ọmụmaatụ, anyị nwere ike dee oge na log, anyị nwere ike dee ebe anyị nọ ugbu a na ndị anyị ehichapụrụ ugbu a. Nke a ga-emekwa ka anyị ghọta ihe na-eme emechaa. Ma ọ bụrụ na ihe adịghị mma, chọta nsogbu ahụ ngwa ngwa.

Ọ bụrụ na anyị kwesịrị ịlele arụmọrụ nke arịrịọ na anyị kwesịrị ikwugharị ọtụtụ ugboro, mgbe ahụ enwere ihe dị ka bot ibe. Ọ dịla njikere. Ọtụtụ ndị mmepe na-eji ya kwa ụbọchị. Ọ makwa ka esi enye nnukwu nchekwa data terabyte na arịrịọ na 30 sekọnd, nke gị. Ị nwere ike ihichapụ ihe ebe ahụ wee kwuo Tgharịa, ma hichapụ ya ọzọ. Ị nwere ike ịnwale ya otu a. Ahụrụ m ọdịnihu maka ihe a. Anyị na-emekwa ya.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

https://docs.gitlab.com/ee/development/background_migrations.html

Kedu ihe bụ usoro nkewa? M na-ahụ 3 dị iche iche nkebi atụmatụ na mmepe na mkpọ na-eji.

Nke mbụ dị nnọọ mfe. Anyị nwere NJ ọnụọgụgụ. Ka anyị kewaa ya n'ime oge dị iche iche wee jiri nke ahụ rụọ ọrụ. Ọdịda ya doro anya. N'akụkụ nke mbụ, anyị nwere ike ịnwe ahịrị 100 nke ezigbo ahịhịa, na ahịrị 5 nke abụọ ma ọ bụ na ọ nweghị, ma ọ bụ ahịrị 1 niile ga-abụ ihe mkpofu. Ọrụ na-enweghị isi, mana ọ dị mfe imebi. Ha were ID kacha wee kụrie ya. Nke a bụ ụzọ aghụghọ.

Atụmatụ nke abụọ bụ ụzọ ziri ezi. A na-eji ya na Gitlab. Ha were wee nyochaa tebụl. Anyị chọtara ókè nke ngwugwu ID nke mere na ngwugwu ọ bụla nwere ndekọ ndekọ 10 kpọmkwem. Ma tinye ha n'ahịrị. Mgbe ahụ, anyị na-ahazi. Ị nwere ike ime nke a n'ọtụtụ eri.

Na atụmatụ nke mbụ, kwa, n'ụzọ, ị nwere ike ime nke a na ọtụtụ eri. Ọ dịghị esi ike.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

https://medium.com/@samokhvalov/how-partial-indexes-affect-update-performance-in-postgres-d05e0052abc

Mana enwere usoro nju oyi na nke ka mma. Nke a bụ atụmatụ nke atọ. Ma mgbe o kwere mee, ọ ka mma ịhọrọ ya. Anyị na-eme nke a na ndabere nke index pụrụ iche. N'okwu a, ọ ga-abụ na ọ ga-abụ index dị ka ọnọdụ mkpofu na ID anyị si dị. Anyị ga-etinye ID ahụ ka ọ bụrụ naanị nyocha index ka anyị ghara ịga n'obo.

N'ozuzu, naanị nyocha index dị ngwa karịa nyocha index.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Na anyị na-ahụ ngwa ngwa ID anyị na anyị chọrọ iwepụ. BATCH_SIZE anyị na-ahọrọ tupu oge eruo. Ma anyị ọ bụghị nanị na-enweta ha, anyị na-enweta ha na a pụrụ iche ụzọ na ozugbo mbanye anataghị ikike ha. Mana anyị na-akpọchichi ka ọ bụrụ na akpọchielarị ha, anyị anaghị akpọchi ha, kama gaa n'ihu were ndị ọzọ. Nke a bụ maka akpọchiri mwụli elu. Akụkụ dị ukwuu nke Postgres na-enye anyị ohere ịrụ ọrụ n'ọtụtụ eri ma ọ bụrụ na anyị chọrọ. O kwere omume n'otu iyi. Na ebe a enwere CTE - nke a bụ otu arịrịọ. Ma anyị nwere ezigbo nhichapụ na-aga n'ihu n'ala nke abụọ nke CTE a - returning *. Ị nwere ike weghachi id, mana ọ ka mma *ọ bụrụ na ị nweghị ọtụtụ data na ahịrị ọ bụla.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Gịnị mere anyị ji chọọ ya? Nke a bụ ihe anyị kwesịrị ịkọ azụ. Anyị ehichapụla ọtụtụ ahịrị n'ezie. Ma anyị nwere oke site na ID ma ọ bụ site na ịmepụta_at dị ka nke a. Ị nwere ike ime min, max. Enwere ike ime ihe ọzọ. Ị nwere ike nweta ọtụtụ ihe ebe a. Ma ọ bụ nnọọ adaba maka nlekota oru.

Enwere otu ndetu ọzọ gbasara ndetu. Ọ bụrụ na anyị na-ekpebi na anyị chọrọ a pụrụ iche index maka ọrụ a, mgbe ahụ, anyị kwesịrị ijide n'aka na ọ dịghị emebi kpokọtara tuples naanị. Ya bụ, Postgres nwere ọnụ ọgụgụ dị otú ahụ. Enwere ike ịhụ nke a na pg_stat_user_tables maka tebụl gị. Ị nwere ike ịhụ ma a na-eji mmelite ọkụ ma ọ bụ na-ejighị ya.

Enwere ọnọdụ mgbe ndebanye aha ọhụrụ gị nwere ike ibipụ ha. Ma ị nwere mmelite ndị ọzọ niile na-arụ ọrụ, jiri nwayọ. Ọ bụghị naanị n'ihi na index pụtara (nke ọ bụla index na-ebelata mmelite ntakịrị, mana ntakịrị), mana ebe a ka na-emebi ya. Ma ọ gaghị ekwe omume ịme nkwalite pụrụ iche maka tebụl a. Nke a na-eme mgbe ụfọdụ. Nke a bụ aghụghọ nke mmadụ ole na ole na-echeta. Na rake a dị mfe ịga n'ihu. Mgbe ụfọdụ, ọ na-eme na ịchọrọ ịchọta ụzọ site n'akụkụ nke ọzọ ma ka na-eme na-enweghị ihe ndeksi ọhụrụ a, ma ọ bụ mee ndenye ọzọ, ma ọ bụ n'ụzọ ọzọ, dịka ọmụmaatụ, ị nwere ike iji usoro nke abụọ.

Mana nke a bụ atụmatụ kachasị mma, otu esi kewaa n'ime batches wee gbaa otu arịrịọ, hichapụ ntakịrị, wdg.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ogologo azụmahịa https://gitlab.com/snippets/1890447

Akpụkpọ anụ akpọchiri - https://gitlab.com/snippets/1889668

nsogbu igbochi - https://gitlab.com/snippets/1890428

Mmejọ #5 bụ nnukwu. Nikolai si Okmeter kwuru banyere nlekota Postgres. Ideal Postgres nlekota, ọ dị mwute ikwu, adịghị. Ụfọdụ nọ nso, ụfọdụ nọ n'ebe dị anya. Okmeter dị nso iji zuo oke, mana ọtụtụ na-efu ma ọ dị mkpa ka agbakwunye ya. Ịkwesịrị ịdị njikere maka nke a.

Dịka ọmụmaatụ, a na-enyocha tuple nwụrụ anwụ kacha mma. Ọ bụrụ na ị nwere ọtụtụ ihe nwụrụ anwụ na tebụl, mgbe ahụ, ihe adịghị mma. Ọ ka mma imeghachi omume ugbu a, ma ọ bụghị na enwere ike ịda mbà, anyị nwere ike dinara ala. Ọ na-eme.

Ọ bụrụ na e nwere nnukwu IO, mgbe ahụ, o doro anya na nke a adịghị mma.

Ogologo azụmahịa kwa. Agaghị anabata azụmahịa ogologo na OLTP. Na ebe a bụ njikọ na snippet nke na-enye gị ohere iwere snippet a ma meelarị nsuso ogologo azụmahịa.

Gịnị mere ogologo azụmahịa ji dị njọ? N'ihi na a ga-ahapụ mkpọchi niile naanị na njedebe. Na anyị na-atụgharị onye ọ bụla. Na mgbakwunye, anyị na-egbochi autovacuum maka tebụl niile. Ọ dịghị mma ma ọlị. Ọbụlagodi na ị nwere nkwado dị ọkụ na oyiri, ọ ka dị njọ. N'ozuzu, ọ dịghị ebe ọ ka mma izere azụmahịa ogologo oge.

Ọ bụrụ na anyị nwere ọtụtụ tebụl na-adịghị ekpochapụ, mgbe ahụ anyị kwesịrị inwe nchekwube. N'ebe a, ọnọdụ dị otú ahụ ga-ekwe omume. Anyị nwere ike imetụta ọrụ nke autovacuum na-apụtaghị ìhè. Nke a bụ snippet sitere na Avito, nke m meziri nke ọma. Ma ọ tụgharịrị bụrụ ngwá ọrụ na-adọrọ mmasị ịhụ ihe anyị nwere na autovacuum. Dịka ọmụmaatụ, tebụl ụfọdụ na-echere ebe ahụ ma ha agaghị echere oge ha. Ịkwesịrị itinye ya na nlekota ma nwee njikere.

Na nsogbu blocks. Ohia nke ngọngọ osisi. Ọ na-amasị m ịnara mmadụ ihe ma melite ya. N'ebe a, m weere CTE dị jụụ site na Data Egret nke na-egosi oke ọhịa nke osisi mkpọchi. Nke a bụ ezigbo ngwaọrụ nyocha. Na ndabere ya, ị nwekwara ike wulite nlekota oru. Ma nke a ga-emerịrị nke ọma. Ikwesiri ime obere nkwupụta_oge maka onwe gị. Na lock_timeout bụ ihe na-achọsi ike.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Mgbe ụfọdụ njehie ndị a niile na-eme na nchikota.

N'uche nke m, isi ndudue ebe a bụ nhazi. Ọ bụ nhazi, n'ihi na usoro anaghị adọta. Nke a bụ nọmba 2 - ha nyochara ebe na-ezighi ezi.

Anyị na-enyocha ebe na-ezighị ezi, n'ihi na anyị enweghị mmepụta mmepụta ihe, nke dị mfe ịlele. Onye nrụpụta nwere ike ọ gaghị enwe ike imepụta ihe ọ bụla.

Anyị enyochaghịkwa ebe ahụ. A sị na anyị lere anya ebe ahụ, anyị gaara ahụ ya n'onwe anyị. Onye mmepụta ahụ hụrụ ya niile ọbụna na-enweghị DBA ma ọ bụrụ na ọ na-enyocha ya na ebe dị mma, ebe enwere otu data data na otu ebe. Ọ ga-ahụworị nbibi a nile, ihere ga-emekwa ya.

Ihe ndị ọzọ gbasara autovacuum. Ka anyị mechachara ọtụtụ nde ahịrị, anyị ka kwesịrị ime REPACK. Nke a dị mkpa karịsịa maka index. Obi ga-adị ha njọ ma anyị sachaa ihe niile dị n’ebe ahụ.

Ma ọ bụrụ na ịchọrọ iweghachite ọrụ nhicha kwa ụbọchị, m ga-atụ aro ka ị na-eme ya ugboro ugboro, mana obere. Ọ nwere ike ịbụ otu ugboro n'otu nkeji ma ọ bụ ọbụna karịa ntakịrị ntakịrị. Na ịkwesịrị nyochaa ihe abụọ: na ihe a enweghị njehie na na ọ dịghị ala azụ. Aghụghọ m gosipụtara ga-edozi nke a.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ihe anyị na-eme bụ isi mmalite. Ebisara ya na GitLab. Anyị na-eme ya ka ndị mmadụ nwee ike ịlele ọbụlagodi na-enweghị DBA. Anyị na-eme ụlọ nyocha nchekwa data, ya bụ, anyị na-akpọ akụkụ ntọala nke Joe na-arụ ọrụ ugbu a. Ma ị nwere ike ijide otu mmepụta. Ugbu a enwere mmejuputa Joe maka slack, ị nwere ike ịsị ebe ahụ: "kọwaa ụdị arịrịọ a" wee nweta nsonaazụ ozugbo maka nnomi nke nchekwa data gị. Ị nwere ike ihichapụ ebe ahụ, ọ dịghịkwa onye ga-ahụ ya.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

Ka anyị kwuo na ị nwere terabyte 10, anyị na-eme ụlọ nyocha nchekwa data yana terabyte 10. Site na ọdụ data terabyte 10 n'otu oge, ndị mmepe 10 nwere ike ịrụ ọrụ n'otu oge. Onye ọ bụla nwere ike ime ihe ọ chọrọ. Nwere ike ihichapụ, dobe, wdg. Nke ahụ bụ echiche efu. Anyị ga-ekwu maka nke a echi.

Ezigbo HIchapụ. Nikolay Samokhvalov (Postgres.ai)

A na-akpọ nke a mkpa ndokwa. Nke a bụ atụmatụ dị nro. Nke a bụ ụdị echiche efu nke na-ewepụ nnukwu igbu oge na mmepe, na-anwale ma mee ka ụwa bụrụ ebe ka mma na nke a. Ya bụ, ọ na-enye gị ohere iji zere nsogbu na nnukwu arụmọrụ.

Ọmụmaatụ: nchekwa data terabyte 5, na-enweta otu n'ime ihe na-erughị 30 sekọnd. Ọ naghịdị adabere na nha ya, ya bụ, ọ baghị uru ọnụọgụ terabytes.

Taa ị nwere ike ịga postgres.ai ma gwuo ala n'ime ngwá ọrụ anyị. Ị nwere ike ịdebanye aha ka ịhụ ihe dị. Ị nwere ike ịwụnye bot a. Ọ bụ n'efu. Dee.

Ajụjụ gị

Ọtụtụ mgbe n'ọnọdụ dị adị ọ na-apụta na data kwesịrị ịdị na tebụl dị obere karịa ihe a ga-ehichapụ. Ya bụ, n'ọnọdụ dị otú ahụ, ọ na-adịkarị mfe iji mejuputa usoro dị otú ahụ, mgbe ọ dị mfe ịmepụta ihe ọhụrụ, detuo naanị data dị mkpa n'ebe ahụ, ma gbanye okpokoro ochie. O doro anya na usoro mmemme dị mkpa maka oge a, ebe ị ga-agbanwe. Kedu ka usoro a si dị?

Nke a bụ ụzọ dị mma na ezigbo ọrụ. Ọ dị nnọọ ka ihe pg_repack na-eme, ọ dị nnọọ ka ihe ị ga-eme mgbe ị na-eme NJ 4 bytes. Ọtụtụ frameworks mere nke a afọ ole na ole gara aga, na dị nnọọ efere toro, na ha kwesịrị ka a tọghatara na 8 bytes.

Ọrụ a siri nnọọ ike. Anyị mere ya. Na ị ga-akpachapụ anya. Enwere mkpọchi, wdg mana a na-eme ya. Ya bụ, usoro ọkọlọtọ bụ iji pg_repack gaa. Ị na-ekwupụta akara dị otú ahụ. Na tupu ịmalite ibugo data snapshot n'ime ya, ị na-ekwupụtakwa otu efere na-achọpụta mgbanwe niile. Enwere aghụghọ nke ị nwere ike ị gaghị eso mgbanwe ụfọdụ. Enwere aghụghọ. Ma mgbe ahụ ị gbanwee site na ịtụgharị mgbanwe. A ga-enwe nkwụsịtụ dị mkpirikpi mgbe anyị mechiri onye ọ bụla, mana n'ozuzu, a na-eme nke a.

Ọ bụrụ na ị na-ele pg_repack na GitHub, mgbe ahụ, mgbe enwere ọrụ iji tọghata ID site na int 4 ka ọ bụrụ int 8, mgbe ahụ enwere echiche iji pg_repack n'onwe ya. Nke a nwekwara ike ime, mana ọ bụ ntakịrị mbanye anataghị ikike, mana ọ ga-arụkwa ọrụ maka nke a. Ị nwere ike itinye aka na mkpalite pg_repack na-eji wee kwuo ebe ahụ: "Anyị achọghị data a", ya bụ naanị anyị na-ebufe ihe anyị chọrọ. Na mgbe ahụ ọ dị nnọọ switches na ọ bụ ya.

Na nke a obibia, anyị ka na-enweta a abụọ oyiri nke tebụl, nke data na-ama indexed na stacked nnọọ evenly na mara mma indexes.

Bloat adịghị ugbu a, ọ bụ ụzọ dị mma. Ma amaara m na enwere mbọ ịmepụta akpaaka maka nke a, ya bụ ime ihe ngwọta zuru ụwa ọnụ. Enwere m ike itinye gị na akpaaka a. Edere ya na Python, nke bụ ihe dị mma.

Adị m ntakịrị site na ụwa MySQL, yabụ m bịara gee ntị. Anyị na-ejikwa ụzọ a.

Mana ọ bụ naanị ma ọ bụrụ na anyị nwere 90%. Ọ bụrụ na anyị nwere 5%, mgbe ahụ ọ dịghị mma iji ya.

Daalụ maka akụkọ ahụ! Ọ bụrụ na enweghị akụrụngwa iji mepụta nnomi prod zuru oke, enwere algọridim ọ bụla ma ọ bụ usoro iji gbakọọ ibu ma ọ bụ nha?

Ajuju di mma. Ka ọ dị ugbu a, anyị nwere ike ịchọta ọdụ data multi-terabyte. Ọbụlagodi na ngwaike enweghị otu, dịka ọmụmaatụ, obere ebe nchekwa, obere processor na diski abụghị otu, mana anyị na-eme ya. Ọ bụrụ na ọ nweghị ebe ọ bụla, mgbe ahụ ịkwesịrị iche echiche. Ka m chee ruo echi, ị bịara, anyị ga-ekwu okwu, ajụjụ a dị mma.

Daalụ maka akụkọ ahụ! Mbụ ị malitere banyere eziokwu ahụ bụ na enwere Postgres dị jụụ, nke nwere oke dị otú ahụ na nke dị otú ahụ, ma ọ na-etolite. Na nke a niile bụ crutch na nnukwu. Nke a ọ bụghị ihe niile megidere mmepe nke Postgres n'onwe ya, nke ụfọdụ ehichapụ deferent ga-apụta ma ọ bụ ihe ọzọ kwesịrị idobe na ọkwa dị ala ihe anyị na-agbalị iji ụfọdụ ụzọ anyị dị ịtụnanya ebe a?

Ọ bụrụ na anyị kwuru na SQL ka ihichapụ ma ọ bụ melite ọtụtụ ndekọ na otu azụmahịa, olee otú Postgres ga-esi kesaa ya ebe ahụ? Anyị nwere oke anụ ahụ na arụmọrụ. Anyị ka ga-eme ya ogologo oge. Na anyị ga-akpọchi n'oge a, wdg.

Emere ya na ndeksi.

Enwere m ike iche na otu nlegharị anya nlele ahụ nwere ike ịmegharị ya. Otu ụbọchị ọ nwere ike ịbụ. Ma mgbe ahụ, aghọtachaghị m ajụjụ ahụ.

Ajụjụ a bụ, enwere ụdị vector nke mmepe na-aga ebe a na ebe a, ebe nke gị na-aga n'otu? Ndị ahụ. Ọ bụ na ha echebeghị maka ya?

M kwuru banyere ụkpụrụ ndị a pụrụ iji ugbu a. Enwere bot ọzọ Nancy, site na nke a ị nwere ike ime nlegharị anya ebe nlele na-akpaghị aka. Ọ ga-abụ otu ụbọchị na Postgres? Amaghị m, a tụlebeghị ya. Anyị ka nọ ebe dị anya site na nke ahụ. Ma e nwere ndị ọkà mmụta sayensị na-emepụta usoro ọhụrụ. Ha na-atụbakwa anyị n'ime ndepụta ntụaka akpaaka. Enwere mmepe. Dịka ọmụmaatụ, ị nwere ike ile anya n'iji ya gee ntị. Ọ na-ahọrọ parampat na-akpaghị aka. Mana ọ gaghị emere gị nlele nlele ma. Ya bụ, ọ ga-eburu maka arụmọrụ, ihe nchekwa shei, wdg.

Na maka nlele nlele, ị nwere ike ime nke a: ọ bụrụ na ị nwere otu puku ụyọkọ na ngwaike dị iche iche, igwe mebere dị iche iche na igwe ojii, ị nwere ike iji bot anyị. Nancy mee akpaaka. Na max_wal_size ga-ahọrọ dị ka gị lekwasịrị ntọala na-akpaghị aka. Ma ruo ugbu a nke a adịghịdị nso na isi, ọ dị mwute ikwu.

Ehihie ọma Ị kwuru maka ihe egwu dị na ogologo azụmahịa. Ị kwuru na a kpọchiela autovacuum ma ọ bụrụ na ehichapụrụ ya. Olee otú ọzọ ọ na-emerụ anyị? N'ihi na anyị na-ekwukwu banyere ịtọhapụ oghere na inwe ike iji ya. Kedu ihe ọzọ na-efu anyị?

Autovacuum nwere ike ọ bụghị nnukwu nsogbu ebe a. Na eziokwu na ogologo azụmahịa nwere ike igbachi azụmahịa ndị ọzọ, ohere a dị ize ndụ karị. O nwere ike izute ma ọ bụ na ọ gaghị ezute. Ọ bụrụ na ọ zutere, mgbe ahụ ọ nwere ike ịdị njọ. Na autovacuum - nke a bụkwa nsogbu. Enwere nsogbu abụọ na ogologo azụmahịa na OLTP: mkpọchi na autovacuum. Ma ọ bụrụ na ị nwere nzaghachi njikere na-ekpo ọkụ na-enyere aka na oyiri ahụ, mgbe ahụ ị ka ga-anata mkpọchi autovacuum na nna ukwu, ọ ga-esi na oyiri ahụ bịa. Ma ọ dịkarịa ala, a gaghị enwe mkpọchi. Na a ga-enwe loks. Anyị na-ekwu maka mgbanwe data, ya mere mkpọchi bụ isi ihe dị mkpa ebe a. Ma ọ bụrụ na nke a niile bụ ogologo oge, ogologo oge, mgbe ahụ, ọtụtụ azụmahịa na-ekpochi. Ha nwere ike izu ndị ọzọ. Na osisi lok na-apụta. Enyere m njikọ na snippet. Na nsogbu a na-aghọwanye ihe ngwa ngwa karịa nsogbu na autovacuum, nke nwere ike ịgbakọ naanị.

Daalụ maka akụkọ ahụ! Ị malitere akụkọ gị site n'ikwu na ị nwalere ezighi ezi. Anyị gara n'ihu n'echiche anyị na anyị kwesịrị iburu otu akụrụngwa, na isi n'otu ụzọ ahụ. Ka anyị kwuo na anyị nyere onye nrụpụta ntọala. O wee mee ihe a rịọrọ ya. O yikwara ka ọ dị mma. Mana ọ naghị elele ndụ, mana maka ndụ, dịka ọmụmaatụ, anyị nwere ibu nke 60-70%. Ma ọ bụrụgodị na anyị na-eji ntugharị a, ọ naghị arụ ọrụ nke ọma.

Inwe ọkachamara na otu na iji ndị ọkachamara DBA nwere ike ịkọ ihe ga-eme na ezigbo ibu ndabere dị mkpa. Mgbe anyị na-ebugharị mgbanwe anyị dị ọcha, anyị na-ahụ foto a. Ma a ọzọ elu obibia, mgbe anyị mere otu ihe ahụ ọzọ, ma na ibu simulated na mmepụta. Ọ dị mma nke ukwuu. Ruo mgbe ahụ, ị ​​ga-etolite. Ọ dị ka okenye. Anyị lere anya naanị ihe anyị nwere wee lelee ma anyị nwere akụrụngwa zuru oke. Nke ahụ bụ ezigbo ajụjụ.

Mgbe anyị na-eme ugbua họrọ ihe mkpofu ma anyị nwere, dịka ọmụmaatụ, ọkọlọtọ ehichapụ

Nke a bụ ihe autovacuum na-eme ozugbo na Postgres.

Oh, ọ na-eme ya?

Autovacuum bụ onye na-achịkọta ihe mkpofu.

Daalụ!

Daalụ maka akụkọ ahụ! Enwere nhọrọ iji chepụta nchekwa data ozugbo na nkewa n'ụzọ ga-eme ka ihe mkpofu niile na-asọ oyi site na tebụl isi ebe ruo n'akụkụ?

N'ezie nwere.

Ọ ga-ekwe omume mgbe ahụ ichebe onwe anyị ma ọ bụrụ na anyị akpọchiela tebụl na-ekwesịghị iji mee ihe?

N'ezie nwere. Mana ọ dị ka ajụjụ ọkụkọ na akwa. Ọ bụrụ na anyị niile maara ihe ga-eme n'ọdịnihu, mgbe ahụ, n'ezie, anyị ga-eme ihe niile dị mma. Ma azụmahịa na-agbanwe, enwere ogidi ọhụrụ, arịrịọ ọhụrụ. Ma mgbe ahụ - oops, anyị chọrọ iwepụ ya. Ma ọnọdụ a dị mma, na ndụ ọ na-eme, ma ọ bụghị mgbe niile. Mana n'ozuzu, ọ bụ ezi echiche. Naanị gbutuo ma ọ bụ ya.

isi: www.habr.com

Tinye a comment