Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ke khothaletsa hore u bale sengoloa sa tlaleho ho tloha qalong ea 2016 ke Andrey Salnikov "Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ka postgresql"

Tlalehong ena, ke tla sekaseka liphoso tse ka sehloohong lits'ebetsong tse hlahang sethaleng sa ho qapa le ho ngola khoutu ea kopo. 'Me ke tla nka feela liphoso tse lebisang ho bloat ho Postgresql. Joalo ka molao, ena ke qalo ea pheletso ea ts'ebetso ea sistimi ea hau ka kakaretso, leha qalong ho ne ho se litlhokahalo tsa sena tse neng li bonahala.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ke thabela ho amohela bohle! Tlaleho ena ha se ea tekheniki joalo ka ea pele e tsoang ho mosebetsi-'moho le 'na. Tlaleho ena e lebisitsoe haholo ho baetsi ba sistimi ea backend hobane re na le palo e kholo ea bareki. Mme kaofela ba etsa diphoso tse tshwanang. Ke tla u bolella ka tsona. Ke tla hlalosa hore na liphoso tsena li lebisa ho lintho life tse bolaeang le tse mpe.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ke hobane'ng ha liphoso li etsoa? Li etsoa ka mabaka a mabeli: ka tšohanyetso, mohlomong e tla sebetsa le ka lebaka la ho hloka tsebo ea mekhoa e meng e hlahang boemong bo pakeng tsa database le kopo, hammoho le ho database ka boeona.

Ke tla u fa mehlala e meraro e nang le litšoantšo tse mpe tsa kamoo lintho li ileng tsa mpefala kateng. Ke tla u bolella ka bokhutšoanyane ka mochine o etsahalang moo. Le mokhoa oa ho sebetsana le tsona, ha li etsahetse, le hore na ke mekhoa efe ea thibelo e ka sebelisoang ho thibela liphoso. Ke tla u bolella ka lisebelisoa tse thusang le ho fana ka lihokelo tse sebetsang.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ke ne ke sebelisa database ea liteko moo ke neng ke e-na le litafole tse peli. Letlapa le le leng le nang le li-account tsa bareki, le leng le na le li-transaction ho li-account tsena. 'Me ka makhetlo a mang re ntlafatsa li-balance tsa li-account tsena.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Lintlha tsa pele tsa poleiti: e nyane haholo, 2 MB. Nako ea karabelo bakeng sa database le ka ho khetheha bakeng sa lets'oao le eona e ntle haholo. 'Me mojaro o motle - ts'ebetso ea 2 ka motsotsoana ho latela poleiti.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

'Me ka tlaleho ena ke tla u bontša li-graph e le hore u ka utloisisa hantle se etsahalang. Ho tla dula ho na le dilaete tse 2 tse nang le dikerafo. Slide ea pele ke se etsahalang ka kakaretso ho seva.

'Me boemong bona, re bona hore re hlile re na le letšoao le lenyenyane. Index e nyane ho 2 MB. Ena ke kerafo ea pele ka ho le letšehali.

Karolelano ea nako ea karabo ho seva e boetse e tsitsitse ebile e khutšoanyane. Ena ke kerafo e kaholimo ho le letona.

Kerafo e tlase ka ho le letšehali e bonts'a lik'hamphani tse telele ka ho fetisisa. Re bona hore litšebelisano li phethoa kapele. 'Me autovacuum ha e sebetse mona, hobane e ne e le teko ea ho qala. E tla tsoela pele ho sebetsa 'me e tla ba molemo ho rona.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Slide ea bobeli e tla lula e inehetse ho poleiti e ntseng e lekoa. Boemong bona, re lula re ntlafatsa litekanyo tsa ak'haonte ea bareki. 'Me rea bona hore nako e tloaelehileng ea karabelo bakeng sa ts'ebetso ea ntlafatso e ntle haholo, e ka tlase ho millisecond. Rea bona hore lisebelisoa tsa processor (ena ke graph e kaholimo ho le letona) le tsona li jeoa ka ho lekana ebile li nyane haholo.

Kerafo e ka tlase e ka ho le letona e bonts'a hore na re feta memori ea ts'ebetso le disk e kae ha re ntse re batla mohala oo re o batlang pele re o nchafatsa. 'Me palo ea ts'ebetso ho ea ka letšoao ke 2 ka motsotsoana, joalokaha ke boletse qalong.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Mme jwale re hlahetswe ke tlokotsi. Ka mabaka a mang ho na le transaction e lebetsoeng nako e telele. Mabaka hangata ke banal:

  • E 'ngoe ea tse atileng haholo ke hore re ile ra qala ho fumana ts'ebeletso ea kantle ho khoutu ea kopo. Mme tshebeletso ena ha e re arabe. Ke hore, re ile ra bula transaction, ra etsa phetoho ho database mme ra tloha ho kopo ho bala mangolo kapa ho ea ho tšebeletso e 'ngoe ka har'a lisebelisoa tsa rona,' me ka lebaka le itseng ha e re arabe. Mme kopano ya rona e eme maemong ao ho sa tsejweng hore e tla rarollwa neng.
  • Boemo ba bobeli ke ha ho hlaha mokhelo khoutung ea rona ka lebaka le itseng. 'Me ntle le eona ha rea ​​ka ra sebetsa ho koaloa ha transaction. 'Me re ile ra qetella re e-na le seboka sa ho fanyeha ka transaction e bulehileng.
  • 'Me ea ho qetela e boetse ke taba e tloaelehileng haholo. Ena ke khoutu ea boleng bo tlase. Merero e meng e bula khoebo. E leketlile, 'me u kanna oa se tsebe ts'ebelisong hore u na le eona e leketlileng.

Lintho tse joalo li lebisa hokae?

Ho fihlela moo litafole le li-index tsa rona li qalang ho ruruha haholo. Sena se tšoana hantle le phello ea bloat. Bakeng sa database, sena se tla bolela hore nako ea karabo ea database e tla eketseha haholo mme mojaro ho seva sa database o tla eketseha. ’Me ka lebaka leo, tšebeliso ea rōna e tla senyeha. Hobane haeba u sebelisitse milliseconds tse 10 khoutu ea hau ka kopo ho database, 10 milliseconds ho logic ea hau, joale mosebetsi oa hau o nkile 20 milliseconds ho phethela. Mme jwale boemo ba hao bo tla ba bo hlomolang ka ho feletseng.

Mme a re boneng se etsahalang. Kerafo e ka tlase e ka letsohong le letšehali e bontša hore re na le transaction e telele e telele. Mme ha re sheba graph e ka holimo ka ho le letšehali, re bona hore boholo ba tafole ea rona bo tlohile ka tšohanyetso ho tloha ho megabyte e 'meli ho ea ho 300 megabytes. Ka nako e ts'oanang, palo ea lintlha tse tafoleng ha e e-s'o fetohe, ke hore ho na le lithōle tse ngata haholo moo.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Boemo bo akaretsang mabapi le karolelano ea nako ea karabo ea seva le bona bo fetohile ka litaelo tse 'maloa tsa boholo. Ke hore, likopo tsohle ho seva li ile tsa qala ho theoha ka ho feletseng. 'Me ka nako e ts'oanang, mekhoa ea ka hare ea Postgres e ile ea qalisoa ka mokhoa oa autovacuum, e lekang ho etsa ntho e itseng le ho ja lisebelisoa.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ho etsahalang ka letshwao la rona? E tšoanang. Karolelano ea nako ea rona ea ho arabela ho latela letšoao e tlohile ka litaelo tse 'maloa tsa boholo. Haholo-holo mabapi le lisebelisoa tse sebelisitsoeng, re bona hore mojaro oa processor o eketsehile haholo. Ena ke kerafo e kaholimo ho le letona. 'Me e eketsehile hobane processor e tlameha ho hlophisa letšoele la mela e se nang thuso ho batla e hlokahalang. Ena ke kerafo e tlase ka ho le letona. 'Me ka lebaka leo, palo ea rona ea mehala ka motsotsoana e ile ea qala ho theoha haholo, hobane database e ne e se na nako ea ho sebetsana le palo e tšoanang ea likopo.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Re hloka ho khutlela bophelong. Re kena inthaneteng mme re fumana hore litšebelisano tse telele li baka mathata. Re fumana le ho bolaea khoebo ena. 'Me ntho e' ngoe le e 'ngoe e fetoha ntho e tloaelehileng ho rona. Ntho e 'ngoe le e' ngoe e sebetsa kamoo e lokelang.

Re ile ra khutsa, empa ka mor'a nakoana re qala ho hlokomela hore kopo ha e sebetse ka tsela e tšoanang le pele ho tšohanyetso. Likopo li ntse li sebetsoa butle, 'me butle haholo. Nako le halofo ho isa ho makhetlo a mabeli butle ka ho khetheha mohlaleng oa ka. Mojaro ho seva o boetse o phahame ho feta kamoo o neng o le ka teng pele ho kotsi.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

'Me potso: "Ho etsahala'ng ka setsi hona joale?" 'Me boemo bo latelang bo etsahala ka motheo. Ka chate ea transaction u ka bona hore e emisitse mme ha e le hantle ha ho na litšebelisano tsa nako e telele. Empa boholo ba letšoao bo ile ba eketseha ka mokhoa o bolaeang nakong ea kotsi. 'Me ho tloha ka nako eo ha ba e-s'o fokotsehe. Karolelano ea nako botlaaseng e tsitsitse. 'Me likarabo li bonahala li tla ka mokhoa o lekaneng ka lebelo le amohelehang ho rona. Autovacuum e ile ea e-ba mafolofolo haholoanyane 'me ea qala ho etsa ntho e itseng ka letšoao, hobane e hloka ho hlopha lintlha tse ngata.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ka ho khetheha, ho ea ka poleiti ea teko e nang le litlaleho, moo re fetolang litekanyo: nako ea karabo ea kopo e bonahala e khutletse ho tloaelehileng. Empa bonneteng e phahame ka makhetlo a le mong le halofo.

'Me ho tloha mojaro ho processor, rea bona hore mojaro ho processor ha o so khutlele boleng bo hlokahalang pele ho ho oa. 'Me mabaka a teng a lutse hantle ka tlase ho le letona la kerafo. Ho ka bonoa hore palo e itseng ea memori e ntse e phenyekolloa moo. Ke hore, ho fumana mohala o hlokahalang, re senya lisebelisoa tsa seva sa database ha re ntse re hlophisa data e se nang thuso. Palo ea litšebelisano ka motsotsoana e tsitsitse.

Ka kakaretso e ntle, empa boemo bo bobe ho feta kamoo bo neng bo le kateng. Hlakola ho senyeha ha database ka lebaka la ts'ebeliso ea rona e sebetsang le database ena.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Le ho utloisisa se etsahalang moo, haeba u ne u se tlalehong e fetileng, joale a re ke re fumane khopolo e nyenyane. Khopolo mabapi le ts'ebetso ea ka hare. Ke hobane'ng ha koloi e hloekisa 'me e etsa'ng?

Ka bokhuts'oane ho utloisisa. Ka nako e 'ngoe re na le tafole. Re na le mela tafoleng. Mehala ena e ka sebetsa, e phela, le seo re se hlokang hona joale. Li tšoailoe ka botala setšoantšong. Hape ho na le mela e shoeleng e seng e entsoe, e nchafalitsoe, 'me ho hlahile lintlha tse ncha ho tsona. 'Me li tšoailoe hore ha li sa thahasellisa ho database. Empa li ka har'a tafole ka lebaka la sebopeho sa Postgres.

Hobaneng o hloka vacuum ea koloi? Ka nako e 'ngoe, autovacuum ea tla, e kena polokelong ea boitsebiso 'me ea e botsa: "Ke kopa u mphe id ea transaction ea khale ka ho fetisisa e seng e butsoe sebakeng sa polokelo ea boitsebiso." Database e khutlisa id ena. 'Me autovacuum, ho itšetlehile ka eona, e hlophisa mela e ka har'a tafole. 'Me haeba a bona hore mela e meng e fetotsoe ke litšebelisano tsa khale haholo, joale o na le tokelo ea ho e tšoaea e le mela eo re ka e sebelisang hape nakong e tlang ka ho ngola lintlha tse ncha moo. Ena ke ts'ebetso ea morao-rao.

Ka nako ena, re tsoela pele ho sebetsa le database mme re tsoela pele ho etsa liphetoho tse ling tafoleng. 'Me meleng ena, eo re ka e sebelisang hape, re ngola lintlha tse ncha. 'Me ka hona re fumana potoloho, ke hore ka linako tsohle mela e meng ea khale e shoeleng e hlaha moo, sebakeng sa eona re ngola mela e mecha eo re e hlokang. 'Me sena ke boemo bo tloaelehileng hore PostgreSQL e sebetse.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ho etsahetse'ng nakong ea kotsi? Mokhoa ona o etsahetse joang moo?

Re ne re ena le letshwao maemong a itseng, ba bang ba phela, ba bang mela e shweleng. Sekheo sa koloi se fihlile. O ile a botsa database hore na khoebo ea rona ea khale ke efe le hore na id ea eona ke efe. Ke amohetse id ena, e ka bang lihora tse ngata tse fetileng, mohlomong metsotso e leshome e fetileng. Ho itšetlehile ka hore na u na le mojaro o boima hakae ho database ea hau. Mme o ile a ya batla mela eo a neng a ka e tshwaya e le e sebediswa hape. 'Me ha kea fumana mela e joalo tafoleng ea rona.

Empa ka nako ena re tsoela pele ho sebetsa le tafole. Re etsa ho hong ho eona, ho e ntlafatsa, ho fetola data. Na database e lokela ho etsa eng ka nako ee? Ha a na boikhethelo haese ho eketsa mela e mecha qetellong ea tafole e teng. 'Me kahoo boholo ba tafole ea rona bo qala ho ruruha.

Ha e le hantle, re hloka mela e tala ho sebetsa. Empa nakong ea bothata bo joalo, ho ile ha fumaneha hore peresente ea mela e tala e tlase haholo tafoleng eohle.

'Me ha re etsa potso, database e tlameha ho feta har'a mela eohle: e khubelu le e tala, ho fumana mohala o lakatsehang. 'Me phello ea ho senya tafole e nang le boitsebiso bo se nang thuso e bitsoa "bloat", e leng hape e jang sebaka sa rona sa disk. Hopola, e ne e le 2 MB, e fetohile 300 MB? Joale fetola li-megabyte ho li-gigabyte 'me u tla lahleheloa ke lisebelisoa tsohle tsa hau tsa disk kapele.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ho ka ba le liphello life ho rōna?

  • Mohlala oa ka, tafole le index li holile makhetlo a 150. Ba bang ba bareki ba rona ba bile le linyeoe tse bolaeang haholo ha ba qala ho felloa ke sebaka sa disk.
  • Boholo ba litafole ka boeona bo ke ke ba fokotseha. Autovacuum maemong a mang e ka khaola mohatla oa tafole haeba ho na le mela e shoeleng feela. Empa kaha ho na le ho potoloha kamehla, mola o le mong o motala o ka 'na oa hoama qetellong' me oa se ke oa nchafatsoa, ​​athe tse ling kaofela li tla ngoloa kae-kae qalong ea poleiti. Empa ena ke ketsahalo e sa lebelloang hoo tafole ea hau ka boeona e tla fokotseha ka boholo, kahoo ha ua lokela ho e tšepa.
  • Database e hloka ho hlophisa har'a letoto lohle la mela e se nang thuso. 'Me re senya lisebelisoa tsa disk, re senya lisebelisoa tsa motlakase le motlakase.
  • 'Me sena se ama ka ho toba kopo ea rona, hobane haeba qalong re sebelisitse 10 milliseconds ka kopo, 10 milliseconds khoutu ea rona, joale nakong ea ho senyeha re ile ra qala ho qeta motsotsoana ka kopo le 10 milliseconds ka khoutu, ke hore taelo ea boholo ts'ebetsong ea ts'ebetso e fokotsehile. 'Me ha kotsi e rarolloa, re ile ra qala ho sebelisa 20 milliseconds ka kopo, 10 milliseconds ka khoutu. Sena se bolela hore re ntse re theohile ka makhetlo a le mong le halofo tlhahisong. 'Me sena sohle se bakoa ke khoebo e le' ngoe e ileng ea ema, mohlomong ka phoso ea rona.
  • 'Me potso: "Re ka khutlisetsa ntho e' ngoe le e 'ngoe joang?" E le hore ntho e 'ngoe le e' ngoe e tsamaee hantle le rona 'me likōpo li kene ka potlako joaloka pele ho kotsi.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Bakeng sa morero ona ho na le potoloho e itseng ea mosebetsi e etsoang.

Pele, re hloka ho fumana litafole tse nang le mathata a bloated. Rea utloisisa hore litafoleng tse ling rekoto e sebetsa haholo, ho tse ling ha e sebetse haholo. 'Me bakeng sa sena re sebelisa katoloso pgstattuple. Ka ho kenya katoloso ena, o ka ngola lipotso tse tla u thusa ho fumana litafole tse ruruhileng haholo.

Hang ha u se u fumane litafole tsena, u lokela ho li hatella. Ho se ho na le lisebelisoa tsa sena. Khamphani ea rona re sebelisa lisebelisoa tse tharo. Ea pele ke VACUUM e hahiloeng ka har'a FULL. O sehlōhō, o sehlōhō ebile ha a na mohau, empa ka linako tse ling o thusa haholo. Pg_repake и pgcompacttable - Tsena ke lisebelisoa tsa motho oa boraro bakeng sa ho hatella litafole. 'Me ba tšoara database ka hloko haholoanyane.

Li sebelisoa ho itšetlehile ka se u loketseng haholoanyane. Empa ke tla le bolella ka taba ena qetellong. Ntho e ka sehloohong ke hore ho na le lisebelisoa tse tharo. Ho na le lintho tse ngata tseo u ka khethang ho tsona.

Ka mor'a hore re lokise ntho e 'ngoe le e' ngoe le ho etsa bonnete ba hore ntho e 'ngoe le e' ngoe e lokile, re tlameha ho tseba ho thibela boemo bona nakong e tlang:

  • E ka thibeloa habonolo feela. U hloka ho beha leihlo nako ea mananeo ho Master seva. Linako tse kotsi haholo ha li sa sebetse. Ke bona ba qetang ho bula transaction, ba etsa ho hong mme ba tloha, kapa ba fanyeha feela, ba lahleha ka har'a khoutu.
  • Mme bakeng sa hau, joalo ka bahlahisi, ho bohlokoa ho lekola khoutu ea hau ha maemo ana a hlaha. Ha ho thata ho etsa joalo. Ena e tla ba cheke ea bohlokoa. U tla qoba palo e kholo ea mathata a "ngoana" a amanang le litšebelisano tse telele.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Lirapeng tsena, ke ne ke batla ho u bontša kamoo pontšo le boitšoaro ba database li fetohileng kateng ka mor'a hore ke fete ka letšoao le VACUUM FULL tabeng ena. Sena ha se tlhahiso bakeng sa ka.

Boholo ba tafole hang-hang bo ile ba khutlela boemong ba eona bo tloaelehileng ba ho sebetsa ba li-megabyte tse 'maloa. Sena ha sea ama haholo nako e tloaelehileng ea karabo bakeng sa seva.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Empa ka ho khetheha bakeng sa lets'oao la rona la teko, moo re ntlafalitseng litekanyo tsa li-account, re bona hore nako e tloaelehileng ea karabo bakeng sa kopo ea ho nchafatsa data ho lets'oao e fokotsehile ho isa maemong a pele ho ts'ohanyetso. Lisebelisoa tse sebelisoang ke processor ho phethela kopo ena le tsona li theohetse maemong a pele ho kotsi. 'Me kerafo e ka tlase e nepahetseng e bontša hore joale re fumana hantle mohala oo re o hlokang hang-hang, ntle le ho feta har'a liqubu tsa mela e shoeleng e neng e le teng pele tafole e hatelloa. 'Me nako e tloaelehileng ea kopo e ile ea lula e batla e lekana. Empa mona ke na le phoso ho hardware ea ka.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Mona ke moo pale ya pele e fellang teng. Ke eona e tloaelehileng ka ho fetisisa. 'Me e etsahalla motho e mong le e mong, ho sa tsotelehe boiphihlelo ba moreki le hore na baetsi ba mananeo ba tšoaneleha hakae. Haufinyane sena se etsahala.

Pale ea bobeli, eo ho eona re abang mojaro le ho ntlafatsa lisebelisoa tsa seva

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

  • Re se re hōlile 'me re fetohile bahlankana ba tebileng. 'Me rea utloisisa hore re na le replica' me e ka ba hantle hore re leka-lekanya mojaro: ngolla Monghali, 'me u bale ho tsoa ho replica. 'Me hangata boemo bona bo hlaha ha re batla ho lokisetsa litlaleho tse ling kapa ETL. 'Me khoebo e thabile haholo ka sena. O hlile o batla litlaleho tse fapaneng tse nang le li-analytics tse ngata tse rarahaneng.
  • Litlaleho li nka lihora tse ngata, hobane li-analytics tse rarahaneng ha li khone ho baloa ka milliseconds. Re, joaloka bahlankana ba sebete, ngola khoutu. Ts'ebetsong ea ho kenya re etsa rekoto ho Master, 'me re phethisa litlaleho ho replica.
  • Ho aba moroalo.
  • Tsohle di sebetsa hantle. Re moholo.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Hona boemo bona bo shebahala joang? Haholo-holo lirapeng tsena, ke boetse ke kentse nako ea lik'hamphani tse tsoang ho replica bakeng sa nako ea transaction. Li-graph tse ling kaofela li bua ka Seva ea Master feela.

Ka nako ena, boto ea ka ea litlaleho e ne e se e hōlile. Ho na le tse ling tsa tsona. Rea bona hore nako e tloaelehileng ea karabo ea seva e tsitsitse. Re bona hore ho replica re na le transaction ea nako e telele e nkang lihora tse peli. Re bona ts'ebetso e khutsitseng ea autovacuum, e sebetsanang le mela e shoeleng. Mme tsohle di hantle ka rona.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Haholo-holo, ho ea ka poleiti e lekiloeng, re tsoela pele ho ntlafatsa litekanyo tsa akhaonto moo. Hape re na le nako e tsitsitseng ea karabo bakeng sa likopo, tšebeliso e tsitsitseng ea lisebelisoa. Tsohle di hantle ka rona.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ntho e 'ngoe le e' ngoe e hantle ho fihlela ha litlaleho tsena li qala ho thunya ka lebaka la khohlano le ho pheta-pheta. 'Me ba khutlela morao ka linako tse ling.

Re kena Inthaneteng 'me re qala ho bala hore na ke hobane'ng ha sena se etsahala. Mme re fumana tharollo.

Tharollo ea pele ke ho eketsa latency ea ho ikatisa. Rea tseba hore tlaleho ea rona e nka lihora tse 3. Re beha ho lieha ho pheta-pheta ho lihora tse 3. Re qala ntho e 'ngoe le e' ngoe, empa re ntse re tsoela pele ho ba le mathata a hore ka linako tse ling litlaleho li hlakoloe.

Re batla hore tsohle e be tse phethahetseng. Re hloa ho feta. Mme re fumane sebaka se setle Marang-rang - hot_standby_feedback. Ha re e bulele. Hot_standby_feedback e re lumella ho thibela autovacuum ho Master. Ka hona, re tlosa likhohlano tsa ho ikatisa ka botlalo. 'Me ntho e' ngoe le e 'ngoe e sebetsa hantle bakeng sa rona ka litlaleho.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Mme ho etsahalang ka seva sa Master nakong ee? 'Me re bothateng bo felletseng ka seva sa Master. Hona joale re bona li-graph ha ke lumella litlhophiso tsena ka bobeli. 'Me rea bona hore seboka sa replica ea rona ka tsela e itseng se ile sa qala ho susumetsa boemo ho seva sa Master. O na le phello hobane o emisitse autovacuum, e hlakisang mela e shoeleng. Tafole ea rona e phahame hape. Karolelano ea nako ea ho botsoa ha li-database kaofela le eona e ile ea phahama. Li-autovacuums li ile tsa tiisa hanyane.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Haholo-holo, ho tloha poleiti ea rona, re bona hore ntjhafatso ea data ho eona le eona e ile ea tlolela maholimong. Tšebeliso ea CPU ka mokhoa o tšoanang e eketsehile haholo. Re boetse re feta har'a palo e kholo ea mela e shoeleng, e se nang thuso. 'Me nako ea karabo bakeng sa letšoao lena le palo ea litšebelisano li theohile.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ho tla ba joang haeba re sa tsebe seo ke neng ke bua ka sona pele?

  • Re qala ho batla mathata. Haeba re ile ra kopana le mathata karolong ea pele, rea tseba hore taba ena e ka ’na eaba e bakoa ke nako e telele ea transaction ebe re ea ho Monghali. Re na le bothata ho Monghali. Liboroso eena. E futhumala, Karolelano ea Mojaro oa eona e ka ba lekholo.
  • Likopo li tsamaea butle, empa ha re bone litšebelisano tsa nako e telele moo. 'Me ha re utloisise hore na bothata ke eng. Ha re utloisise hore na re shebe hokae.
  • Re hlahloba lisebelisoa tsa seva. Mohlomong tlhaselo ea rona e ile ea soahlamana. Mohlomong memory stick ea rona e cha. E, ntho leha e le efe e ka etsahala. Empa che, li-server li ncha, tsohle li sebetsa hantle.
  • E mong le e mong oa matha: balaoli, bahlahisi le motsamaisi. Ha ho letho le thusang.
  • 'Me ka nako e' ngoe ntho e 'ngoe le e' ngoe ka tšohanyetso e qala ho itokisa.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ka nako ena, kopo e hlahang setšoantšong sa rona e ile ea sebetsoa 'me ea tloha. Re fumane tlaleho. Khoebo e ntse e thabile. Joalokaha u ka bona, letšoao la rona le se le hōlile hape 'me le ke ke la fokotseha. Ka graph e nang le mananeo, ke siile sekhechana sa transaction ena e telele ho tsoa ho replica e le hore u ka hakanya hore na ho nka nako e kae ho fihlela boemo bo tsitsitse.

Seboka se felile. 'Me feela ka mor'a nako e itseng seva e tla ho feta kapa ka tlase ka tatellano. 'Me nako e tloaelehileng ea karabo bakeng sa likōpo ho Master server e khutlela ho tloaelehileng. Hobane, qetellong, autovacuum e na le monyetla oa ho hloekisa le ho tšoaea mela ena e shoeleng. Mme a qala ho etsa mosebetsi wa hae. 'Me o e etsa kapele hakae, ka potlako re tla kena ka tatellano.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Ho ea ka letlapa le lekiloeng, moo re ntlafatsang litekanyo tsa akhaonto, re bona setšoantšo se tšoanang hantle. Nako e tloaelehileng ea ntlafatso ea akhaonto le eona e ntse e tloaeleha butle-butle. Lisebelisoa tse sebelisoang ke processor le tsona li fokotsehile. 'Me palo ea litšebelisano ka motsotsoana e khutlela ho tloaelehileng. Empa hape re khutletse setloaeling, eseng joalo ka ha re ne re le pele ho kotsi.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Leha ho le joalo, re fumana ts'ebetso ea ts'ebetso, joalo ka tabeng ea pele, ka makhetlo a le mong le halofo ho isa ho tse peli, 'me ka linako tse ling ho feta.

Ho bonahala re entse tsohle hantle. Abela mojaro. Thepa ha e sebetse. Re ile ra arola likōpo ho ea ka likelello tsa rōna, empa ntho e ’ngoe le e ’ngoe e ile ea senyeha hampe.

  • Ha u lumelle hot_standby_feedback? E, ha e khothalletsoe ho e bulela ntle le mabaka a matla haholo. Hobane twist ena e ama ka kotloloho seva sa Master mme e emisa ts'ebetso ea autovacuum moo. Ka ho e nolofalletsa ho replica e 'ngoe le ho e lebala, o ka bolaea Master mme oa fumana mathata a maholo ka ts'ebeliso.
  • Eketsa max_standby_streaming_delay? E, bakeng sa litlaleho sena ke 'nete. Haeba u na le tlaleho ea lihora tse tharo 'me u sa batle hore e senyehe ka lebaka la likhohlano tsa phetisetso, eketsa tieho feela. Tlaleho ea nako e telele ha e hloke data e fihlileng sebakeng sa polokelo ea litaba hona joale. Haeba u na le lihora tse tharo, joale u ntse u e sebelisa bakeng sa nako e itseng ea khale ea data. 'Me bakeng sa hau, hore na ho na le ho lieha ha lihora tse tharo kapa ho lieha hora tse tšeletseng ho ke ke ha etsa phapang leha e le efe, empa u tla fumana litlaleho ka mokhoa o tsitsitseng' me u ke ke ua ba le mathata leha e le afe ka ho oa.
  • Ka tlhaho, o hloka ho laola linako tse telele ho likopi, haholo haeba u etsa qeto ea ho lumella hot_standby_feedback ho replica. Hobane eng kapa eng e ka etsahala. Re fane ka setšoantšo sena ho moqapi hore a tle a hlahlobe lipotso. O ngotse kopo ea bohlanya. O ile a e thakhola a tsamaea ho ea noa tee, 'me ra fumana Monghali ea neng a le teng. Kapa mohlomong re kentse kopo e fosahetseng moo. Maemo a fapane. Likopano tse mabapi le likopi li tlameha ho beoa leihlo ka hloko joalo ka ho Monghali.
  • 'Me haeba u na le lipotso tse potlakileng le tse telele ho li-replicas, joale tabeng ena ho molemo ho li arola ho aba mojaro. Sena ke sehokelo sa streaming_delay. Bakeng sa tse potlakileng, e-ba le setšoantšo se le seng se nang le tieho e nyane ea ho ikatisa. Bakeng sa likopo tsa nako e telele tsa tlaleho, e-ba le setšoantšo se ka liehang ka lihora tse 6 kapa ka letsatsi. Ena ke boemo bo tloaelehileng ka ho feletseng.

Re tlosa litlamorao ka tsela e ts'oanang:

  • Re fumana litafole tse ruruhileng.
  • 'Me re e hatella ka sesebelisoa se bonolo ka ho fetisisa se re tšoanelang.

Pale ea bobeli e fella mona. Ha re feteleng pale ea boraro.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Hape ke ntho e tloaelehileng ho rona moo re fallang teng.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

  • Sehlahisoa sefe kapa sefe sa software se ntse se hola. Litlhoko tsa eona lia fetoha. Leha ho le joalo, re batla ho ntlafatsa. 'Me hoa etsahala hore re ntlafatse lintlha tse ka har'a tafole, e leng ho tsamaisa ntjhafatso mabapi le ho falla ha rona bakeng sa ts'ebetso e ncha eo re e hlahisang e le karolo ea nts'etsopele ea rona.
  • Sebopeho sa khale sa data ha se khotsofatse. Ha re re joale re fetele tafoleng ea bobeli, moo ke nang le transactions on these accounts . 'Me re re ba ne ba le li-ruble,' me re entse qeto ea ho eketsa ho nepahala le ho e etsa ka kopecks. 'Me bakeng sa sena re hloka ho etsa ntlafatso: atisa tšimo ka chelete ea transaction ka lekholo.
  • Lefatšeng la kajeno, re sebelisa lisebelisoa tsa ho laola mofuta oa database. Ha re re Liquibase. Re ngolisa ho falla ha rona moo. Re e leka motheong oa liteko tsa rona. Tsohle di lokile. Ntlafatso e ntse e tsoela pele. E thibela mosebetsi ka nakoana, empa re fumana data e ntlafalitsoeng. Mme re ka qala ts'ebetso e ncha ho sena. Lintho tsohle li ile tsa lekoa le ho hlahlojoa. Ntho e nngwe le e nngwe e ne e tiisitswe.
  • Re ile ra etsa mosebetsi oo re neng re o rerile 'me ra falla.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Phalliso ke ena ka ntlafatso e hlahisitsoeng ka pel'a hau. Kaha tsena ke litšebelisano tsa akhaonto ea ka, poleiti e ne e le 15 GB. 'Me kaha re ntlafatsa mohala o mong le o mong, re ekelitse boholo ba tafole habeli ka ntlafatso, hobane re ngotse mola o mong le o mong.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Nakong ea ho falla, ha rea ​​ka ra etsa letho ka poleiti ena, hobane likōpo tsohle ho eona li ne li le teng 'me li emetse ho fihlela ntlafatso ena e phethoa. Empa mona ke batla ho lebisa tlhokomelo ea hau ho lipalo tse holim'a axis e otlolohileng. Ke hore, re na le nako e tloaelehileng ea kopo pele re falla hoo e ka bang 5 milliseconds le mojaro oa processor, palo ea ts'ebetso ea li-block bakeng sa ho bala memori ea disk e ka tlase ho 7,5.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Re ile ra falla 'me ra ba le mathata hape.

Ho falla ho atlehile, empa:

  • Ts'ebetso ea khale joale e nka nako e telele hore e phethehe.
  • Tafole e ile ea hōla ka boholo hape.
  • Mojaro o ho seva o ile oa boela oa e-ba moholo ho feta pele.
  • 'Me, ehlile, re ntse re shebana le ts'ebetso e sebelitseng hantle, re e ntlafalitse hanyane.

'Me sena ke bloat hape, e leng hape e senyang bophelo ba rona.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Mona ke bonts'a hore tafole, joalo ka linyeoe tse peli tse fetileng, e ke ke ea khutlela boholong ba eona ba pele. Karolelano ea mojaro oa seva e bonahala e lekane.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

'Me haeba re retelehela tafoleng ka litlaleho, re tla bona hore karolelano ea nako ea kopo e imenne habeli bakeng sa tafole ena. Mojaro ho processor le palo ea mela e hlophisitsoeng mohopolong e ile ea tlolela kaholimo ho 7,5, empa e ne e le tlase. 'Me e ile ea qhoma ka makhetlo a 2 tabeng ea li-processor, makhetlo a 1,5 tabeng ea ts'ebetso ea thibela, ke hore re ile ra fumana ho senyeha ha ts'ebetso ea seva. 'Me ka lebaka leo - ho senyeha ha ts'ebetso ea kopo ea rona. Ka nako e ts'oanang, palo ea mehala e ile ea lula e batla e le boemong bo tšoanang.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

'Me ntho e ka sehloohong mona ke ho utloisisa mokhoa oa ho etsa ho falla ho joalo ka nepo. 'Me li hloka ho etsoa. Re etsa lifalli tsena hantle ka mokhoa o tsitsitseng.

  • Ho falla ho joalo ho hoholo ha ho iketsahalle feela. Ba tlameha ho lula ba le tlas'a taolo.
  • Tlhokomelo ke motho ea nang le tsebo e hlokahalang. Haeba u na le DBA sehlopheng sa hau, lumella DBA ho e etsa. Ke mosebetsi oa hae. Haeba ho se joalo, lumella motho ea nang le phihlelo ka ho fetisisa hore a e etse, ea tsebang ho sebetsa le li-database.
  • Sekema se secha sa database, leha re ka ntlafatsa kholomo e le 'ngoe, re lula re itokisetsa ka mekhahlelo, ke hore, esale pele pele mofuta o mocha oa kopo o qala:
  • Ho eketsoa likarolo tse ncha moo re tla rekota lintlha tse ntlafalitsoeng.
  • Re fetisetsa data ho tloha tšimong ea khale ho ea tšimong e ncha likarolong tse nyenyane. Ke hobane'ng ha re etsa see? Ntlha ea pele, kamehla re laola mokhoa oa ts'ebetso ena. Rea tseba hore re se re fetisitse lihlopha tse ngata haholo 'me re saletsoe ke tse ngata haholo.
  • 'Me phello ea bobeli e ntle ke hore pakeng tsa beche e' ngoe le e 'ngoe re koala transaction, re bula e ncha,' me sena se lumella autovacuum ho sebetsa ho ea ka poleiti, tšoaea mela e shoeleng bakeng sa ho sebelisoa hape.
  • Bakeng sa mela e tla hlaha ha kopo e ntse e sebetsa (re ntse re e-na le ts'ebeliso ea khale e ntseng e sebetsa), re kenyelletsa "trigger" e ngolang litekanyetso tse ncha masimong a macha. Tabeng ea rona, sena ke ho atisa ka lekholo la boleng ba khale.
  • Haeba re manganga ka ho feletseng 'me re batla tšimo e ts'oanang, joale ha re qeta ho falla hohle le pele re ntša phetolelo e ncha ea kopo, re mpa re reha masimo. A khale a fuoe mabitso a mang a iqapetsoeng, 'me masimo a macha a fetoleloa ho a khale.
  • 'Me feela ka mor'a moo re qala phetolelo e ncha ea kopo.

'Me ka nako e ts'oanang re ke ke ra fumana bloat' me re ke ke ra utloa bohloko mabapi le ts'ebetso.

Mona ke moo pale ya boraro e fellang teng.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho 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

'Me joale lintlha tse ling tse eketsehileng mabapi le lisebelisoa tseo ke li boletseng pale ea pele.

Pele o batla bloat, o tlameha ho kenya katoloso pgstattuple.

E le hore u se ke ua tla ka lipotso, re se re ngotse lipotso tsena mosebetsing oa rona. U ka li sebelisa. Ho na le likopo tse peli mona.

  • Ea pele e nka nako e telele ho sebetsa, empa e tla u bontša litekanyetso tse nepahetseng tsa bloat tse tsoang tafoleng.
  • Ea bobeli e sebetsa ka potlako mme e sebetsa haholo ha o hloka ho potlakela ho hlahloba hore na ho na le bloat kapa che ho ea ka tafole. Hape o lokela ho utloisisa hore bloat e lula e le teng tafoleng ea Postgres. Ena ke tšobotsi ea mofuta oa eona oa MVCC.
  • 'Me 20% bloat ke ntho e tloaelehileng bakeng sa litafole maemong a mangata. Ke hore, ha ua lokela ho tšoenyeha le ho hatella tafole ena.

Re ile ra fumana mokhoa oa ho khetholla litafole tse ruruhileng ka data e se nang thuso.

Joale mabapi le mokhoa oa ho lokisa bloat:

  • Haeba re na le letlapa le lenyenyane le li-disk tse ntle, ke hore, letlapeng ho fihlela ho gigabyte, ho ka khoneha ho sebelisa VACUUM FULL. O tla nka senotlolo se ikhethileng ho uena tafoleng ka metsotsoana e seng mekae mme a lokile, empa o tla etsa ntho e 'ngoe le e' ngoe kapele le ka thata. VACUUM FULL e etsa eng? E hloka senotlolo se ikhethileng tafoleng ebe e ngola bocha mela e hlahang litafoleng tsa khale ho ea tafoleng e ncha. Mme qetellong o a nkela sebaka. E hlakola lifaele tsa khale ebe e nkela tsa khale sebaka ka tse ncha. Empa bakeng sa nako ea mosebetsi oa eona, e hloka senotlolo se ikhethileng tafoleng. Sena se bolela hore u ke ke ua etsa letho ka tafole ena: kapa ua e ngolla, kapa ua e bala, kapa ua e fetola. 'Me VACUUM FULL e hloka sebaka se eketsehileng sa disk ho ngola data.
  • Sesebelisoa se latelang pg_repack. Ka molao-motheo oa eona, e tšoana haholo le VACUUM FULL, hobane e boetse e ngola lintlha ho tloha lifaeleng tsa khale ho ea ho tse ncha ebe e li nkela sebaka tafoleng. Empa ka nako e ts'oanang, ha e nke senotlolo se ikhethileng tafoleng qalong ea mosebetsi oa eona, empa e nka feela ka nako eo e seng e e-na le data e lokiselitsoeng ho khutlisa lifaele. Litlhoko tsa eona tsa lisebelisoa tsa disk li tšoana le tsa VACUUM FULL. U hloka sebaka se eketsehileng sa disk, 'me ka linako tse ling sena se bohlokoa haeba u na le litafole tsa terabyte. 'Me e lapile haholo hobane e sebetsa ka mafolofolo le I/O.
  • Ea boraro utility ke pgcompacttable. E hlokolosi haholoanyane ka lisebelisoa hobane e sebetsa ho latela melao-motheo e fapaneng hanyane. Mohopolo o ka sehloohong oa pgcompacttable ke hore e tsamaisa mela eohle e phelang qalong ea tafole e sebelisa lintlafatso tse tafoleng. 'Me joale ho na le sekheo holim'a tafole ena, hobane rea tseba hore re na le mela e phelang qalong le mela e shoeleng qetellong. 'Me vacuum ka boeona e khaola mohatla ona, ke hore, ha e hloke sebaka se eketsehileng sa disk. Mme ka nako e ts'oanang, e ntse e ka hatelloa ho latela lisebelisoa.

Tsohle tse nang le lisebelisoa.

Liphoso tse tloaelehileng lits'ebetsong tse lebisang ho bloat ho postgresql. Andrey Salnikov

Haeba u fumana sehlooho sa bloat se thahasellisa mabapi le ho tsoela pele ka hare, lihokelo tse ling tsa bohlokoa ke tsena:

Ke lekile ho feta ho bonts'a pale e nyarosang bakeng sa bahlahisi, hobane ke bareki ba rona ba tobileng ba database mme ba tlameha ho utloisisa hore na ke liketso life tse lebisang ho eng. Ke tšepa hore ke atlehile. Kea leboha ha u mametse!

Lipotso

Re leboha tlaleho! Le buile ka hore na le ka lemoha mathata joang. Ba ka lemosoa joang? Ke hore, ke bile le boemo boo likopo li neng li fanyehiloe eseng feela hobane ba fumane litšebeletso tse ling tsa kantle. Tsena e ne e le maqhama a seng makae feela. Ho ne ho e-na le likōpo tse nyenyane, tse se nang kotsi tse ileng tsa qeta letsatsi, 'me tsa qala ho etsa lintho tse se nang thuso. Ke hore, e ts'oana haholo le seo u se hlalosang. Mokhoa oa ho latela see? Lula 'me u shebelle kamehla hore na ke kopo efe e tsitsitseng? See se ka thibeloa joang?

Tabeng ena, ona ke mosebetsi oa batsamaisi ba k'hamphani ea hau, eseng hakaalo bakeng sa DBA.

Ke molaoli.

PostgreSQL e na le pono e bitsoang pg_stat_activity e bontšang lipotso tse leketlileng. Mme o ka bona hore na e leketlile nako e kae moo.

Na ke tlameha ho kena 'me ke shebe metsotso e meng le e meng e 5?

Beha cron 'me u hlahlobe. Haeba u na le kopo ea nako e telele, ngola lengolo 'me ho joalo. Ke hore, ha ho hlokahale hore u shebe ka mahlo, e ka iketsetsa. U tla fumana lengolo, u arabela ho lona. Kapa u ka thunya ka bohona.

Na ho na le mabaka a hlakileng a hore na ke hobane'ng ha see se etsahala?

Ke thathamisitse tse ling. Mehlala e meng e rarahaneng ho feta. 'Me ho ka ba le puisano ka nako e telele.

Re leboha tlaleho! Ke ne ke batla ho hlakisa ka ts'ebeliso ea pg_repack. Haeba a sa etse senotlolo se khethehileng, joale...

O notlela senotlolo se khethehileng.

... ebe nka lahleheloa ke data. Na kopo ea ka ha ea lokela ho hatisa letho nakong ee?

Che, e sebetsa hantle le tafole, ke hore, pg_repack e fetisetsa pele mela eohle e teng. Ka tlhaho, mofuta o mong oa ho kena tafoleng o etsahala moo. O ntse a lahlela ponytail ena feela.

Ke hore, o fela a e etsa qetellong?

Qetellong, o nka senotlolo se ikhethileng ho fapanyetsana lifaele tsena.

Na e tla ba kapele ho feta VACUUM FULL?

VACUUM FULL, hang ha e qala, hang-hang e ile ea nka senotlolo se ikhethileng. Mme ho fihlela a etsa tsohle, a ke ke a mo tlohela. 'Me pg_repack e nka senotlolo se ikhethileng feela ka nako ea ho nkela faele sebaka. Ka motsotso ona u ke ke ua ngola moo, empa data e ke ke ea lahleha, ntho e 'ngoe le e' ngoe e tla ba hantle.

Lumela! U buile ka tšebetso ea vacuum ea koloi. Ho ne ho e-na le kerafo e nang le lisele tse rekotang tse khubelu, tse mosehla le tse tala. Ke hore, tse tšehla - o li tšoaile hore li hlakotsoe. Mme ka ntlha ya seo, go ka kwalwa sengwe se sesha mo go tsone?

Ee. Li-postgres ha li hlakole mela. O na le sebopeho se joalo. Haeba re nchafalitse mola, re tšoaea oa khale e le o hlakotsoe. Id ea transaction e fetotseng mohala ona e hlaha moo, 'me re ngola mola o mocha. 'Me re na le mananeo a ka khonang ho li bala. Ka nako e 'ngoe ba tsofala haholo. 'Me moelelo oa hore na autovacuum e sebetsa joang ke hore e feta meleng ena ebe e e tšoaea e sa hlokahale. 'Me u ka hlakola data moo.

Kea utloisisa. Empa ha se seo potso e leng sona. Ha kea qeta. Ha re nke hore re na le tafole. E na le masimo a boholo bo fapaneng. 'Me haeba ke leka ho kenya ntho e ncha, e ka 'na ea se ke ea kena ka har'a sele ea khale.

Che, ho sa tsotellehe boemo leha e le bofe mohala oohle o nchafatsoa moo. Postgres e na le mefuta e 'meli ea polokelo ea data. E khetha ho tloha mofuteng oa data. Ho na le data e bolokiloeng ka kotloloho tafoleng, hape ho na le data ea tos. Tsena ke lintlha tse ngata: mongolo, json. Li bolokiloe ka lipoleiti tse arohaneng. 'Me ho ea ka matlapa ana, pale e tšoanang le bloat e etsahala, ke hore ntho e' ngoe le e 'ngoe e tšoana. Li thathamisitsoe ka thoko.

Re leboha tlaleho! Na hoa amoheleha ho sebelisa lipotso tsa nako ea ho qetela ho fokotsa nako?

E amohelehile haholo. Re sebelisa sena hohle. Mme kaha ha re na lits'ebeletso tsa rona, re fana ka tšehetso e hole, re na le bareki ba bangata ba fapaneng. 'Me bohle ba khotsofetse ka ho feletseng ke sena. Ke hore, re na le mesebetsi ea cron e hlahlobang. Nako ea liboka e lumellana feela le mofani, pele re sa lumellane. E ka ba motsotso, e ka ba metsotso e 10. E itšetlehile ka mojaro holim'a motheo le morero oa eona. Empa kaofela re sebelisa pg_stat_activity.

Re leboha tlaleho! Ke leka ho kenya tlaleho ea hau lits'ebetsong tsa ka. 'Me ho bonahala eka re qala transaction hohle,' me ka ho hlaka re e phethe hohle. Haeba ho na le mokhelo, joale rollback e ntse e etsahala. Mme yaba ke qala ho nahana. Ntle le moo, khoebo e kanna ea se qale ka ho hlaka. Mohlomong ena ke leseli ho ngoanana. Haeba ke nchafatsa rekoto feela, na transaction e tla qala ho PostgreSQL mme e phethe feela ha khokahano e khaotsoe?

Haeba u bua hona joale ka boemo ba kopo, joale ho itšetlehile ka mokhanni eo u mo sebelisang, ho ORM e ntseng e sebelisoa. Ho na le li-setting tse ngata moo. Haeba u na le boitlamo ba koloi bo lumelletsoeng, transaction e qala moo ebe e koala hanghang.

Ke hore, e koala hang ka mor'a ntlafatso?

E itšetlehile ka litlhophiso. Ke ile ka bolela sebaka se le seng. Sena se sebetsa ka boiketsetso. Ho tloaelehile haholo. Haeba e nolofalitsoe, joale transaction e butsoe 'me e koetsoe. Ntle le haeba o boletse ka ho hlaka "qala transaction" le "felisa transaction", empa o ile oa kenya kopo lenaneong.

Lumela! Re leboha tlaleho! Ha re nahane hore re na le database e ntseng e ruruha le ho ruruha ebe sebaka sa seva se fela. Na ho na le lisebelisoa tsa ho lokisa boemo boo?

Sebaka se ho seva se hloka ho hlahlojoa ka nepo.

Ka mohlala, DBA e ile ea ea tee, e ne e le sebakeng sa phomolo, joalo-joalo.

Ha tsamaiso ea faele e bōptjoa, bonyane mofuta o itseng oa sebaka sa polokelo se etsoa moo data e sa ngoloang teng.

Ho thoe'ng haeba e ka tlase ho zero ka botlalo?

Moo e bitsoa sebaka se boloketsoeng, ke hore e ka lokolloa 'me ho itšetlehile ka hore na e bōpiloe hakae, u fumana sebaka sa mahala. Ka ho sa feleng ha ke tsebe hore na ke tse kae. 'Me tabeng e' ngoe, tsamaisa li-disk e le hore u be le sebaka sa ho etsa ts'ebetso ea ho tsosolosa. U ka hlakola tafole e 'ngoe eo u tiiselitsoeng hore u ke ke ua e hloka.

Ho na le lisebelisoa tse ling?

E entsoe ka matsoho kamehla. 'Me sebakeng sa heno hoa hlaka hore na ho molemo ho etsa eng moo, hobane lintlha tse ling li bohlokoa haholo' me tse ling ha li nyatsehe. 'Me bakeng sa database e' ngoe le e 'ngoe le kopo e sebetsang le eona, ho itšetlehile ka khoebo. E lula e etsoa qeto sebakeng sa heno.

Re leboha tlaleho! Ke na le lipotso tse peli. Taba ea pele, u bonts'itse li-slide tse bonts'ang hore ha li-transaction li tsitsitse, boholo ba sebaka sa tafole le boholo ba index lia hola. Ho feta moo, tlalehong ena ho ne ho e-na le lisebelisoa tse ngata tse tsamaisang letlapa. Ho thoe'ng ka index?

Le tsona lia li phutha.

Empa vacuum ha e ame index?

Ba bang ba sebetsa ka index. Ka mohlala, pg_rapack, pgcompacttable. Vacuum e etsa li-index hape 'me ea li ama. Ka VACUUM FULL mohopolo ke ho ngola ntho e 'ngoe le e' ngoe, ke hore, e sebetsa le bohle.

Mme potso ya bobedi. Ha ke utloisise hore na ke hobane'ng ha litlaleho tsa replicas li itšetlehile haholo ka ho ikatisa ka boeona. Ho 'na ho ne ho bonahala eka litlaleho lia baloa, 'me ho ngoloa ho pheta-pheta.

Ke eng e bakang khohlano ea ho ikatisa? Re na le Monghali hore na lits'ebetso li etsahala joang. Re na le vacuum ea koloi e ntseng e tsoela pele. Ha e le hantle, autovacuum e etsa eng? O seha mela e meng ea khale. Haeba ka nako ena re na le kopo holim'a replica e balang mela ena ea khale, 'me ho Monghali ho ile ha etsahala boemo ba hore autovacuum e ile ea tšoaea mela ena ka hohle kamoo ho ka khonehang bakeng sa ho ngola holimo, ebe rea e hlakola. 'Me re fumane sephutheloana sa data, ha re hloka ho ngola hape mela eo kopo e e hlokang ho replica, mokhoa oa ho ikatisa o tla emela nako eo u e lokisitseng. Ebe PostgreSQL e tla etsa qeto ea hore na ke efe ea bohlokoa ho eona. 'Me ho pheta-pheta ho bohlokoa ho eena ho feta kopo,' me o tla thunya kopo e le hore a etse liphetoho tsena ho replica.

Andrey, ke na le potso. Li-graph tsena tse ntle tseo u li bonts'itseng nakong ea nehelano, na tsee ke litholoana tsa mosebetsi oa mofuta o itseng oa ts'ebeliso ea hau? Li-graph li ne li etsoa joang?

Ena ke tšebeletso Okmeter.

Na ke sehlahisoa sa khoebo?

Ee. Ena ke sehlahisoa sa khoebo.

Source: www.habr.com

Eketsa ka tlhaloso