Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

M na-atụ aro ka ị gụọ transcript nke akụkọ site na mmalite nke 2016 site na Andrey Salnikov "Mmehie ndị a na-ahụkarị na ngwa ndị na-eduga na bloat na postgresql"

N'ime akụkọ a, m ga-enyocha njehie ndị bụ isi na ngwa ndị na-ebilite na ọkwa nke ịmepụta na ide koodu ngwa. M ga-ewere naanị njehie ndị ahụ na-eduga bloat na Postgresql. Dị ka a na-achị, nke a bụ mmalite nke njedebe nke arụmọrụ nke usoro gị n'ozuzu ya, ọ bụ ezie na mbụ ọ dịghị ihe dị mkpa maka nke a bụ ihe a na-ahụ anya.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Obi dị m ụtọ ịnabata onye ọ bụla! Akụkọ a adịghị ka teknụzụ dị ka nke gara aga sitere n'aka onye ọrụ ibe m. A na-ezubere akụkọ a maka ndị mmepe sistemu azụ n'ihi na anyị nwere ọnụ ọgụgụ buru ibu nke ndị ahịa. Ha niile na-emehiekwa otu ihe. Aga m agwa gị gbasara ha. M ga-akọwa ihe na-egbu egbu na ihe ọjọọ ndị a ndudue na-eduga.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Gịnị mere e ji mehie ihe? A na-eme ha n'ihi ihe abụọ: na enweghị usoro, ma eleghị anya ọ ga-arụ ọrụ na n'ihi amaghị usoro ụfọdụ nke na-eme na ọkwa dị n'etiti nchekwa data na ngwa, yana na nchekwa data n'onwe ya.

Aga m enye gị ihe atụ atọ nwere foto jọgburu onwe ya nke otú ihe ọjọọ si enweta. Aga m agwa gị nkenke maka usoro na-eme ebe ahụ. Na otu esi emeso ha, mgbe ha mere, na ụzọ mgbochi iji gbochie mmejọ. Aga m agwa gị gbasara ngwaọrụ inyeaka ma nye njikọ bara uru.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

M na-eji nchekwa data ebe m nwere tebụl abụọ. Otu efere nwere akaụntụ ndị ahịa, nke ọzọ nwere azụmahịa na akaụntụ ndị a. Na ụfọdụ ugboro anyị na-emelite itule na ndị a akaụntụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Data mbụ nke efere: ọ dị obere, 2 MB. Oge nzaghachi maka nchekwa data na kpọmkwem maka akara ahụ dịkwa oke mma. Na ezigbo ibu - arụ ọrụ 2 kwa nkeji dị ka efere ahụ si dị.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Site na akụkọ a, m ga-egosi gị eserese ka ị wee ghọta nke ọma ihe na-eme. A ga-enwe ihe mmịfe abụọ nwere eserese mgbe niile. Ihe mmịfe mbụ bụ ihe na-eme n'ozuzu na ihe nkesa.

Na ọnọdụ a, anyị na-ahụ na anyị nwere n'ezie obere akara. Ndekọ aha dị obere na 2 MB. Nke a bụ eserese mbụ n'aka ekpe.

Nkezi oge nzaghachi na ihe nkesa dịkwa kwụsiri ike ma dị mkpụmkpụ. Nke a bụ eserese dị n'elu aka nri.

Eserese aka ekpe dị ala na-egosi azụmahịa kacha ogologo. Anyị na-ahụ na a na-emecha azụmahịa ngwa ngwa. Na autovacuum anaghị arụ ọrụ ebe a, n'ihi na ọ bụ ule mmalite. Ọ ga-anọgide na-arụ ọrụ na ọ ga-abara anyị uru.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ihe mmịfe nke abụọ ga-adị mgbe niile maka efere a na-anwale. N'ọnọdụ a, anyị na-emelite nkwụnye ego nke onye ahịa mgbe niile. Anyị na-ahụkwa na nkezi oge nzaghachi maka ọrụ mmelite dị ezigbo mma, ihe na-erughị otu millisecond. Anyị na-ahụ na processor akụrụngwa (nke a bụ elu aka nri graph) na-erepịakwa evenly na nnọọ obere.

Eserese aka nri nke ala na-egosi oke ọrụ na ebe nchekwa diski anyị na-aga na-achọ ahịrị anyị chọrọ tupu imelite ya. Na ọnụ ọgụgụ nke arụmọrụ dị ka ihe ịrịba ama bụ 2 kwa sekọnd, dị ka m kwuru na mmalite.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ma ugbu a, anyị nwere ọdachi. N'ihi ihe ụfọdụ enwere azụmahịa echefuru ogologo oge. Ihe kpatara ya na-abụkarị banal:

  • Otu n'ime ihe a na-ahụkarị bụ na anyị malitere ịnweta ọrụ mpụga na koodu ngwa. Na ọrụ a anaghị aza anyị. Ya bụ, anyị meghere azụmahịa, mee mgbanwe na nchekwa data wee si na ngwa ahụ gụọ akwụkwọ ozi ma ọ bụ gaa na ọrụ ọzọ n'ime akụrụngwa anyị, n'ihi ihe ụfọdụ ọ naghị azaghachi anyị. Na nnọkọ anyị rapaara n'ọnọdụ a na-amaghị mgbe a ga-edozi ya.
  • Ọnọdụ nke abụọ bụ mgbe mwepu mere na koodu anyị n'ihi ihe ụfọdụ. Na wezuga anyị emeghị ka mmechi nke azụmahịa ahụ hazie. Ma anyị kwụsịrị na nnọkọ nghọta na azụmahịa mepere emepe.
  • Na nke ikpeazụ bụkwa a pụtara nkịtị ikpe. Nke a bụ koodu adịghị mma. Ụfọdụ frameworks na-emepe azụmahịa. Ọ kwụgidere, ma ị nwere ike ịmaghị n'ime ngwa na ị nwere ya.

Ebee ka ihe ndị dị otú ahụ na-eduga?

Ruo n'ókè na tebụl na ndenye aha anyị na-amalite ịza nke ukwuu. Nke a bụ kpọmkwem otu mmetụta bloat. Maka nchekwa data, nke a ga-apụta na oge nzaghachi nchekwa data ga-abawanye nke ukwuu na ibu dị na nchekwa data ga-abawanye. N'ihi ya, ngwa anyị ga-ata ahụhụ. N'ihi na ọ bụrụ na i jiri 10 milliseconds na koodu gị na arịrịọ maka nchekwa data, 10 milliseconds na mgbagha gị, mgbe ahụ ọrụ gị were 20 milliseconds iji wuchaa. Ma ugbu a, ọnọdụ gị ga-adị nnọọ mwute.

Ka anyị hụkwa ihe merenụ. Eserese aka ekpe nke ala na-egosi na anyị nwere azụmahịa ogologo oge. Ọ bụrụkwa na anyị elee n’elu eserese aka ekpe, anyị ga-ahụ na nha tebụl anyị si na megabyte abụọ mali na mberede 300 megabytes. N'otu oge ahụ, ọnụọgụ data dị na tebụl agbanwebeghị, ya bụ, enwere nnukwu ihe mkpofu n'ebe ahụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ọnọdụ izugbe gbasara nkezi oge nzaghachi nkesa agbanweela site na ọtụtụ iwu nke ịdị ukwuu. Ya bụ, arịrịọ niile dị na ihe nkesa ahụ malitere ịdaba kpamkpam. Ma n'otu oge ahụ, a malitere usoro Postgres dị n'ime n'ụdị autovacuum, nke na-agbalị ime ihe na-eri ihe.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kedu ihe na-eme na akara anyị? Otu ihe. Nkezi oge nzaghachi anyị dị ka akara si dị awụlila ọtụtụ usoro ịdị ukwuu. Kpọmkwem n'ihe gbasara ihe eji eme ihe, anyị na-ahụ na ibu na processor abawanyela nke ukwuu. Nke a bụ eserese dị n'elu aka nri. Ma ọ abawanyela n'ihi na processor nwere ịhazi site na ụyọkọ ahịrị na-abaghị uru na-achọ nke achọrọ. Nke a bụ eserese aka nri ala. N'ihi ya, ọnụ ọgụgụ anyị nke oku kwa sekọnd malitere ịdaba nke ukwuu, n'ihi na nchekwa data enweghị oge iji hazie otu ọnụ ọgụgụ nke arịrịọ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Anyị kwesịrị ịdịghachi ndụ. Anyị na-aga online wee chọpụta na ogologo azụmahịa na-eduga ná nsogbu. Anyị na-achọta ma gbuo azụmahịa a. Na ihe niile na-aghọ anyị nkịtị. Ihe niile na-arụ ọrụ dị ka o kwesịrị.

Anyị dara jụụ, ma mgbe obere oge gasịrị, anyị na-amalite ịhụ na ngwa ahụ anaghị arụ ọrụ n'otu ụzọ ahụ dị ka tupu ihe mberede ahụ. A ka na-ahazi arịrịọ ndị ahụ iji nwayọ nwayọ, yana jiri nwayọ nwayọ. Otu na ọkara ruo ugboro abụọ ji nwayọ nwayọ kpọmkwem n'ihe atụ m. Ibu dị na ihe nkesa ahụ dịkwa elu karịa ka ọ dị tupu ihe mberede ahụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Na ajụjụ a: "Gịnị na-eme na isi n'oge a?" Na ọnọdụ na-esonụ na-eme na isi. Na eserese azụmahịa ị nwere ike ịhụ na ọ kwụsịrị ma ọ nweghị azụmahịa ọ bụla na-adịte aka. Ma nha akara ngosi ahụ mụbara nke ukwuu n'oge ihe mberede ahụ. Ma kemgbe ahụ, ha ebelatabeghị. Nkezi oge na ntọala akwụsịla. Azịza ya dịkwa ka ọ na-abịa nke ọma n'ọsọ nke anyị na-anakwere. Autovacuum ghọrọ ihe na-arụsi ọrụ ike ma malite ime ihe na ihe ịrịba ama ahụ, n'ihi na ọ dị mkpa ka ịchachaa data ndị ọzọ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kpọmkwem, dị ka efere ule na akaụntụ, ebe anyị na-agbanwe nguzozi: oge ​​nzaghachi maka arịrịọ yiri ka ọ laghachiri na nkịtị. Ma n'eziokwu ọ dị otu ugboro na ọkara karịa.

Na site na ibu na processor, anyị na-ahụ na ibu na processor adịghị alaghachi na achọrọ uru tupu okuku. Na ihe kpatara ya na-edina kpọmkwem na ala nri eserese. Enwere ike ịhụ na a na-achọ ụfọdụ ebe nchekwa ebe ahụ. Ya bụ, ịchọta ahịrị achọrọ, anyị na-emebi ihe onwunwe nke ihe nkesa nchekwa data mgbe anyị na-edozi data na-abaghị uru. Ọnụọgụ nke azụmahịa kwa nkeji akwụsịla.

N'ozuzu dị mma, ma ọnọdụ ahụ dị njọ karịa ka ọ dị. Kpochapụ mmebi nchekwa data dị ka nsonaazụ ngwa anyị na-arụ ọrụ na nchekwa data a.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Na iji ghọta ihe na-eme ebe ahụ, ọ bụrụ na ịnọghị na akụkọ gara aga, ugbu a ka anyị nweta ntakịrị echiche. Ozizi gbasara usoro ime. Gịnị kpatara oghere ụgbọ ala na gịnị ka ọ na-eme?

N'ụzọ nkịtị nkenke maka nghọta. N'oge ụfọdụ anyị nwere tebụl. Anyị nwere ahịrị na tebụl. Ahịrị ndị a nwere ike ịdị na-arụ ọrụ, dị ndụ, yana ihe anyị chọrọ ugbu a. Akara ha na akwụkwọ ndụ akwụkwọ ndụ na foto a. E nwekwara ahịrị ndị a rụpụtaralarị, emelitere, na ndenye ọhụrụ pụtara na ha. Na ha na-akara na ha anaghịzi amasị nchekwa data. Mana ha nọ na tebụl n'ihi njirimara Postgres.

Gịnị mere i ji chọọ oghere ụgbọ ala? N'oge ụfọdụ, autovacuum na-abịa, banye na nchekwa data wee jụọ ya: "Biko nye m id nke azụmahịa kacha ochie nke mepere ugbu a na nchekwa data." Ebe nchekwa data weghachiri id a. Na autovacuum, na-adabere na ya, na-esi na ahịrị ndị dị na tebụl. Ma ọ bụrụ na ọ na-ahụ na ụfọdụ ahịrị gbanwere site ọtụtụ ochie azụmahịa, mgbe ahụ o nwere ikike akara ha dị ka ahịrị anyị nwere ike iji ọzọ n'ọdịnihu site na-ede ọhụrụ data n'ebe ahụ. Nke a bụ usoro ndabere.

N'oge a, anyị na-aga n'ihu na-arụ ọrụ na nchekwa data ma nọgide na-eme mgbanwe ụfọdụ na tebụl. Na ahịrị ndị a, nke anyị nwere ike iji mee ihe ọzọ, anyị na-ede data ọhụrụ. Ya mere, anyị na-enweta okirikiri, ya bụ, mgbe ụfọdụ ahịrị ochie nwụrụ anwụ na-apụta n'ebe ahụ, kama ha, anyị na-edetu ahịrị ọhụrụ anyị chọrọ. Ma nke a bụ ọnọdụ nkịtị maka PostgreSQL ịrụ ọrụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kedu ihe mere n'oge ihe mberede ahụ? Kedu ka usoro a si mee ebe ahụ?

Anyị nwere akara n'ọnọdụ ụfọdụ, ụfọdụ dị ndụ, ụfọdụ ahịrị nwụrụ anwụ. Oghere ụgbọ ala abịala. Ọ jụrụ ebe nchekwa data ihe azụmahịa anyị kacha ochie na ihe id bụ. Enwetara m id a, nke nwere ike ịbụ ọtụtụ awa gara aga, ikekwe nkeji iri gara aga. Ọ dabere na ibu dị arọ ị nwere na nchekwa data gị. Ọ gara ịchọ ahịrị ndị ọ nwere ike kaa akara ka ejirigharịa ya. Ma ahụghị m ahịrị ndị dị otú ahụ na tebụl anyị.

Ma n'oge a, anyị na-anọgide na-arụ ọrụ na tebụl. Anyị na-eme ihe n'ime ya, melite ya, gbanwee data. Kedu ihe nchekwa data kwesịrị ime n'oge a? Ọ nweghị nhọrọ ọzọ ma ọ bụghị ịgbakwunye ahịrị ọhụrụ na njedebe nke tebụl dị ugbu a. Ya mere, anyị na tebụl size amalite zaa.

N'ezie, anyị chọrọ ahịrị ndụ ndụ ka ọ rụọ ọrụ. Ma n'oge nsogbu dị otú ahụ, ọ na-apụta na pasent nke ahịrị akwụkwọ ndụ akwụkwọ ndụ dị oke ala na tebụl dum.

Ma mgbe anyị na-eme ajụjụ, nchekwa data ga-agafe na ahịrị niile: ma uhie na akwụkwọ ndụ akwụkwọ ndụ, iji chọta ahịrị achọrọ. Na mmetụta nke ịgbanye tebụl na data na-abaghị uru na-akpọ "bloat", nke na-erikwa ohere diski anyị. Cheta, ọ bụ 2 MB, ọ ghọrọ 300 MB? Ugbu a gbanwee megabyte ka ọ bụrụ gigabytes, ị ga-atụfu akụrụngwa diski gị niile ngwa ngwa.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Olee ihe ga-esi na ya pụta?

  • N'ihe atụ m, tebụl na index toro ugboro 150. Ụfọdụ n'ime ndị ahịa anyị enweela ikpe na-egbu egbu karịa mgbe ha malitere ịgbachapụ oghere diski.
  • Ogo nke tebụl n'onwe ya agaghị ebelata. Autovacuum n'ọnọdụ ụfọdụ nwere ike ebipụ ọdụ nke tebụl ma ọ bụrụ na enwere naanị ahịrị nwụrụ anwụ. Ma ebe ọ bụ na a na-enwe ntụgharị mgbe niile, otu ahịrị akwụkwọ ndụ akwụkwọ ndụ nwere ike ifriizi na njedebe ma ghara imelite ya, ebe ndị ọzọ niile ga-ede ebe na mmalite nke efere ahụ. Ma nke a bụ ihe omume a na-atụghị anya ya na tebụl gị n'onwe ya ga-adaba na nha, n'ihi ya ị gaghị atụ anya ya.
  • Ebe nchekwa data kwesịrị ịhazi site na ụyọkọ ahịrị na-abaghị uru. Anyị na-emefusị akụ diski, anyị na-emefusị akụrụngwa processor na ọkụ eletrik.
  • Na nke a na-emetụta ngwa anyị ozugbo, n'ihi na ọ bụrụ na mmalite anyị nọrọ 10 milliseconds na arịrịọ ahụ, 10 milliseconds na koodu anyị, mgbe ahụ n'oge mkpọka anyị malitere imefu nke abụọ na arịrịọ na 10 milliseconds na koodu, i.e. usoro nke ịdị ukwuu na arụmọrụ ngwa belatara. Ma mgbe e mechara ihe mberede ahụ, anyị malitere imefu milliseconds 20 na arịrịọ, 10 milliseconds na koodu. Nke a pụtara na anyị ka dara otu ugboro na ọkara na nrụpụta. Na nke a niile bụ n'ihi otu azụmahịa nke jụrụ oyi, ikekwe site n'aka anyị kpatara.
  • Na ajụjụ a: "Olee otú anyị nwere ike isi nwetaghachi ihe niile?" nke mere na ihe niile dị mma na anyị na arịrịọ na-abata ngwa ngwa dị ka tupu ihe mberede ahụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Maka nzube a, e nwere usoro ọrụ ụfọdụ nke a na-arụ.

Nke mbụ, anyị kwesịrị ịchọta tebụl ndị nwere nsogbu na-agbaze. Anyị na-aghọta na na tebụl ụfọdụ, ndekọ na-arụ ọrụ karịa, na ndị ọzọ na-adịghị arụ ọrụ. Na nke a anyị na-eji ndọtị pgstattuple. Site n'itinye ndọtị a, ị nwere ike dee ajụjụ ga-enyere gị aka ịchọta tebụl na-agbaze nke ọma.

Ozugbo ịchọtara tebụl ndị a, ịkwesịrị ịpịkọta ha. Enweelarị ngwaọrụ maka nke a. Na ụlọ ọrụ anyị anyị na-eji ngwá ọrụ atọ. Nke mbụ bụ VACUUM FULL arụnyere n'ime ya. Ọ dị obi ọjọọ, obi ọjọọ na onye na-enweghị obi ebere, ma mgbe ụfọdụ ọ na-aba uru nke ukwuu. Pg_repack и pgcompactable - Ndị a bụ ngwa ndị ọzọ maka mkpakọ tebụl. Ha na-ejikwa nlezianya na-emeso nchekwa data.

A na-eji ha dabere na ihe ga-adabara gị mma. Mana m ga-agwa gị gbasara nke a na njedebe. Isi ihe bụ na e nwere ngwá ọrụ atọ. Enwere ọtụtụ nhọrọ.

Mgbe anyị mezichara ihe niile ma hụ na ihe niile dị mma, anyị ga-amarịrị ka anyị ga-esi gbochie ọnọdụ a n'ọdịnihu:

  • Enwere ike igbochi ya ngwa ngwa. Ịkwesịrị inyocha oge nnọkọ na sava Master. Karịsịa dị ize ndụ sessions na-abaghị uru na azụmahịa ala. Ndị a bụ ndị meghere azụmahịa, mee ihe wee pụọ, ma ọ bụ kwụgidere, furu efu na koodu ahụ.
  • Maka gị, dị ka ndị mmepe, ọ dị mkpa ịnwale koodu gị mgbe ọnọdụ ndị a bilitere. Ọ naghị esiri ike ime. Nke a ga-abụ nlele bara uru. Ị ga-ezere ọnụ ọgụgụ buru ibu nke nsogbu "ụmụaka" metụtara ogologo azụmahịa.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Na eserese ndị a, achọrọ m igosi gị otú akara na omume nke nchekwa data si gbanwee mgbe m gachara akara na VACUUM FULL na nke a. Nke a abụghị mmepụta maka m.

Ogo tebụl ahụ laghachiri ozugbo n'ọnọdụ ọrụ ya nke megabyte ole na ole. Nke a emetụtaghị nkezi oge nzaghachi maka ihe nkesa ahụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Mana kpọmkwem maka akara ule anyị, ebe anyị na-emelite nguzozi akaụntụ, anyị na-ahụ na nkezi oge nzaghachi maka arịrịọ imelite data dị na akara ahụ belatara ka ọ bụrụ ọkwa mberede. Akụrụngwa ndị nrụpụtara riri iji mezue arịrịọ a gbadara na ọkwa tupu ihe mberede. Na eserese aka nri nke ala na-egosi na ugbu a, anyị na-ahụ kpọmkwem ahịrị anyị chọrọ ozugbo, na-agaghị agafe n'okpo nke ahịrị ndị nwụrụ anwụ nke dị n'ebe ahụ tupu e jikọta tebụl. Na nkezi oge arịrịọ nọgidere na ihe dịka otu ọkwa. Mana ebe a enwere m njehie na ngwaike m.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Nke a bụ ebe akụkọ mbụ na-agwụ. Ọ bụ nke a na-ahụkarị. Na ọ na-eme onye ọ bụla, n'agbanyeghị ahụmahụ onye ahịa na otú ndị mmemme si eru eru. N'oge na-adịghị, nke a na-eme.

Akụkọ nke abụọ, nke anyị na-ekesa ibu ma kwalite akụrụngwa nkesa

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

  • Anyị etoola ma bụrụ ezigbo ụmụ okorobịa. Ma anyị ghọtara na anyị nwere oyiri na ọ ga-adị mma ka anyị dozie ibu: degara Nna-ukwu akwụkwọ, ma gụọ site na oyiri ahụ. Na-abụkarị ọnọdụ a na-ebilite mgbe anyị chọrọ ịkwadebe ụfọdụ akụkọ ma ọ bụ ETL. Na azụmahịa nwere nnọọ obi ụtọ na nke a. Ọ chọrọ n'ezie akụkọ dị iche iche nwere ọtụtụ nyocha dị mgbagwoju anya.
  • Akụkọ na-ewe ọtụtụ awa, n'ihi na enweghị ike ịgbakọ nyocha dị mgbagwoju anya na milliseconds. Anyị, dị ka ụmụ okorobịa nwere obi ike, na-ede koodu. N'ime ngwa ntinye anyị na-eme ndekọ na Nna-ukwu, ma mebie akụkọ na oyiri.
  • Na-ekesa ibu.
  • Ihe niile na-arụ ọrụ nke ọma. Anyị dị mma.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Oleekwa otú ọnọdụ a dị? Kpọmkwem na eserese ndị a, atụkwasịkwara m ogologo oge azụmahịa site na oyiri maka oge azụmahịa ahụ. Eserese ndị ọzọ niile na-ezo aka na naanị ihe nkesa Master.

N'oge a, bọọdụ akụkọ m etoola. E nwere ọtụtụ n'ime ha. Anyị na-ahụ na nkezi oge nzaghachi nkesa kwụsiri ike. Anyị na-ahụ na na oyiri anyị nwere a ogologo-na-agba ọsọ azụmahịa na-agba ọsọ maka 2 awa. Anyị na-ahụ ọrụ dị jụụ nke autovacuum, nke na-arụ ọrụ ahịrị nwụrụ anwụ. Na ihe niile dị mma na anyị.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kpọmkwem, dịka efere a nwalere si dị, anyị na-aga n'ihu na-emelite nha akaụntụ ebe ahụ. Ma anyị nwekwara oge nzaghachi kwụsiri ike maka arịrịọ, oriri akụrụngwa kwụsiri ike. Ihe niile dị anyị mma.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ihe niile dị mma ruo mgbe akụkọ ndị a na-amalite ịgbaghachi azụ n'ihi esemokwu na mmegharị. Ha na-agbakwa ọkụ azụ n'oge ọ bụla.

Anyị na-aga online wee malite ịgụ ihe kpatara nke a ji eme. Anyị na-achọtakwa ihe ngwọta.

Ihe ngwọta nke mbụ bụ ịbawanye nkwụghachi ntugharị. Anyị maara na akụkọ anyị na-ewe awa 3. Anyị na-edobe igbu oge ka ọ bụrụ awa 3. Anyị na-ebupụta ihe niile, mana anyị ka na-enwe nsogbu na akụkọ na-akagbu mgbe ụfọdụ.

Anyị chọrọ ka ihe niile zuo oke. Anyị na-arịgo n'ihu. Anyị hụkwara ọnọdụ dị mma na ịntanetị - hot_standby_feedback. Ka anyị gbanye ya. Hot_standby_feedback na-enye anyị ohere ijide autovacuum na Master. Ya mere, anyị na-ekpochapụ kpamkpam replication esemokwu. Na ihe niile na-arụ ọrụ nke ọma anyị na akụkọ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kedu ihe na-eme na ihe nkesa Master n'oge a? Anyị na-enwekwa nsogbu na ihe nkesa Master. Ugbu a, anyị na-ahụ eserese mgbe enwere m ntọala abụọ a. Na anyị na-ahụ na nnọkọ na anyị oyiri n'ụzọ ụfọdụ malitere emetụta ọnọdụ na Master nkesa. Ọ na-enwe mmetụta n'ihi na ọ kwụsịrị autovacuum, nke na-ekpochapụ ahịrị ndị nwụrụ anwụ. Ogo tebụl anyị arịgoro ọzọ. Nkezi oge mmezu ajụjụ n'ofe nchekwa data niile gbagoro elu. Ndị na-anya ụgbọ ala mechiri ntakịrị.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kpọmkwem, site na efere anyị, anyị na-ahụ na mmelite data dị na ya makwara elu na mbara igwe. Nri CPU abawanyela nke ukwuu. Anyị na-agabigakwa ọtụtụ ahịrị ndị nwụrụ anwụ na-abaghị uru. Na oge nzaghachi maka akara a na ọnụ ọgụgụ nke azụmahịa agbadala.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Kedu ka ọ ga-adị ma ọ bụrụ na anyị amaghị ihe m na-ekwu na mbụ?

  • Anyị na-amalite ịchọ nsogbu. Ọ bụrụ na anyị zutere nsogbu na akụkụ nke mbụ, anyị maara na nke a nwere ike ịbụ n'ihi ogologo azụmahịa wee gaa na Nna-ukwu. Anyị nwere nsogbu na Nna-ukwu. Sausages ya. Ọ na-ekpo ọkụ, Nkezi Ibu ya dị ihe dị ka otu narị.
  • Arịrịọ enwere nwayọ, mana anyị ahụghị azụmahịa ọ bụla na-eme ogologo oge ebe ahụ. Anyị aghọtaghịkwa ihe ọ bụ. Anyị aghọtaghị ebe anyị ga-ele anya.
  • Anyị na-elele akụrụngwa nkesa. Ma eleghị anya, mwakpo anyị wakporo dara. Ma eleghị anya, osisi ncheta anyị agbanyụla ọkụ. Ee, ihe ọ bụla nwere ike ime. Mana mba, sava ndị ọhụrụ, ihe niile na-arụ ọrụ nke ọma.
  • Onye ọ bụla na-agba ọsọ: ndị nchịkwa, ndị mmepe na onye nduzi. Ọ dịghị ihe na-enyere aka.
  • Na mgbe ụfọdụ ihe niile na-amalite na mberede na-agbazi onwe ya.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

N'oge a, a na-ahazi arịrịọ dị na oyiri anyị wee hapụ ya. Anyị nwetara akụkọ ahụ. Azụmahịa ka nwere obi ụtọ. Dị ka ị pụrụ ịhụ, akara anyị etoola ọzọ ma ọ gaghị ada ada. Na eserese na sessions, M hapụrụ a mpempe nke ogologo azụmahịa a oyiri nke mere na ị nwere ike ikwu ogologo oge ọ na-ewe ruo mgbe ọnọdụ kwụsie ike.

Oge a agwụla. Na naanị mgbe oge ụfọdụ ihe nkesa na-abịa karịa ma ọ bụ obere n'usoro. Na nkezi oge nzaghachi maka arịrịọ na ihe nkesa Master na-alaghachi na nkịtị. N'ihi na, n'ikpeazụ, autovacuum nwere ohere ihichapụ na akara ndị a nwụrụ anwụ ahịrị. O wee malite ịrụ ọrụ ya. Na otú ngwa ngwa o si eme ya, ngwa ngwa anyị ga-enweta n'usoro.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Dị ka mbadamba nkume a nwalere, ebe anyị na-emelite nkwụnye ego akaụntụ, anyị na-ahụ kpọmkwem otu foto ahụ. Nkezi oge mmelite akaụntụ na-eji nwayọọ nwayọọ na-emezigharị. A na-ebelatakwa ihe ndị na-emepụta ihe na-eri. Na ọnụ ọgụgụ nke azụmahịa kwa sekọnd na-alaghachi na nkịtị. Ma ọzọ, anyị alaghachila n'ọnọdụ nkịtị, ọ bụghị otu ihe ahụ anyị mere tupu ihe mberede ahụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

N'ọnọdụ ọ bụla, anyị na-enweta drawdown arụmọrụ, dị ka ọ dị na nke mbụ, site na otu na ọkara ruo ugboro abụọ, na mgbe ụfọdụ ọzọ.

Ọ dị ka anyị emeela ihe niile nke ọma. Kesaa ibu. Akụrụngwa anaghị arụ ọrụ. Anyị kewara arịrịọ ndị ahụ dị ka uche anyị si dị, ma ihe niile gbanwere nke ọma.

  • Anaghị eme ka hot_standby_feedback? Ee, a naghị atụ aro ka ịgbanwuo ya n'enweghị ihe kpatara ya siri ike. N'ihi na ntụgharị a na-emetụta ihe nkesa Master ozugbo wee kwụsị ọrụ nke autovacuum ebe ahụ. Site n'ịkwalite ya na ụfọdụ oyiri na ichefu ya, ị nwere ike igbu Nna-ukwu wee nweta nnukwu nsogbu na ngwa ahụ.
  • Mụbaa max_standby_streaming_delay? Ee, maka akụkọ nke a bụ eziokwu. Ọ bụrụ na ị nwere akụkọ awa atọ ma ị chọghị ka ọ daa n'ihi esemokwu mmeghari, wee mee ka ọ dịkwuo ogologo oge. Akụkọ ogologo oge anaghị achọ data nke batara na nchekwa data ugbu a. Ọ bụrụ na ị nwere ya maka awa atọ, mgbe ahụ, ị ​​na-agba ya maka ụfọdụ oge data ochie. Maka gị, ma ọ bụrụ na ọ ga-egbu oge awa atọ ma ọ bụ awa isii agaghị eme ihe ọ bụla, mana ị ga-enweta akụkọ mgbe niile na ị gaghị enwe nsogbu ọ bụla na ha na-ada.
  • Dị ka o kwesịrị ịdị, ịkwesịrị ijikwa ogologo oge na oyiri, ọkachasị ma ọ bụrụ na ị kpebie ịme hot_standby_feedback na oyiri. N'ihi na ihe ọ bụla nwere ike ime. Anyị nyere onye mmepụta oyiri a ka o nwee ike nwalee arịrịọ ndị ahụ. O dere arịrịọ nzuzu. O weputara ya wee gaa ṅụọ tii, anyị wee nweta Nna-ukwu guzosiri ike. Ma ọ bụ ikekwe anyị na-etinye ngwa na-ezighi ezi n'ebe ahụ. Ọnọdụ ndị ahụ dịgasị iche iche. A ga-enyocharịrị nke ọma nke ọma dịka ọ dị na Nna-ukwu.
  • Ma ọ bụrụ na ị nwere ajụjụ ngwa ngwa na ogologo oge na oyiri, mgbe ahụ na nke a, ọ ka mma kewaa ha iji kesaa ibu ahụ. Nke a bụ njikọ maka streaming_delay. Maka ndị na-agba ọsọ, nwee otu oyiri nwere obere igbu oge. Maka arịrịọ mkpesa na-adịte aka, nwee oyiri nke nwere ike ịla azụ site na awa 6 ma ọ bụ otu ụbọchị. Nke a bụ ọnọdụ nkịtị kpamkpam.

Anyị na-ewepụ nsonaazụ ya n'otu ụzọ ahụ:

  • Anyị na-achọta tebụl ndị na-ekpo ọkụ.
  • Na anyị mpikota onu ya na kasị adaba ngwá ọrụ dabara anyị.

Akụkọ nke abụọ kwụsịrị ebe a. Ka anyị gaa n'ihu n'akụkọ nke atọ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ọzọkwa nnọọ nkịtị maka anyị nke anyị na-eme njem.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

  • Ngwaahịa ngwanrọ ọ bụla na-eto eto. Ihe ndị a chọrọ maka ya na-agbanwe. N'ọnọdụ ọ bụla, anyị chọrọ ịzụlite. Ọ na-eme na anyị kwesịrị imelite data dị na tebụl, ya bụ imelite mmelite n'ihe gbasara njem anyị maka ọrụ ọhụrụ anyị na-ewebata dị ka akụkụ nke mmepe anyị.
  • Ụdị data ochie adịghị mma. Ka anyị kwuo na anyị na-atụgharị na tebụl nke abụọ, ebe m nwere azụmahịa na akaụntụ ndị a. Ka anyị kwuo na ha nọ na rubles, anyị kpebiri ịbawanye izi ezi ma mee ya na kopecks. Maka nke a, anyị kwesịrị ime mmelite: mụbaa ubi na ego azụmahịa site na otu narị.
  • N'ụwa nke oge a, anyị na-eji ngwaọrụ njikwa ụdị nchekwa data akpaaka. Ka anyị kwuo Liquibase. Anyị na-edebanye aha ọpụpụ anyị ebe ahụ. Anyị na-anwale ya na ntọala ule anyị. Ihe niile dị mma. Mmelite na-agabiga. Ọ na-egbochi ọrụ ruo nwa oge, mana anyị na-enweta data emelitere. Ma anyị nwere ike ịmalite ọrụ ọhụrụ na nke a. A nwalere ihe niile wee lelee. A kwadoro ihe niile.
  • Anyị rụrụ ọrụ a haziri ahazi ma mee njem.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Nke a bụ mbugharị nwere mmelite ewepụtara n'ihu gị. Ebe ọ bụ na ndị a bụ azụmahịa akaụntụ m, efere ahụ bụ 15 GB. Ma ebe ọ bụ na anyị na-emelite ahịrị ọ bụla, anyị na-eji mmelite ahụ mee ka okpukpu abụọ dị okpukpu abụọ, n'ihi na anyị na-edegharị ahịrị ọ bụla.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

N'oge njem ahụ, anyị enweghị ike iji efere a mee ihe ọ bụla, n'ihi na arịrịọ niile a rịọrọ ya kwụ n'ahịrị wee chere ruo mgbe emechara mmelite a. Mana ebe a, achọrọ m ịdọrọ uche gị gaa na ọnụọgụ ndị dị na axis kwụ ọtọ. Ya bụ, anyị nwere nkezi arịrịọ oge tupu Mbugharị nke banyere 5 milliseconds na processor ibu, ọnụ ọgụgụ nke ngọngọ arụmọrụ maka ịgụ disk ebe nchekwa bụ ihe na-erughị 7,5.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Anyị mere njem ahụ ma nwee nsogbu ọzọ.

Mbugharị ahụ gara nke ọma, mana:

  • Ọrụ ochie na-ewe ogologo oge iji wuchaa.
  • Tebụl ahụ tolitere na nha ọzọ.
  • Ibu dị na ihe nkesa ahụ wee dị ukwuu karịa ka ọ dị na mbụ.
  • Ma, n'ezie, anyị ka na-arụ ọrụ na-arụ ọrụ nke ọma, anyị emeela ka ọ dịkwuo mma.

Na nke a bụ ọzọ bloat, nke ọzọ na-emebi ndụ anyị.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

N'ebe a, m gosipụtara na tebụl, dị ka ikpe abụọ gara aga, agaghị alaghachi na nha mbụ ya. Nkezi ibu nkesa yiri ka ọ zuru oke.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ma ọ bụrụ na anyị na-atụgharị na tebụl na akaụntụ, anyị ga-ahụ na nkezi oge arịrịọ amụbawo maka tebụl a. Ibu dị na processor na ọnụ ọgụgụ ahịrị edoziri na ebe nchekwa wụsara n'elu 7,5, mana ọ dị ala. Ma ọ na-awụlikwa elu ugboro 2 n'ihe banyere ndị nhazi, ugboro 1,5 n'ihe banyere ọrụ ngọngọ, ya bụ, anyị nwetara mmebi na arụmọrụ nkesa. Na n'ihi ya - mmebi nke arụmọrụ nke ngwa anyị. N'otu oge ahụ, ọnụọgụ oku ahụ dị ihe dịka otu ọkwa.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Na isi ihe ebe a bụ ịghọta otú e si eme ndị dị otú ahụ migrations n'ụzọ ziri ezi. Ọ dịkwa mkpa ka e mee ha. Anyị na-eme njem ndị a mara mma mgbe niile.

  • Mbugharị buru ibu dị otú ahụ anaghị eme ozugbo. Ha ga-abụrịrị ndị a na-achịkwa mgbe niile.
  • Nlekọta nke onye maara ihe chọrọ. Ọ bụrụ na ị nwere DBA na otu gị, hapụzie ka DBA mee ya. Ọ bụ ọrụ ya. Ọ bụrụ na ọ bụghị, mgbe ahụ ka onye kachasị nwee ahụmahụ mee ya, onye maara otú e si arụ ọrụ na ọdụ data.
  • Atụmatụ nchekwa data ọhụrụ, ọ bụrụgodị na anyị emelite otu kọlụm, anyị na-akwado oge niile n'usoro, ya bụ n'ihu tupu ewepụ ụdị ngwa ọhụrụ a:
  • A na-agbakwunye mpaghara ọhụrụ nke anyị ga-edekọ data emelitere.
  • Anyị na-ebufe data site na ubi ochie gaa na mpaghara ọhụrụ na obere akụkụ. Gịnị mere anyị ji eme nke a? Nke mbụ, anyị na-achịkwa usoro nke usoro a mgbe niile. Anyị maara na anyị ebufela ọtụtụ batches na anyị nwere ọtụtụ ndị fọdụrụ.
  • Na mmetụta nke abụọ dị mma bụ na n'etiti ụdị ọ bụla dị otú ahụ anyị na-emechi azụmahịa ahụ, mepee nke ọhụrụ, nke a na-enye ohere ka autovacuum rụọ ọrụ dịka efere ahụ si dị, akara akara ndị nwụrụ anwụ maka ijikwa ya.
  • Maka ahịrị ndị ga-apụta mgbe ngwa ahụ na-agba ọsọ (anyị ka nwere ngwa ochie na-agba ọsọ), anyị na-agbakwunye ihe na-akpalite na-ede ụkpụrụ ọhụrụ na mpaghara ọhụrụ. N'ọnọdụ anyị, nke a bụ mmụba site na otu narị uru ochie.
  • Ọ bụrụ na anyị na-esi ike kpamkpam na-achọ otu ubi, mgbe ahụ na-emecha nke niile migrations na tupu tụgharịa si a ọhụrụ ụdị nke ngwa, anyị nnọọ rename ubi. A na-enye ndị ochie ụfọdụ aha ndị e chepụtara echepụta, kpọgharịakwa ubi ọhụrụ ndị ahụ ka ọ bụrụ ndị ochie.
  • Naanị mgbe nke ahụ gasịrị, anyị na-amalite ụdị ngwa ọhụrụ.

Ma n'otu oge ahụ anyị agaghị enweta bloat ma ghara ịta ahụhụ n'ihe gbasara arụmọrụ.

Ebe a ka akụkọ nke atọ kwusiri.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat.sql

https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat_approx.sql

Ma ugbu a ntakịrị nkọwa banyere ngwaọrụ ndị m kwuru na akụkọ mbụ.

Tupu ịchọọ bloat, ị ga-etinyerịrị ndọtị ahụ pgstattuple.

Ka ị ghara iwepụta ajụjụ, anyị edeelarị ajụjụ ndị a n'ọrụ anyị. Ị nwere ike iji ha. Enwere arịrịọ abụọ ebe a.

  • Nke mbụ na-ewe ogologo oge iji na-arụ ọrụ, ma ọ ga-egosi gị kpọmkwem bloat ụkpụrụ si na tebụl.
  • Nke abụọ na-arụ ọrụ ngwa ngwa ma na-arụ ọrụ nke ọma mgbe ọ dị mkpa ka ị nyochaa ngwa ngwa ma enwere bloat ma ọ bụ na ọ bụghị dị ka tebụl. I kwesịkwara ịghọta na afọ ntachi na-adị mgbe niile na tebụl Postgres. Nke a bụ akụkụ nke ụdị MVCC ya.
  • Na 20% bloat bụ ihe nkịtị maka tebụl n'ọtụtụ ọnọdụ. Ya bụ, ị gaghị echegbu onwe gị na ịpịkọta tebụl a.

Anyị chepụtara ka esi amata tebụl ndị fụrụ akpụ na data na-abaghị uru.

Ugbu a gbasara otu esi edozi bloat:

  • Ọ bụrụ na anyị nwere obere mbadamba na ezigbo diski, ya bụ, na mbadamba ihe ruru gigabyte, ọ ga-ekwe omume iji VACUUM FULL. Ọ ga-ewepụ gị mkpọchi pụrụ iche na tebụl maka sekọnd ole na ole ma dịkwa mma, mana ọ ga-eme ihe niile ngwa ngwa na ike ike. Kedu ihe VACUUM FULL na-eme? Ọ na-ewe mkpọchi pụrụ iche na tebụl wee degharịa ahịrị dị ndụ site na tebụl ochie n'ime tebụl ọhụrụ. Na n'ikpeazụ ọ na-anọchi ha. Ọ na-ehichapụ faịlụ ochie ma jiri nke ọhụrụ dochie ndị ochie. Mana maka ogologo oge nke ọrụ ya, ọ na-ewe mkpọchi pụrụ iche na tebụl. Nke a pụtara na ị nweghị ike iji tebụl a mee ihe ọ bụla: edekwala ya akwụkwọ, ma ọ bụ gụọ n'ime ya, ma ọ bụ gbanwee ya. Na VACUUM FULL chọrọ ohere diski agbakwunyere iji dee data.
  • Ngwá ọrụ na-esote pg_repack. Na ụkpụrụ ya, ọ dị nnọọ ka VACUUM FULL, n'ihi na ọ na-edegharịkwa data sitere na faịlụ ochie gaa na nke ọhụrụ ma dochie ha na tebụl. Mana n'otu oge ahụ, ọ naghị ewere mkpọchi pụrụ iche na tebụl na mmalite nke ọrụ ya, mana ọ na-ewe ya naanị n'oge ọ nwere data dị njikere iji dochie faịlụ ndị ahụ. Ihe achọrọ akụrụngwa diski ya yiri nke VACUUM FULL. Ịchọrọ ohere diski ọzọ, nke a na-adịkwa mkpa mgbe ụfọdụ ma ọ bụrụ na ị nwere terabyte tebụl. Ma agụụ na-agụ ya nke ukwuu n'ihi na ọ na-arụ ọrụ na I/O.
  • Uru nke atọ bụ pgcompactable. Ọ na-akpachapụ anya na akụrụngwa n'ihi na ọ na-arụ ọrụ dịka ụkpụrụ dịtụ iche si dị. Isi echiche nke pgcompacttable bụ na ọ na-ebugharị ahịrị niile dị ndụ na mmalite nke tebụl site na iji mmelite na tebụl. Na mgbe ahụ, ọ na-agba ọsọ a agụụ na tebụl a, n'ihi na anyị maara na anyị nwere ndụ ahịrị na mmalite na nwụrụ anwụ ahịrị na njedebe. Na oghere n'onwe ya na-ebipụ ọdụ a, ya bụ, ọ dịghị achọ ohere ọzọ diski. Ma n'otu oge ahụ, ọ ka nwere ike ịpịnye ya na ihe onwunwe.

Ihe niile nwere ngwaọrụ.

Njehie a na-ahụkarị na ngwa na-eduga bloat na postgresql. Andrey Salnikov

Ọ bụrụ na ịchọta isiokwu bloat ahụ na-adọrọ mmasị n'ihe gbasara imekwu n'ime, ebe a bụ ụfọdụ njikọ bara uru:

M gbalịrị ọzọ igosi akụkọ egwu maka ndị mmepe, n'ihi na ha bụ ndị ahịa anyị kpọmkwem nke ọdụ data na ha aghaghị ịghọta ihe na ihe omume na-eduga. Enwere m olileanya na m gara nke ọma. Daalụ maka itinye uche gị!

Ajụjụ gị

Daalụ maka akụkọ ahụ! Ị kwuru otú ị ga-esi amata nsogbu. Olee otú a pụrụ isi dọọ ha aka ná ntị? Ya bụ, enwere m ọnọdụ ebe a na-arịọ arịrịọ ọ bụghị naanị n'ihi na ha nwetara ụfọdụ ọrụ mpụga. Ndị a bụ naanị ụfọdụ njikọ anụ ọhịa. E nwere arịrịọ ndị dị nta, ndị na-adịghị emerụ ahụ́ bụ́ ndị kwụgburu otu ụbọchị, malitezie ime ihe efu. Ya bụ, yiri nnọọ ihe ị kọwara. Kedu ka ị ga-esi soro nke a? Nọdụ ala na-ekiri mgbe niile nke arịrịọ rapaara? Kedu ka esi egbochi nke a?

N'okwu a, nke a bụ ọrụ maka ndị nchịkwa nke ụlọ ọrụ gị, ọ bụghị maka DBA.

Abụ m onye nchịkwa.

PostgreSQL nwere nlele a na-akpọ pg_stat_activity nke na-egosi ajụjụ dị egwu. Ị ga-ahụkwa ogologo oge ọ kwụwara n'ebe ahụ.

A ga m abata wee lelee nkeji ise ọ bụla?

Hazie cron wee lelee. Ọ bụrụ na ị nwere arịrịọ ogologo oge, dee akwụkwọ ozi ma nke ahụ bụ ya. Ya bụ, ịkwesighi iji anya gị lee anya, enwere ike ịme ya na akpaghị aka. Ị ga-enweta akwụkwọ ozi, ị na-emeghachi omume na ya. Ma ọ bụ ị nwere ike gbaa na-akpaghị aka.

Enwere ihe doro anya kpatara nke a ji eme?

Edepụtala m ụfọdụ. Ihe atụ ndị ọzọ dị mgbagwoju anya. Na enwere ike inwe mkparịta ụka ruo ogologo oge.

Daalụ maka akụkọ ahụ! Achọrọ m ịkọwa maka uru pg_repack. Ọ bụrụ na ọ naghị eme mkpọchi naanị, mgbe ahụ ...

Ọ na-eme mkpọchi pụrụ iche.

... mgbe ahụ enwere m ike tufuo data. Ngwa m agaghị edekọ ihe ọ bụla n'oge a?

Mba, ọ na-arụ ọrụ were were na tebụl, i.e. pg_repack buru ụzọ nyefee ahịrị ndụ niile dị. Dị ka o kwesịrị ịdị, ụfọdụ ụdị ntinye na tebụl na-eme n'ebe ahụ. Ọ na-atụpụ ọdụ ọdụ a.

Ya bụ, ọ na-eme ya n'ikpeazụ?

N'ikpeazụ, ọ na-ewe mkpọchi pụrụ iche iji gbanwee faịlụ ndị a.

Ọ ga-adị ọsọ karịa VACUUM FULL?

VACUUM FULL, ozugbo ọ malitere, were mkpọchi pụrụ iche ozugbo. Ma ruo mgbe o mere ihe niile, ọ gaghị ekwe ka ọ laa. Na pg_repack na-ewe naanị mkpọchi naanị n'oge nnọchi faịlụ. N'oge a, ị gaghị ede ebe ahụ, mana data agaghị efu, ihe niile ga-adị mma.

Nnọọ! Ị kwuru maka ọrụ oghere ụgbọ ala. Enwere eserese nwere mkpụrụ ndụ ndekọ uhie, odo na akwụkwọ ndụ akwụkwọ ndụ. Ya bụ, ndị na-acha odo odo - o debere ha ka ehichapụ. N'ihi ya, e nwere ike ide ihe ọhụrụ n'ime ha?

Ee. Postgres anaghị ehichapụ ahịrị. O nwere nkọwa dị otú ahụ. Ọ bụrụ na anyị emelitere ahịrị, anyị kaa nke ochie ka ehichapụ. Id nke azụmahịa nke gbanwere ahịrị a pụtara n'ebe ahụ, anyị na-edekwa ahịrị ọhụrụ. Ma anyị nwere nnọkọ ndị nwere ike ịgụ ha. Mgbe ụfọdụ, ha na-aka nká. Na ihe kachasị mkpa ka autovacuum si arụ ọrụ bụ na ọ na-agafe ahịrị ndị a ma na-egosi na ha adịghị mkpa. Ma ị nwere ike idegharị data ebe ahụ.

Aghọtara m. Ma nke ahụ abụghị ihe ajụjụ ahụ gbasara. Emechaghị m. Ka anyị were na anyị nwere tebụl. Ọ nwere mpaghara nke agbanwe nha. Ọ bụrụkwa na m nwaa itinye ihe ọhụrụ, o nwere ike ọ gaghị adabara na cell ochie.

Mba, n'ọnọdụ ọ bụla emelitere ahịrị niile ebe ahụ. Postgres nwere ụdị nchekwa data abụọ. Ọ na-ahọrọ site na ụdị data. Enwere data echekwara ozugbo na tebụl, enwerekwa data tos. Ndị a bụ nnukwu data: ederede, json. A na-echekwa ha na efere dị iche iche. Na dị ka mbadamba nkume ndị a, otu akụkọ na bloat na-eme, ya bụ, ihe niile bụ otu. Edepụtara ha iche iche.

Daalụ maka akụkọ ahụ! Ọ bụ ihe a na-anakwere iji ajụjụ ngwụcha oge nkwupụta iji kpachie oge?

Dị nnọọ mma. Anyị na-eji nke a ebe niile. Ma ebe anyị enweghị ọrụ nke anyị, anyị na-enye nkwado dịpụrụ adịpụ, anyị nwere ọtụtụ ndị ahịa. Na onye ọ bụla nwere afọ ojuju kpamkpam na nke a. Ya bụ, anyị nwere ọrụ cron na-elele. A na-ekwenye naanị oge nke nnọkọ na onye ahịa, tupu nke anyị ekwenyeghị. Ọ nwere ike ịbụ otu nkeji, ọ nwere ike ịbụ nkeji iri. Ọ dabere na ibu dị na isi na ebumnuche ya. Mana anyị niile na-eji pg_stat_activity.

Daalụ maka akụkọ ahụ! Ana m agbalị itinye akụkọ gị na ngwa m. Ma ọ dị ka anyị na-amalite azụmahịa n'ebe nile, na-emecha ya n'ụzọ doro anya n'ebe nile. Ọ bụrụ na enwere mwepu, yabụ nlọghachi azụ ka na-eme. Ma malitezie iche echiche. E kwuwerị, azụmahịa ahụ nwere ike ọ gaghị amalite n'ụzọ doro anya. Nke a nwere ike ịbụ ihe ngosi nye nwa agbọghọ ahụ. Ọ bụrụ na m na-emelite ndekọ, azụmahịa ahụ ọ ga-amalite na PostgreSQL wee mezue naanị mgbe akwụsịla njikọ ahụ?

Ọ bụrụ na ị na-ekwu ugbu a banyere ọkwa ngwa, mgbe ahụ ọ dabere na ọkwọ ụgbọ ala ị na-eji, na ORM nke a na-eji. Enwere ọtụtụ ntọala ebe ahụ. Ọ bụrụ na ịgbanyere akpaaka, mgbe ahụ azụmahịa ga-amalite ebe ahụ wee mechie ozugbo.

Ya bụ, ọ na-emechi ozugbo emelitere?

Ọ dabere na ntọala. Aha m aha otu ntọala. Nke a bụ akpaaka emebere. Ọ bụ ihe a na-ahụkarị. Ọ bụrụ na enyere ya aka, mgbe ahụ azụmahịa ahụ emeghewo ma mechie. Ọ gwụla ma ị kwuru hoo haa "mmalite azụmahịa" na "njedebe azụmahịa", mana na-ewepụta arịrịọ n'ime nnọkọ ahụ.

Nnọọ! Daalụ maka akụkọ ahụ! Ka anyị were ya na anyị nwere nchekwa data nke na-azịza na ọzịza na mgbe ahụ ohere dị na ihe nkesa na-agwụ. Enwere ngwaọrụ iji dozie ọnọdụ a?

Oghere dị na ihe nkesa kwesịrị ka enyocha ya nke ọma.

Dịka ọmụmaatụ, DBA gara tii, nọ na ebe ntụrụndụ, wdg.

Mgbe a na-emepụta usoro faịlụ, ọ dịkarịa ala, a na-emepụta ohere nchekwa ebe ọ na-edeghị data.

Gịnị ma ọ bụrụ na ọ bụ kpam kpam n'okpuru efu?

N'ebe ahụ, a na-akpọ ya ebe nchekwa, ya bụ, enwere ike ịtọhapụ ya ma dabere n'otú e si kee ya, ị ga-enweta ohere efu. Site na ndabara amaghị m ole enwere. Na n'ọnọdụ ọzọ, nyefee diski ka ị nwee ohere iji rụọ ọrụ nrụpụta. Ị nwere ike ihichapụ ụfọdụ tebụl na-ekwe nkwa na ị gaghị achọ.

Enwere ngwaọrụ ndị ọzọ?

Ọ bụ ejiri aka mee ya mgbe niile. Na mpaghara ọ na-apụta ìhè ihe kacha mma ime ebe ahụ, n'ihi na ụfọdụ data dị oke egwu na ụfọdụ adịghị njọ. Na maka nchekwa data ọ bụla na ngwa na-arụ ọrụ na ya, ọ dabere na azụmahịa. A na-ekpebi ya mgbe niile na mpaghara.

Daalụ maka akụkọ ahụ! Enwere m ajụjụ abụọ. Mbụ, ị gosiri slides na-egosi na mgbe azụmahịa na-rapaara, ma tablespace size na index size eto. Na n'ihu na akụkọ ahụ, e nwere ụyọkọ akụrụngwa na-ebu mbadamba mbadamba. Kedu maka index?

Ha na-akwakọkwa ha.

Ma agụụ anaghị emetụta index?

Ụfọdụ na-arụ ọrụ na ndeksi. Dịka ọmụmaatụ, pg_rapack, pgcompacttable. Oghere ahụ na-emegharị index ma na-emetụta ha. Na VACUUM FULL echiche bụ idegharị ihe niile, ya bụ na ọ na-arụ ọrụ na onye ọ bụla.

Na ajụjụ nke abụọ. Aghọtaghị m ihe kpatara akụkọ gbasara replicas ji adabere na mmegharị ahụ n'onwe ya. Ọ dị m ka a na-agụ akụkọ, na ntinyegharị bụ dee.

Kedu ihe na-ebute esemokwu mmeghari? Anyị nwere Nna-ukwu nke usoro na-ewere ọnọdụ. Anyị nwere oghere ụgbọ ala na-aga. Kedu ihe autovacuum na-eme n'ezie? Ọ na-egbutu ahịrị ụfọdụ ochie. Ọ bụrụ na n'oge a anyị nwere arịrịọ na oyiri na-agụ ndị a ochie ahịrị, na Master ọnọdụ mere na autovacuum akara ndị a ahịrị dị ka o kwere maka overwriting, mgbe ahụ, anyị overwrote ha. Ma anyị nwetara ngwugwu data, mgbe anyị kwesịrị idegharị ahịrị ndị ahụ nke arịrịọ ahụ chọrọ na oyiri, usoro mmegharị ahụ ga-echere oge nkwụsị nke ị haziri. Mgbe ahụ PostgreSQL ga-ekpebi ihe dị ya mkpa karịa. Na mmegharị ahụ dị ya mkpa karịa arịrịọ ahụ, ọ ga-agbapụkwa arịrịọ ahụ iji mee mgbanwe ndị a na oyiri.

Andrey, enwere m ajụjụ. Eserese ndị a magburu onwe ya nke ị gosipụtara n'oge ngosi, ihe ndị a ọ bụ n'ihi ọrụ nke ụdị ọrụ nke gị? Kedu ka e si mee eserese ndị ahụ?

Nke a bụ ọrụ Okemeter.

Nke a ọ bụ ngwaahịa azụmaahịa?

Ee. Nke a bụ ngwaahịa azụmahịa.

isi: www.habr.com

Tinye a comment