Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Manoro hevitra anao aho hamaky ny dika mitovy amin'ny tatitra nanomboka tamin'ny fiandohan'ny taona 2016 nataon'i Andrey Salnikov "Lesoka mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql"

Amin'ity tatitra ity dia hamakafaka ny lesoka lehibe amin'ny fampiharana izay mipoitra eo amin'ny dingan'ny famolavolana sy fanoratana fehezan-dalΓ na fampiharana aho. Ary ireo lesoka izay mitondra any amin'ny Postgresql ihany no horaisiko. Amin'ny maha-fitsipika, io no fiandohan'ny fiafaran'ny fampandehanana ny rafitrao manontolo, na dia tsy nisy fepetra takina tamin'ny voalohany aza.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Faly miarahaba ny rehetra! Ity tatitra ity dia tsy ara-teknika tahaka ny teo aloha avy amin'ny mpiara-miasa amiko. Ity tatitra ity dia natao indrindra ho an'ny mpamorona rafitra backend satria manana mpanjifa marobe izahay. Ary samy manao fahadisoana mitovy. Holazaiko aminao ny momba azy ireo. Hazavaiko hoe inona no mahatonga ny zavatra mahafaty sy ratsy aterak'ireo fahadisoana ireo.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Nahoana no misy lesoka? Izy ireo dia natao noho ny antony roa: kisendrasendra, angamba mety hahomby izany ary noho ny tsy fahalalana ny mekanika sasany izay mitranga eo amin'ny ambaratonga eo amin'ny database sy ny fampiharana, ary koa ao amin'ny database mihitsy.

Omeko ohatra telo misy sary mahatsiravina momba ny faharatsian'ny zava-dratsy. Holazaiko anao fohifohy ny mekanika mitranga any. Ary ny fomba hiatrehana azy ireo, ny fotoana nitrangan'izy ireo, ary ny fomba fisorohana tokony hampiasaina mba hisorohana ny fahadisoana. Hilaza aminao momba ny fitaovana fanampiny aho ary hanome rohy mahasoa.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Nampiasa angon-drakitra fitsapana izay nananako latabatra roa aho. Ny takelaka iray misy kaontin'ny mpanjifa, ny iray misy fifampiraharahana amin'ireo kaonty ireo. Ary matetika dia manavao ny balan'ireo kaonty ireo izahay.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Data voalohany amin'ny takelaka: kely dia kely, 2 MB. Ny fotoana famaliana ho an'ny angon-drakitra ary indrindra ho an'ny famantarana dia tena tsara ihany koa. Ary enta-mavesatra somary tsara - 2 asa isan-tsegondra araka ny takelaka.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary amin'ny alalan'ity tatitra ity dia hasehoko anao ny grafika mba ho azonao tsara ny zava-mitranga. Hisy sary mihetsika 2 misy sary foana. Ny slide voalohany dia ny zava-mitranga amin'ny ankapobeny amin'ny mpizara.

Ary amin'ity toe-javatra ity dia hitantsika fa tena manana famantarana kely isika. Ny index dia kely amin'ny 2 MB. Ity no kisary voalohany eo ankavia.

Ny salan'isan'ny fotoana famaliana ao amin'ny mpizara koa dia maharitra sy fohy. Ity no tabilao ambony havanana.

Ny tabilao ambany havia dia mampiseho ny fifampiraharahana lava indrindra. Hitanay fa vita haingana ny fifampiraharahana. Ary mbola tsy mandeha eto ny autovacuum, satria fitsapana fanombohana izany. Mbola hiasa izany ary hahasoa antsika.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ny slide faharoa dia hatokana hatrany amin'ny takelaka andrana. Amin'ity toe-javatra ity dia manavao hatrany ny fifandanjan'ny kaontin'ny mpanjifa izahay. Ary hitantsika fa ny salan'isa fotoana famaliana ho an'ny hetsika fanavaozana dia tsara, latsaky ny milisegondra. Hitantsika fa ny loharanon'ny processeur (io no tabilao ambony havanana) dia laniana mitovy sy kely ihany koa.

Ny kisary ambany havanana dia mampiseho ny habetsahan'ny fitadidiana miasa sy ny kapila ataontsika amin'ny fitadiavana ny tsipika tadiavintsika alohan'ny hanavaozana azy. Ary ny isan'ny asa araka ny famantarana dia 2 isan-tsegondra, araka ny nolazaiko tany am-boalohany.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary izao dia misy loza. Noho ny antony sasany dia misy fifampiraharahana adino hatry ny ela. Ny antony dia matetika banal rehetra:

  • Ny iray amin'ireo mahazatra indrindra dia ny nanombohantsika niditra tamina serivisy ivelany amin'ny kaody fampiharana. Ary tsy mamaly anay izany fanompoana izany. Izany hoe nanokatra fifampiraharahana izahay, nanao fanovana tao amin'ny angon-drakitra ary niala tamin'ny fampiharana hamaky mailaka na serivisy hafa ao anatin'ny fotodrafitrasanay, ary noho ny antony tsy mamaly anay. Ary tafahitsoka ao anatin’ny fanjakana tsy fantatra hoe rahoviana no ho voavaha ny fivorianay.
  • Ny toe-javatra faharoa dia rehefa nisy maningana nitranga tao amin'ny code misy antsika noho ny antony. Ary afa-tsy ny tsy nikarakara ny fanakatonana ny varotra izahay. Ary niafara tamin'ny fivoriana mihantona miaraka amin'ny fifampiraharahana misokatra.
  • Ary ny farany dia tranga mahazatra ihany koa. Kaody ambany kalitao ity. Ny rafitra sasany dia manokatra fifampiraharahana. Mihantona izy io, ary mety tsy fantatrao ao amin'ny fampiharana fa misy azy mihantona.

Mitondra mankaiza ny zavatra toy izany?

Hany ka manomboka mibontsina be ny latabatra sy ny indeksantsika. Mitovy tanteraka amin'izany ny effet bloat. Ho an'ny angon-drakitra dia midika izany fa hitombo be ny fotoana famalian'ny database ary hitombo ny entana ao amin'ny server database. Ary vokatr'izany dia hiharatsy ny fampiharana ataontsika. Satria raha nandany 10 milisegondra tao amin'ny kaody ianao tamin'ny fangatahana ho an'ny angon-drakitra, 10 milisegondra amin'ny lojikanao, dia naka 20 milisegondra ny asanao vao vita. Ary ankehitriny dia ho tena mampalahelo ny toe-javatra misy anao.

Ary andeha hojerentsika izay mitranga. Ny tabilao ambany havia dia mampiseho fa manana fifampiraharahana lava be isika. Ary raha mijery ny tabilao ankavia ambony isika dia hitantsika fa nitsambikina tampoka avy amin'ny roa megabytes ho 300 megabytes ny haben'ny latabatray. Etsy andanin'izany, tsy miova ny habetsaky ny angona eo amin'ny latabatra, izany hoe misy fako betsaka ao.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ny toe-javatra ankapobeny momba ny salanisan'ny fotoana famalian'ny mpizara dia niova ihany koa tamin'ny filaharana maromaro. Izany hoe nanomboka nihena tanteraka ny fangatahana rehetra tao amin'ny server. Ary tamin'izany fotoana izany, ny fizotran'ny Postgres anatiny dia natomboka tamin'ny endrika autovacuum, izay manandrana manao zavatra sy mandany loharanon-karena.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Inona no mitranga amin'ny famantarana antsika? Mitovy. Ny salan'isan'ny fotoana famaliana araka ny famantarana dia nitsambikina tamin'ny filaharana maromaro. Amin'ny lafiny manokana momba ny loharanon-karena lany dia hitantsika fa nitombo be ny enta-mavesatra eo amin'ny processeur. Ity no tabilao ambony havanana. Ary nitombo izany satria ny processeur dia tsy maintsy mandamina andian-tsipika tsy misy ilana azy hitady izay ilaina. Ity no tabilao ambany havanana. Ary vokatr'izany dia nanomboka nihena be ny antsonay isan-tsegondra, satria tsy nanam-potoana handaminana ny fangatahana mitovy amin'izany ny angon-drakitra.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Mila miverina amin'ny fiainana isika. Mandeha an-tserasera izahay ary mahita fa miteraka olana ny fifampiraharahana lava. Hitanay sy vonoinay ity fifampiraharahana ity. Ary lasa mahazatra antsika ny zava-drehetra. Miasa araka ny tokony ho izy ny zava-drehetra.

Nilamina izahay, saingy rehefa afaka kelikely dia nanomboka nahatsikaritra izahay fa ny fampiharana dia tsy miasa toy ny taloha. Mbola miadana kokoa ny fikarakarana ny fangatahana, ary miadana kokoa. Iray sy sasany na roa heny miadana manokana amin'ny ohatra nataoko. Ny enta-mavesatry ny mpizara koa dia ambony noho ny talohan'ny loza.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary ny fanontaniana hoe: "Inona no mitranga amin'ny base amin'izao fotoana izao?" Ary ity toe-javatra manaraka ity dia mitranga miaraka amin'ny fototra. Ao amin'ny tabilao momba ny varotra dia hitanao fa nitsahatra izany ary tena tsy misy fifampiraharahana maharitra. Saingy ny haben'ny famantarana dia nitombo nahafaty olona nandritra ny loza. Ary hatramin'izay dia tsy nihena izy ireo. Nilamina ny salan'isa eo amin'ny fotony. Ary ny valiny dia toa tonga araka ny tokony ho izy amin'ny hafainganam-pandeha azo ekena amintsika. Lasa mavitrika kokoa ny autovacuum ary nanomboka nanao zavatra tamin'ny famantarana, satria mila sivana angon-drakitra bebe kokoa.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Indrindra indrindra, araka ny takelaka fitsapana misy kaonty, izay hanovantsika ny fifandanjana: ny fotoana famaliana ny fangatahana dia toa niverina tamin'ny laoniny. Saingy raha ny marina dia avo iray heny sy tapany izany.

Ary avy amin'ny enta-mavesatra eo amin'ny processeur, dia hitantsika fa ny enta-mavesatra eo amin'ny processeur dia tsy niverina tamin'ny sanda ilaina alohan'ny fianjerana. Ary ao amin'ny tabilao ambany havanana no misy ny antony. Hita fa misy fitadidiana sasany karohina ao. Izany hoe, mba hahitana ny tsipika ilaina, dia mandany ny loharanon'ny mpizara database isika rehefa mandamina angona tsy misy ilana azy. Nilamina ny isan'ny fifanakalozana isan-tsegondra.

Tsara amin'ny ankapobeny, saingy ratsy noho ny teo aloha ny toe-javatra. Hazavao ny fahapotehan'ny angon-drakitra vokatry ny fampiharanay izay miasa miaraka amin'ity angona ity.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary mba hahatakarana ny zava-mitranga any, raha tsy teo amin'ny tatitra teo aloha ianao dia andao izao haka teoria kely. Ny teoria momba ny dingana anatiny. Nahoana no misy banga fiara ary inona no ataony?

Fohy ara-bakiteny ho an'ny fahatakarana. Amin'ny fotoana iray dia manana latabatra izahay. Manana andalana eo amin'ny latabatra izahay. Ireo tsipika ireo dia mety ho mavitrika, velona, ​​ary izay ilaintsika ankehitriny. Misy marika maitso eo amin'ny sary izy ireo. Ary misy tsipika maty izay efa novolavolaina, nohavaozina, ary nisy lahatsoratra vaovao niseho tamin'izy ireo. Ary marihina izy ireo fa tsy mahaliana ny angon-drakitra intsony. Saingy eo amin'ny latabatra izy ireo noho ny endri-javatra Postgres.

Nahoana ianao no mila vacuum fiara? Amin'ny fotoana iray, tonga ny autovacuum, miditra amin'ny angon-drakitra ary manontany azy hoe: "Mba omeo ahy ny id amin'ny varotra tranainy indrindra izay misokatra amin'izao fotoana izao ao amin'ny tahiry." Ny angon-drakitra dia mamerina ity id ity. Ary ny autovacuum, miantehitra amin'izany, dia mandamina ny tsipika eo amin'ny latabatra. Ary raha hitany fa novain'ny fifampiraharahana tranainy be ny andalana sasany, dia manan-jo hanisy marika azy ireo ho andalana izay azontsika ampiasaina indray amin'ny ho avy amin'ny fanoratana angona vaovao ao. Ity dia dingana ambadika.

Amin'izao fotoana izao, manohy miasa miaraka amin'ny angon-drakitra izahay ary manohy manao fanovana vitsivitsy amin'ny latabatra. Ary amin'ireo andalana ireo, izay azontsika ampiasaina indray, dia manoratra angona vaovao isika. Ary noho izany dia mahazo tsingerina isika, izany hoe amin'ny fotoana rehetra misy andalana efa maty miseho eo, fa tsy izy ireo dia manoratra andalana vaovao ilaintsika. Ary izany dia fanjakana mahazatra ho an'ny PostgreSQL miasa.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Inona no nitranga nandritra ny loza? Ahoana no nitrangan'izany dingana izany tany?

Nanana famantarana izahay tamin'ny toe-javatra sasany, ny sasany velona, ​​ny sasany maty. Tonga ny banga fiara. Nanontany ny angon-drakitra izy hoe inona ny varotra tranainy indrindra ataontsika ary inona ny id-ny. Nahazo ity ID ity aho, izay mety ho ora maro lasa izay, angamba folo minitra lasa izay. Miankina amin'ny halehiben'ny enta-mavesatra anananao amin'ny angon-drakitrao izany. Ary nandeha nitady tsipika azony marika ho ampiasaina indray izy. Ary tsy nahita andalana toy izany tao amin'ny latabatray aho.

Saingy amin'izao fotoana izao dia manohy miasa miaraka amin'ny latabatra izahay. Manao zavatra ao anatiny izahay, manavao azy, manova ny angona. Inona no tokony hataon'ny database amin'izao fotoana izao? Tsy manan-tsafidy afa-tsy ny manampy andalana vaovao amin'ny faran'ny latabatra efa misy izy. Ary dia toy izany no manomboka mivonto ny haben'ny latabatra.

Raha ny tena izy dia mila tsipika maitso isika mba hiasa. Saingy mandritra ny olana toy izany dia hita fa ambany dia ambany ny isan-jaton'ny tsipika maitso manerana ny latabatra iray manontolo.

Ary rehefa manatanteraka fanontaniana isika dia tsy maintsy mandalo ny andalana rehetra ny angon-drakitra: mena na maitso, mba hahitana ny tsipika irina. Ary ny fiantraikan'ny fivontosana latabatra miaraka amin'ny angon-drakitra tsy misy ilana azy dia antsoina hoe "bloat", izay mihinana ihany koa ny habaka kapila. Tadidio fa 2 MB ilay izy, lasa 300 MB? Ovay ho gigabytes izao ny megabytes dia ho very haingana ny loharanon-kapilanao rehetra.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Inona no mety ho vokany amintsika?

  • Amin'ny ohatra nataoko dia nitombo in-150 ny latabatra sy ny index. Ny sasany amin'ireo mpanjifanay dia nanana tranga mahafaty kokoa rehefa nanomboka lany ny habaka kapila.
  • Tsy hihena mihitsy ny haben'ny latabatra. Autovacuum amin'ny toe-javatra sasany dia afaka manapaka ny rambon'ny latabatra raha tsy misy afa-tsy tsipika maty. Saingy satria misy fihodinana tsy tapaka, ny tsipika maitso iray dia mety hivaingana amin'ny farany ary tsy havaozina, fa ny hafa rehetra dia hosoratana any amin'ny fiandohan'ny takelaka. Saingy hetsika tsy azo inoana loatra izany ka hihena ny haben'ny latabatrao, ka tsy tokony hanantena izany ianao.
  • Mila mandamina andalana tsy misy ilana azy ny angon-drakitra. Ary mandany loharanon-kapila izahay, mandany loharanon-karena sy herinaratra.
  • Ary misy fiantraikany mivantana amin'ny fampiharana ataontsika izany, satria raha nandany 10 milliseconds tamin'ny fangatahana izahay, 10 milliseconds amin'ny code, dia nandritra ny fianjerana dia nanomboka nandany segondra iray izahay tamin'ny fangatahana ary 10 milliseconds tamin'ny code, i.e. nihena ny haben'ny fampiharana fampiharana. Ary rehefa voavaha ny loza dia nanomboka nandany 20 milisegondra izahay tamin'ny fangatahana iray, 10 milisegondra tamin'ny fehezan-dalΓ na iray. Midika izany fa mbola nihena in-droa sy tapany ny vokatra. Ary izany rehetra izany dia noho ny fifampiraharahana iray izay nivaingana, angamba noho ny fahadisoantsika.
  • Ary ny fanontaniana hoe: "Ahoana no hamerenana ny zava-drehetra?" mba hilamina ny zava-drehetra amintsika ary ny fangatahana dia tonga haingana toy ny talohan'ny loza.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ho an'ity tanjona ity dia misy tsingerin'ny asa atao.

Voalohany dia mila mitady ireo tabilao misy olana izay mibontsina. Takatsika fa amin'ny tabilao sasany dia mavitrika kokoa ny fandraisam-peo, ao amin'ny hafa tsy mavitrika. Ary noho izany dia mampiasa ny fanitarana pgstattuple. Amin'ny fametrahana an'io fanitarana io dia afaka manoratra fanontaniana ianao izay hanampy anao hahita tabilao mibontsina be.

Rehefa hitanao ireo tabilao ireo dia mila manindry azy ireo ianao. Efa misy fitaovana hanaovana izany. Amin'ny orinasanay dia mampiasa fitaovana telo izahay. Ny voalohany dia ny VACUUM FULL naorina. Masiaka sy masiaka ary tsy misy indrafo izy, nefa tena ilaina indraindray. Pg_repack ΠΈ pgcompacttable - Fampiasana an'ny antoko fahatelo amin'ny fanerena latabatra. Ary karakarain'izy ireo tsara kokoa ny angon-drakitra.

Izy ireo dia ampiasaina arakaraka izay mety aminao kokoa. Saingy holazaiko aminao izany amin'ny farany. Ny tena zava-dehibe dia misy fitaovana telo. Betsaka ny azo isafidianana.

Rehefa avy nanamboatra ny zava-drehetra sy nanao izay tsara rehetra isika dia tsy maintsy mahafantatra ny fomba hisorohana izany toe-javatra izany amin'ny ho avy:

  • Azo sorohina mora foana izany. Mila manara-maso ny faharetan'ny fotoam-pivoriana amin'ny mpizara Master ianao. Fivoriana mampidi-doza indrindra amin'ny tsy miasa amin'ny toe-draharaha. Ireo no vao nanokatra transaction, nanao zavatra dia niala, na nanantona fotsiny, very tao anaty code.
  • Ary ho anao, amin'ny maha-mpamorona azy, dia zava-dehibe ny mitsapa ny kaodinao rehefa miseho ireo toe-javatra ireo. Tsy sarotra ny manao izany. Izany dia ho fanamarinana mahasoa. Hiala amin'ny olana "ankizy" marobe mifandraika amin'ny fifampiraharahana lava ianao.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ao amin'ireo grafika ireo dia tiako ny hampiseho aminao ny fiovan'ny famantarana sy ny fihetsiky ny angon-drakitra taorian'ny nandalovako ny famantarana miaraka amin'ny VACUUM FULL amin'ity tranga ity. Tsy famokarana izany amiko.

Niverina avy hatrany tamin'ny fampandehanana ara-dalΓ na roa megabytes ny haben'ny latabatra. Tsy nisy fiantraikany be teo amin'ny salanisan'ny fotoana famaliana ny mpizara izany.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Fa manokana ho an'ny famantarana fitsapana, izay nanavaozana ny balan'ny kaonty, dia hitantsika fa ny salan'isan'ny fotoana famaliana ho an'ny fangatahana fanavaozana ny angona ao amin'ny famantarana dia nihena ho amin'ny ambaratonga mialoha ny hamehana. Ny loharanon-karena lanin'ny processeur mba hamitana an'io fangatahana io dia nidina tany amin'ny ambaratonga mialoha ny fianjerana. Ary ny kisary ambany havanana dia mampiseho fa ankehitriny isika dia mahita tsara ny tsipika izay ilaintsika avy hatrany, tsy mandalo ny antontam-bato maty izay teo talohan'ny nanery ny latabatra. Ary ny salanisan'ny fotoana fangatahana dia nijanona teo amin'ny ambaratonga mitovy. Saingy eto aho dia manana hadisoana amin'ny fitaovako.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Eto no nifarana ny tantara voalohany. Io no mahazatra indrindra. Ary mitranga amin'ny rehetra izany, na inona na inona traikefan'ny mpanjifa sy ny fahaizan'ny programmer. Na ho ela na ho haingana dia mitranga izany.

Ny tantara faharoa, izay mizara ny entana sy manatsara ny loharanon'ny mpizara

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

  • Efa lehibe izahay ary lasa lehilahy matotra. Ary takatsika fa manana kopia isika ary tsara ho antsika ny mandanjalanja ny enta-mavesatra: manorata ho an'ny Mpampianatra, ary vakio ny kopia. Ary matetika dia mitranga izany toe-javatra izany rehefa te hanomana tatitra sasany na ETL isika. Ary tena faly amin'izany ny orinasa. Tena tadiaviny ny tatitra isan-karazany miaraka amin'ny fanadihadiana be pitsiny.
  • Mila ora maro ny tatitra, satria tsy azo kajy ao anatin'ny milisegondra ny fanadihadiana sarotra. Izahay, tahaka ny lehilahy be herim-po, dia manoratra kaody. Ao amin'ny fampiharana fampidirana dia manao ny firaketana amin'ny Master izahay, ary manatanteraka ny tatitra momba ny kopia.
  • Fizarana ny entana.
  • Miasa tsara ny zava-drehetra. Tsara izahay.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary manao ahoana izany toe-javatra izany? Amin'ireo grafika ireo, dia nampiako ny faharetan'ny fifampiraharahana avy amin'ny dika mitovy amin'ny faharetan'ny fifanakalozana. Ny grafika hafa rehetra dia manondro ny mpizara Master ihany.

Tamin'io fotoana io dia nitombo ny biraon'ny tatitra nataoko. Mbola betsaka kokoa izy ireo. Hitantsika fa ny salan'isan'ny fotoana famalian'ny mpizara dia milamina. Hitantsika fa amin'ny kopia dia misy fifampiraharahana maharitra maharitra mandritra ny 2 ora. Hitantsika fa miasa mangina ny autovacuum, izay manodina tsipika maty. Ary tsara ny zava-drehetra amintsika.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Amin'ny ankapobeny, araka ny takelaka andrana, dia manohy ny fanavaozana ny fifandanjan'ny kaonty any izahay. Ary manana fotoana famaliana marin-toerana ihany koa izahay ho an'ny fangatahana, fanjifana loharano azo antoka. Tsara ny zava-drehetra amintsika.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Milamina ny zava-drehetra mandra-pahatongan'ny fotoana hanombohan'ireo tatitra ireo hiverina noho ny fifanoherana amin'ny kopia. Ary nitifitra tsy tapaka izy ireo.

Mandeha an-tserasera izahay ary manomboka mamaky ny antony mahatonga izany. Ary mahita vahaolana izahay.

Ny vahaolana voalohany dia ny fampitomboana ny faharetan'ny replication. Fantatray fa mandeha mandritra ny 3 ora ny tatitray. Nametraka ny fanemorana ny famerenana ho 3 ora izahay. Mandeha ny zava-drehetra izahay, saingy mbola mitohy ny olana amin'ny fanafoanana ny tatitra indraindray.

Tianay ho tonga lafatra ny zava-drehetra. Mihanika bebe kokoa izahay. Ary nahita toerana mahafinaritra izahay tao amin'ny Internet - hot_standby_feedback. Andeha hovelomina. Hot_standby_feedback dia ahafahantsika mitazona ny autovacuum amin'ny Master. Noho izany, esorinay tanteraka ny fifandirana amin'ny kopia. Ary miasa tsara ho antsika ny zava-drehetra miaraka amin'ny tatitra.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary inona no mitranga amin'ny mpizara Master amin'izao fotoana izao? Ary sahirana tanteraka izahay amin'ny mpizara Master. Hitantsika izao ny grafika rehefa navelako ireo fanovana roa ireo. Ary hitantsika fa nanomboka nisy fiantraikany tamin'ny toe-javatra teo amin'ny mpizara Master ny fivoriana tamin'ny kopia anay. Misy fiantraikany tokoa izy satria nampiato ny autovacuum, izay manala ny tsipika maty. Nitombo indray ny haben'ny latabatray. Niakatra be ihany koa ny salanisan'ny fotoana fanatanterahana ny fangatahana manerana ny angon-drakitra manontolo. Nihena kely ny autovacuums.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Amin'ny ankapobeny, avy amin'ny takelakay dia hitantsika fa nitsambikina eny amin'ny lanitra ihany koa ny fanavaozana ny angona momba azy. Nitombo be toy izany koa ny fanjifana CPU. Mandalo tsipika maty tsy misy ilana azy indray isika. Ary nihena ny fotoana famaliana an'io famantarana io sy ny isan'ny fifanakalozana.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Hanao ahoana izany raha tsy fantatsika izay nolazaiko teo aloha?

  • Manomboka mitady olana isika. Raha sendra olana isika tamin'ny tapany voalohany, dia fantatsika fa mety ho noho ny fifampiraharahana lava izany ary mankany amin'ny Tompo. Manana olana amin'ny Master izahay. Saosisy azy. Mafana izy io, eo amin'ny zato eo ho eo ny Load Average.
  • Miadana ny fangatahana any, saingy tsy mahita fifampiraharahana maharitra any. Ary tsy azonay ny zava-misy. Tsy azonay hoe aiza no hijerena.
  • Manamarina ny fitaovana mpizara izahay. Angamba nianjera ny fanafihana nataonay. Mety ho may ny tadin-tsaintsika. Eny, mety hitranga na inona na inona. Saingy tsia, vaovao ny mpizara, mandeha tsara ny zava-drehetra.
  • Mihazakazaka daholo ny rehetra: mpitantana, mpamorona ary tale. Tsy misy manampy.
  • Ary amin'ny fotoana iray dia manomboka manitsy tampoka ny zava-drehetra.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Tamin'io fotoana io, ny fangatahana tamin'ny kopianay dia nokarakaraina ary navela. Nahazo ny tatitra izahay. Mbola faly ny orinasa. Araka ny hitanao dia nitombo indray ny famantarana antsika ary tsy hihena. Ao amin'ny grafika miaraka amin'ny sessions, namela ampahany amin'ity fifampiraharahana lava ity avy amin'ny kopia iray aho mba hahafahanao manombana ny faharetan'ny fotoana mandra-pahatongan'ny toe-draharaha.

Tapitra ny fivoriana. Ary rehefa afaka kelikely, dia tonga amin'ny filaharana ny mpizara. Ary miverina amin'ny ara-dalΓ na ny salanisan'ny fotoana famaliana ny fangatahana amin'ny mpizara Master. Satria, farany, ny autovacuum dia manana fahafahana hanadio sy hanamarihana ireo tsipika maty ireo. Ary nanomboka nanao ny asany izy. Ary haingana manao izany, dia haingana dia hilamina isika.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Araka ny takelaka voasedra, izay hanavaozana ny fifandanjan'ny kaonty, dia mahita sary mitovy tanteraka isika. Ny salan'isan'ny fotoana fanavaozam-baovaon'ny kaonty dia mizotra tsikelikely ihany koa. Mihena ihany koa ny loharanon-karena lanin'ny processeur. Ary miverina amin'ny laoniny ny isan'ny fifanakalozana isan-tsegondra. Niverina tamin’ny laoniny indray anefa izahay, fa tsy nitovy tamin’ny taloha ny loza.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Na izany na tsy izany, dia mahazo fihenam-bidy isika, toy ny tamin'ny tranga voalohany, in-droa sy tapany, ary indraindray mihoatra.

Toa vitantsika tsara ny zava-drehetra. Zarao ny entana. Ny fitaovana dia tsy miasa. Nozarainay araka ny sainay ny fangatahana, saingy mbola ratsy ny zava-drehetra.

  • Aza avela hot_standby_feedback? Eny, tsy soso-kevitra ny hampandeha azy tsy misy antony mafonja. Satria miantraika mivantana amin'ny mpizara Master io fiolanana io ary mampiato ny fiasan'ny autovacuum ao. Amin'ny alΓ lan'ny fampandehanana azy amin'ny kopia sasany ary ny fanadinoana azy dia azonao atao ny mamono ny Master ary mahazo olana lehibe amin'ny fampiharana.
  • Ampitomboy max_standby_streaming_delay? Eny, marina izany raha ny tatitra. Raha manana tatitra adiny telo ianao ary tsy tianao ny hianjera noho ny fifandirana amin'ny replication, dia ampitomboy fotsiny ny fahatarana. Ny tatitra maharitra dia tsy mitaky angona tonga ao amin'ny angon-drakitra amin'izao fotoana izao. Raha manana izany mandritra ny adiny telo ianao dia mihazakazaka izany mandritra ny vanim-potoana angon-drakitra taloha. Ary ho anao, na misy fahatarana adiny telo na fahatarana adiny enina dia tsy hisy fiovana, fa hahazo tatitra tsy tapaka ianao ary tsy hisy olana amin'ny fianjeran'izy ireo.
  • Mazava ho azy fa mila mifehy fivoriana lava amin'ny kopia ianao, indrindra raha manapa-kevitra ny hamela hot_standby_feedback amin'ny kopia iray ianao. Satria na inona na inona mety hitranga. Nomenay ity dika mitovy ity ny mpamorona mba hahafahany mitsapa ny fangatahana. Nanoratra fangatahana adala izy. Nandefa izany izy ary nandeha nisotro dite, ary nahazo ilay Mpampianatra efa voaorina izahay. Na mety diso ny fampiharana napetrakay tao. Miovaova ny toe-javatra. Ny fotoam-pivoriana momba ny kopia dia tsy maintsy araha-maso tsara toy ny amin'ny Mpitarika.
  • Ary raha manana fanontaniana haingana sy lava momba ny kopia ianao, amin'ity tranga ity dia tsara kokoa ny mizara azy ireo mba hizarana ny entana. Ity dia rohy mankany amin'ny streaming_delay. Ho an'ny haingana dia manana kopia iray misy fahatarana kely. Ho an'ny fangatahan'ny tatitra maharitra, dia manana kopia izay mety ho tara 6 ora na isan'andro. Toe-javatra mahazatra tanteraka izany.

Manafoana ny vokany amin'ny fomba mitovy isika:

  • Hitanay latabatra mibontsina.
  • Ary manindry azy amin'ny fitaovana mety indrindra izay mety amintsika.

Mifarana eto ny tantara faharoa. Andao hiroso amin’ny tantara fahatelo.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Tena mahazatra antsika koa ny fifindra-monina.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

  • Ny vokatra rindrambaiko rehetra dia mitombo. Miova ny fepetra takiana amin’izany. Na izany na tsy izany dia te hivoatra isika. Ary ny zava-mitranga dia mila manavao ny angon-drakitra ao amin'ny latabatra isika, izany hoe ny fampandehanana fanavaozana amin'ny resaka fifindra-monina ho an'ny fiasa vaovao ampidirintsika ho ampahany amin'ny fivoarantsika.
  • Tsy mahafa-po ny format data taloha. Andeha hatao hoe mitodika any amin'ny latabatra faharoa isika, izay misy ny fifampiraharahana amin'ireo kaonty ireo. Ary andao lazaina fa ao amin'ny roubles izy ireo, ary nanapa-kevitra ny hampitombo ny marina izahay ary hanao izany amin'ny kopecks. Ary noho izany dia mila manao fanavaozana isika: ampitomboy zato ny saha miaraka amin'ny volan'ny fifanakalozana.
  • Amin'izao tontolo ankehitriny izao, mampiasa fitaovana fanaraha-maso ny dikan-dikan-drakitra mandeha ho azy izahay. Andeha atao hoe Liquibase. Manoratra ny fifindra-moninay any izahay. Andramo izany amin'ny toby fitsapana. Tsara ny zava-drehetra. Mandeha ny fanavaozana. Manakana ny asa mandritra ny fotoana fohy izy io, saingy mahazo angon-drakitra vaovao izahay. Ary afaka manomboka fiasa vaovao amin'izany isika. Nosedraina sy nojerena ny zava-drehetra. Nohamafisina ny zava-drehetra.
  • Nanao asa nomanina izahay ary nanatanteraka ny fifindra-monina.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ity ny fifindra-monina miaraka amin'ny fanavaozana aseho eo anoloanao. Satria ireo no transactions kaontiko dia 15 GB ny takelaka. Ary satria nohavaozinay ny andalana tsirairay, dia nampitomboinay avo roa heny ny haben'ny latabatra miaraka amin'ny fanavaozana, satria naverinay ny andalana tsirairay.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Nandritra ny fifindra-monina dia tsy afaka nanao na inona na inona tamin'ity takelaka ity izahay, satria nilahatra ny fangatahana rehetra momba izany ary niandry mandra-pahavitan'ity fanavaozana ity. Fa eto aho dia te-hisarika ny sainao amin'ny isa izay eo amin'ny axis mitsangana. Izany hoe, manana fotoana fangatahana antonony alohan'ny fifindra-monina eo amin'ny 5 milliseconds sy ny enta-mavesatra processeur, ny isan'ny asa fanakanana ny famakiana ny kapila fahatsiarovana dia latsaky ny 7,5.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Nanao ny fifindra-monina izahay ary nahazo olana indray.

Nahomby ny fifindra-monina, saingy:

  • Mitaky ela kokoa ny fampiasa taloha vao vita.
  • Nitombo indray ny latabatra.
  • Lasa lehibe kokoa noho ny teo aloha indray ny entana teo amin'ny mpizara.
  • Ary, mazava ho azy, mbola mijery ny fiasa izay niasa tsara izahay, nohatsarainay kely izany.

Ary izany indray dia bloat, izay manimba ny fiainantsika indray.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Eto aho dia mampiseho fa ny latabatra, toy ireo tranga roa teo aloha, dia tsy hiverina amin'ny habeny teo aloha. Toa ampy ny enta-mavesatry ny mpizara antonony.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary raha mitodika any amin'ny latabatra misy kaonty isika dia ho hitantsika fa nitombo avo roa heny ny salan'ny fotoana fangatahana ho an'ity latabatra ity. Ny enta-mavesatra eo amin'ny processeur sy ny isan'ny andalana voalamina ao amin'ny fitadidiana dia nitsambikina mihoatra ny 7,5, saingy ambany kokoa. Ary nitsambikina in-2 izany tamin'ny raharaha processeur, in-1,5 tamin'ny raharaha fanakanana, izany hoe nahazo fahasimbana amin'ny fahombiazan'ny server. Ary vokatr'izany - ny fahasimban'ny fahombiazan'ny fampiharana anay. Nandritra izany fotoana izany, ny isan'ny antso dia nijanona teo amin'ny ambaratonga mitovy.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Ary ny tena zava-dehibe eto dia ny mahatakatra ny fomba hanaovana tsara ny fifindra-monina toy izany. Ary mila atao izy ireo. Manao ireny fifindra-monina ireny tsy tapaka izahay.

  • Tsy mandeha ho azy ny fifindra-monina lehibe toy izany. Tsy maintsy voafehy foana izy ireo.
  • Ilaina ny fanaraha-maso ataon'ny olona mahay. Raha manana DBA ianao ao amin'ny ekipanao dia avelao ny DBA hanao izany. Ny asany. Raha tsy izany dia avelao ny olona za-draharaha indrindra hanao izany, izay mahay miasa amin'ny angon-drakitra.
  • Tetika vaovao momba ny angon-drakitra, na dia manavao tsanganana iray aza isika, dia miomana tsikelikely, izany hoe mialoha alohan'ny hivoahan'ny dikan-teny vaovao:
  • Miampy saha vaovao izay handrakitra ny angona nohavaozina.
  • Mamindra angona avy amin'ny saha taloha mankany amin'ny saha vaovao amin'ny ampahany kely izahay. Nahoana isika no manao izany? Voalohany, mifehy foana ny fizotran'ity dingana ity izahay. Fantatray fa efa namindra andiany maro be izahay ary mbola betsaka ny sisa.
  • Ary ny vokatra tsara faharoa dia ny hoe eo anelanelan'ny andiany tsirairay dia manidy ny fifampiraharahana isika, manokatra iray vaovao, ary izany dia mamela ny autovacuum miasa araka ny takelaka, manamarika tsipika maty ho an'ny fampiasana indray.
  • Ho an'ireo tsipika izay hiseho rehefa mandeha ny fampiharana (mbola manana ny fampiharana taloha izahay), dia manampy trigger izay manoratra soatoavina vaovao amin'ny saha vaovao. Amin'ny tranga misy antsika, izany dia fampitomboana zato amin'ny sanda taloha.
  • Raha mafy loha tanteraka isika ary maniry ny saha iray ihany, dia rehefa vita ny fifindra-monina rehetra ary alohan'ny hamoahana dikan-teny vaovao amin'ny fampiharana, dia manonona anarana fotsiny ny saha. Ny taloha dia nomena anarana noforonina, ary ny saha vaovao dia nomena anarana taloha.
  • Ary aorian'izay dia manomboka ny dikan-teny vaovao amin'ny fampiharana.

Ary amin'izay fotoana izay dia tsy hahazo bloat isika ary tsy hijaly amin'ny lafiny fampisehoana.

Teo no nifarana ny tantara fahatelo.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny 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

Ary ankehitriny antsipiriany bebe kokoa momba ireo fitaovana nolazaiko tao amin'ny tantara voalohany indrindra.

Alohan'ny hikaroka bloat dia tsy maintsy mametraka ny fanitarana ianao pgstattuple.

Mba tsy mila mametraka fanontaniana ianao dia efa nanoratra ireo fanontaniana ireo tao amin'ny asantsika. Afaka mampiasa azy ireo ianao. Misy fangatahana roa eto.

  • Ny voalohany dia mila fotoana ela be vao miasa, fa hampiseho aminao ny tena sanda bloat avy amin'ny latabatra.
  • Ny faharoa dia miasa haingana kokoa ary tena mandaitra rehefa mila manombatombana haingana raha misy bloat na tsia araka ny latabatra. Ary tokony ho azonao ihany koa fa misy foana ny bloat amin'ny latabatra Postgres. Ity dia singa iray amin'ny modely MVCC.
  • Ary ny 20% bloat dia mahazatra amin'ny latabatra amin'ny ankamaroan'ny tranga. Izany hoe tsy tokony hanahy sy hanery ity latabatra ity ianao.

Noheverinay ny fomba hamantarana tabilao mivonto amin'ny angona tsy misy ilana azy.

Ahoana no hamahana ny bloat izao:

  • Raha manana tablette kely sy kapila tsara isika, izany hoe amin'ny tablette hatramin'ny gigabyte dia azo atao tsara ny mampiasa VACUUM FULL. Handray hidy manokana avy aminao eo ambony latabatra mandritra ny segondra vitsy izy ary mety, fa hanao ny zava-drehetra haingana sy henjana izy. Inona no atao hoe VACUUM FULL? Mitaky hidy manokana eo amin'ny latabatra izy io ary mamerina manoratra andalana mivantana avy amin'ireo latabatra taloha ho any amin'ny latabatra vaovao. Ary amin'ny farany dia manolo azy ireo izy. Izy io dia mamafa ny rakitra taloha ary manolo ny taloha amin'ny vaovao. Saingy mandritra ny faharetan'ny asany dia mila hidy manokana eo ambony latabatra. Midika izany fa tsy afaka manao na inona na inona amin'ity latabatra ity ianao: na manoratra aminy, na mamaky azy, na manova azy. Ary ny VACUUM FULL dia mila habaka kapila fanampiny hanoratana angona.
  • Fitaovana manaraka pg_repack. Amin'ny foto-keviny dia tena mitovy amin'ny VACUUM FULL izy io, satria mamerina manoratra ny angona avy amin'ny rakitra taloha amin'ny vaovao ary manolo azy ireo ao anaty latabatra. Saingy amin'izany fotoana izany dia tsy maka hidin-trano manokana eo amin'ny latabatra izy amin'ny fiandohan'ny asany, fa alainy ihany amin'ny fotoana efa misy angona vonona hanoloana ny rakitra. Ny fitakiana loharanon-kapilany dia mitovy amin'ny an'ny VACUUM FULL. Mila habaka kapila fanampiny ianao, ary tena ilaina izany indraindray raha manana latabatra terabyte ianao. Ary tena noana processeur satria miasa miaraka amin'ny I/O izy.
  • Ny utility fahatelo dia pgcompacttable. Mitandrema kokoa amin'ny loharanon-karena satria miasa mifanaraka amin'ny fitsipika hafa kely. Ny hevi-dehibe amin'ny pgcompacttable dia ny mamindra ny andalana mivantana rehetra mankany amin'ny fiandohan'ny latabatra amin'ny fampiasana fanavaozana ao amin'ny latabatra. Ary avy eo dia misy banga eo amin'ity latabatra ity, satria fantatsika fa manana andalana velona isika eo am-piandohana ary andalana maty any amin'ny farany. Ary ny banga mihitsy no manapaka io rambony io, izany hoe tsy mila habaka kapila fanampiny. Ary amin'izay fotoana izay dia mbola azo tsindriana amin'ny lafiny loharanon-karena.

Ny zava-drehetra miaraka amin'ny fitaovana.

Fahadisoana mahazatra amin'ny fampiharana izay mitarika amin'ny bloat amin'ny postgresql. Andrey Salnikov

Raha hitanao fa mahaliana ny lohahevitra bloat amin'ny resaka fandalinana bebe kokoa ao anatiny, ireto misy rohy mahasoa:

Niezaka bebe kokoa aho hampiseho tantara mampihoron-koditra ho an'ny mpamorona, satria mpanjifa mivantana amin'ny angon-drakitra izy ireo ary tsy maintsy mahatakatra hoe inona ary inona no atao. Manantena aho fa nahomby aho. Misaotra anao noho ny fifantohanao!

Ny fanontanianao

Misaotra tamin'ny tatitra! Niresaka momba ny fomba hamantarana olana ianao. Ahoana no hampitandremana azy ireo? Izany hoe, nanana toe-javatra aho izay nihantona ny fangatahana tsy noho izy ireo niditra tamin'ny serivisy ivelany sasany. Fiaraha-miombon'antoka fotsiny ireo. Nisy fangatahana kely tsy mampidi-doza izay nihantona nandritra ny iray andro, ary avy eo dia nanomboka nanao zavatra tsy misy dikany. Izany hoe mitovitovy amin'izay lazainao. Ahoana no hanarahana an'ity? Mipetraha ary jereo tsy tapaka izay fangatahana mijanona? Ahoana no hisorohana izany?

Amin'ity tranga ity, asa ho an'ny mpitantana ny orinasanao izany, fa tsy voatery ho an'ny DBA.

Mpitantana aho.

PostgreSQL dia manana fijery antsoina hoe pg_stat_activity izay mampiseho fanontaniana mihantona. Ary hitanao hoe hafiriana no mihantona eo.

Tsy maintsy miditra sy mijery isaky ny 5 minitra ve aho?

Amboary ny cron ary jereo. Raha manana fangatahana maharitra ianao dia manorata taratasy dia izay ihany. Izany hoe, tsy mila mijery amin'ny masonao ianao, afaka mandeha ho azy. Hahazo taratasy ianao, mihetsika amin'izany ianao. Na azonao atao ny mitifitra ho azy.

Misy antony mazava ve mahatonga izany?

Notanisaiko ny sasany. Ohatra hafa sarotra kokoa. Ary mety hisy resaka lava.

Misaotra tamin'ny tatitra! Te-hanazava momba ny pg_repack utility aho. Raha tsy manao hidy manokana izy dia...

Manao hidy manokana izy.

... dia mety ho very data aho. Tsy tokony handraketana na inona na inona ve ny fangatahako mandritra io fotoana io?

Tsia, miasa tsara miaraka amin'ny latabatra izy io, izany hoe ny pg_repack dia mamindra ny andalana mivantana rehetra misy. Mazava ho azy fa misy karazana fidirana ao amin'ny latabatra misy ao. Nariany fotsiny io rambony io.

Izany hoe, tena manao izany izy amin'ny farany?

Amin'ny farany dia maka hidy manokana izy mba hanakalozana ireo rakitra ireo.

Haingana kokoa noho ny VACUUM FULL ve izany?

VACUUM FULL, raha vao nanomboka dia naka hidy manokana avy hatrany. Ary mandra-panaony ny zava-drehetra, dia tsy hamela azy handeha izy. Ary ny pg_repack dia maka hidy manokana ihany amin'ny fotoana fanoloana rakitra. Amin'izao fotoana izao dia tsy hanoratra any ianao, fa ny angon-drakitra dia tsy ho very, ny zava-drehetra dia ho tsara.

Salama! Niresaka momba ny fiasan'ny banga fiara ianao. Nisy tabilao misy sela mena, mavo ary maitso. Izany hoe ireo mavo - nomarihany ho voafafa. Ary vokatr'izany, misy zavatra vaovao azo soratana ao aminy?

Eny. Tsy mamafa andalana ny Postgres. Manana manokana toy izany izy. Raha nanavao ny tsipika iray izahay, dia nomarihintsika ho voafafa ilay tsipika taloha. Ny id amin'ny fifanakalozana izay nanova an'io andalana io dia miseho eo, ary manoratra andalana vaovao izahay. Ary manana fotoam-pivoriana mety hamaky azy ireo izahay. Indraindray dia lasa antitra be izy ireo. Ary ny fototry ny fomba fiasan'ny autovacuum dia ny fandehanana amin'ireo andalana ireo ary manamarika azy ireo ho tsy ilaina. Ary azonao atao ny manova ny angona ao.

Azoko. Saingy tsy izany no fanontaniana mipetraka. tsy vitako. Aoka hatao hoe manana latabatra isika. Manana sehatra miovaova habe izy io. Ary raha manandrana mampiditra zava-baovao aho, dia mety tsy hiditra amin'ny sela taloha fotsiny izany.

Tsia, na izany na tsy izany dia havaozina ao ny andalana manontolo. Postgres dia manana modely fitahirizana data roa. Mifidy avy amin'ny karazana data izy io. Misy angon-drakitra voatahiry mivantana ao anaty latabatra, ary misy koa ny data tos. Data be dia be ireto: text, json. Tehirizina ao anaty takelaka misaraka izy ireo. Ary araka ireo takelaka ireo, ny tantara mitovy amin'ny bloat dia mitranga, izany hoe ny zava-drehetra dia mitovy. Voatanisa misaraka fotsiny izy ireo.

Misaotra tamin'ny tatitra! Azo ekena ve ny mampiasa fanontaniana momba ny fotoana fiafaran'ny fanambarana mba hamerana ny faharetany?

Tena azo ekena. Ampiasainay na aiza na aiza izany. Ary satria tsy manana serivisy manokana izahay, manome fanohanana lavitra izahay, manana mpanjifa isan-karazany izahay. Ary afa-po tanteraka amin’izany ny rehetra. Izany hoe, manana asa cron izay manamarina. Ny faharetan'ny fotoam-pivoriana dia ifanarahana tsotra izao amin'ny mpanjifa, izay tsy ekenay aloha. Mety ho iray minitra, mety ho 10 minitra. Izany dia miankina amin'ny enta-mavesatra eo amin'ny fototra sy ny tanjony. Fa isika rehetra dia mampiasa pg_stat_activity.

Misaotra tamin'ny tatitra! Miezaka mampihatra ny tatitrao amin'ny fangatahako aho. Ary toa manomboka fifampiraharahana na aiza na aiza, ary mamita izany mazava tsara eny rehetra eny. Raha misy maningana dia mbola misy ny famerenana indray. Dia nanomboka nieritreritra aho. Rehefa dinihina tokoa, ny raharaham-barotra dia mety tsy manomboka mazava. Soso-kevitra ho an'ilay tovovavy angamba izany. Raha manavao rakitra fotsiny aho, hanomboka amin'ny PostgreSQL ve ny fifampiraharahana ary ho vita rehefa tapaka ny fifandraisana?

Raha miresaka momba ny haavon'ny fampiharana ianao dia miankina amin'ny mpamily izay ampiasainao, amin'ny ORM ampiasaina. Be dia be ny toe-javatra ao. Raha alefanao ny autocommit, dia manomboka eo ny fifampiraharahana ary mihidy avy hatrany.

Izany hoe mihidy avy hatrany aorian'ny fanavaozana?

Miankina amin'ny toe-javatra izany. Nanonona toerana iray aho. Auto commit on ity. Tena mahazatra izany. Raha avela izany dia misokatra sy mihidy ny fifampiraharahana. Raha tsy hoe "manomboka ny fifampiraharahana" sy ny "faran'ny fifampiraharahana" dia nilaza mazava ianao fa nandefa fangatahana fotsiny tao amin'ny fivoriana.

Salama! Misaotra tamin'ny tatitra! Alao sary an-tsaina fa manana database isika izay mivonto sy mivonto dia lany ny toerana eo amin'ny server. Misy fitaovana hanamboarana an'io toe-javatra io ve?

Ny habaka eo amin'ny mpizara dia mila arahi-maso tsara.

Ohatra, nandeha nisotro dite ny DBA, tany amin'ny toeram-pialan-tsasatra, sns.

Rehefa noforonina ny rafi-drakitra, farafaharatsiny karazana habaka backup izay tsy misy angon-drakitra voasoratra.

Ahoana raha ambany aotra tanteraka izany?

Eo no atao hoe toerana voatokana, izany hoe azo afahana ary miankina amin'ny haben'ny namoronana azy dia mahazo toerana malalaka ianao. Amin'ny alΓ lan'ny default dia tsy haiko firy ny isan'izy ireo. Ary amin'ny tranga iray hafa, manaterana kapila mba hanananao toerana hanaovana asa fanarenana. Azonao atao ny mamafa latabatra izay azo antoka fa tsy ilainao.

Misy fitaovana hafa ve?

Vita tanana foana. Ary eo an-toerana dia lasa mazava ny tsara indrindra atao any, satria misy angona manakiana ary ny sasany tsy mitsikera. Ary ho an'ny angon-drakitra tsirairay sy ny fampiharana miasa miaraka aminy, miankina amin'ny orinasa izany. Tapaka hatrany an-toerana izany.

Misaotra tamin'ny tatitra! Manana fanontaniana roa aho. Voalohany, nasehonao ny slides izay mampiseho fa rehefa mijanona ny fifanakalozana dia mitombo ny haben'ny latabatra sy ny haben'ny fanondro. Ary bebe kokoa amin'ny tatitra dia nisy andiana fitaovana izay mametaka ny takelaka. Ahoana ny amin'ny fanondroana?

Izy ireo koa no fonosina.

Saingy tsy misy fiantraikany amin'ny index ny banga?

Ny sasany dia miasa miaraka amin'ny index. Ohatra, pg_rapack, pgcompacttable. Ny banga dia mamerina ny index ary misy fiantraikany amin'izy ireo. Miaraka amin'ny VACUUM FULL ny hevitra dia ny hanosotra ny zava-drehetra, izany hoe miasa amin'ny rehetra.

Ary ny fanontaniana faharoa. Tsy azoko ny antony iankinan'ny tatitra momba ny dika mitovy amin'ilay replication mihitsy. Toa novakiako ny tatitra, ary soratana ny kopia.

Inona no mahatonga ny fifandirana replication? Manana Mpitarika momba ny fizotran'izany isika. Misy banga fiara mandeha. Inona no tena ataon'ny autovacuum? Manapaka andalana taloha izy. Raha toa ka manana fangatahana amin'ny kopia izay mamaky ireo andalana tranainy ireo isika amin'izao fotoana izao, ary amin'ny Mpitarika dia nisy toe-javatra nitranga fa ny autovacuum dia nanamarika ireo andalana ireo ho azo atao overwriting, dia nosoloinay. Ary nahazo fonosana angon-drakitra izahay, rehefa mila mamerina manoratra ireo andalana izay ilain'ny fangatahana amin'ny kopia, dia hiandry ny fe-potoana efa nomaninao ny fizotran'ny replication. Ary avy eo ny PostgreSQL dia hanapa-kevitra izay zava-dehibe kokoa amin'izany. Ary zava-dehibe aminy kokoa noho ny fangatahana ny kopia, ary hitifitra ny fangatahana izy mba hanaovana ireo fanovana ireo amin'ny kopia.

Andrey, manana fanontaniana aho. Ireto sary mahafinaritra nasehonao nandritra ny famelabelarana ireto, moa ve ireny vokatry ny asan'ny karazana fampiasanao? Ahoana no nanaovana ireo grafika?

Ity dia serivisy Okmeter.

Vokatra ara-barotra ve ity?

Eny. Ity dia vokatra ara-barotra.

Source: www.habr.com

Add a comment