Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Nissuġġerixxi li taqra t-traskrizzjoni tar-rapport mill-bidu tal-2016 minn Andrey Salnikov "Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa fil-postgresql"

F'dan ir-rapport, ser tanalizza l-iżbalji ewlenin fl-applikazzjonijiet li jinqalgħu fl-istadju tat-tfassil u l-kitba tal-kodiċi tal-applikazzjoni. U se nieħu biss dawk l-iżbalji li jwasslu għal nefħa f'Postgresql. Bħala regola, dan huwa l-bidu tat-tmiem tal-prestazzjoni tas-sistema tiegħek kollha kemm hi, għalkemm inizjalment l-ebda prerekwiżiti għal dan ma kienu viżibbli.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Kuntent li nilqgħu lil kulħadd! Dan ir-rapport mhuwiex tekniku daqs dak preċedenti mill-kollega tiegħi. Dan ir-rapport huwa mmirat prinċipalment għall-iżviluppaturi tas-sistema backend għaliex għandna numru pjuttost kbir ta 'klijenti. U kollha jagħmlu l-istess żbalji. Jien ngħidlek dwarhom. Se nispjega għal liema affarijiet fatali u ħżiena jwasslu dawn l-iżbalji.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Għaliex isiru żbalji? Dawn isiru għal żewġ raġunijiet: bl-addoċċ, forsi se taħdem u minħabba l-injoranza ta 'xi mekkaniżmi li jseħħu fil-livell bejn id-database u l-applikazzjoni, kif ukoll fid-database innifsu.

Nagħtikom tliet eżempji bi stampi terribbli ta’ kemm marru l-affarijiet ħżiena. Ngħidlek fil-qosor dwar il-mekkaniżmu li jiġri hemmhekk. U kif tittrattahom, meta ġraw, u liema metodi preventivi tuża biex tevita l-iżbalji. Jien ngħidlek dwar l-għodod awżiljarji u nipprovdi links utli.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Jien użajt database tat-test fejn kelli żewġ tabelli. Pjanċa waħda bil-kontijiet tal-klijenti, l-oħra bi tranżazzjonijiet fuq dawn il-kontijiet. U b'xi frekwenza naġġornaw il-bilanċi fuq dawn il-kontijiet.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Dejta inizjali tal-pjanċa: hija pjuttost żgħira, 2 MB. Il-ħin tar-rispons għad-database u speċifikament għas-sinjal huwa tajjeb ħafna wkoll. U tagħbija pjuttost tajba - 2 operazzjoni kull sekonda skond il-pjanċa.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U permezz ta’ dan ir-rapport ser nuruk graffs biex tkun tista’ tifhem b’mod ċar x’qed jiġri. Dejjem se jkun hemm 2 slides bi graphs. L-ewwel slide hija dak li jiġri b'mod ġenerali fuq is-server.

U f'din is-sitwazzjoni, naraw li verament għandna sinjal żgħir. L-indiċi huwa żgħir f'2 MB. Din hija l-ewwel graff fuq ix-xellug.

Il-ħin medju ta 'rispons fuq is-server huwa wkoll stabbli u qasir. Din hija l-grafika ta' fuq tal-lemin.

Il-graff tax-xellug t'isfel turi l-itwal transazzjonijiet. Naraw li t-tranżazzjonijiet jitlestew malajr. U l-autovacuum għadu ma jaħdimx hawn, għax kien test tal-bidu. Se tkompli taħdem u tkun utli għalina.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

It-tieni slide dejjem se tkun iddedikata għall-pjanċa li tkun qed tiġi ttestjata. F'din is-sitwazzjoni, aħna kontinwament naġġornaw il-bilanċi tal-kont tal-klijent. U naraw li l-ħin medju ta 'rispons għal operazzjoni ta' aġġornament huwa pjuttost tajjeb, inqas minn millisekonda. Naraw li r-riżorsi tal-proċessur (din hija l-graff tal-lemin ta 'fuq) huma wkoll ikkunsmati b'mod ugwali u pjuttost żgħar.

Il-grafika t'isfel tal-lemin turi kemm memorja operattiva u disk li ngħaddu minnha fit-tfittxija tal-linja mixtieqa tagħna qabel ma naġġornawha. U n-numru ta 'operazzjonijiet skond is-sinjal huwa 2 kull sekonda, kif għidt fil-bidu.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U issa għandna traġedja. Għal xi raġuni hemm tranżazzjoni minsija għal żmien twil. Ir-raġunijiet huma ġeneralment kollha banali:

  • Waħda mill-aktar komuni hija li bdejna naċċessaw servizz estern fil-kodiċi tal-applikazzjoni. U dan is-servizz ma jweġibniex. Jiġifieri, ftaħna transazzjoni, għamilna bidla fid-database u morna mill-applikazzjoni biex naqraw il-posta jew għal servizz ieħor fi ħdan l-infrastruttura tagħna, u għal xi raġuni ma tirrispondix għalina. U s-sessjoni tagħna hija mwaħħla fi stat fejn mhux magħruf meta se tiġi solvuta.
  • It-tieni sitwazzjoni hija meta seħħet eċċezzjoni fil-kodiċi tagħna għal xi raġuni. U fl-eċċezzjoni aħna ma pproċessajniex l-għeluq tat-tranżazzjoni. U spiċċajna b'sessjoni mdendlin bi tranżazzjoni miftuħa.
  • U l-aħħar wieħed huwa wkoll każ pjuttost komuni. Dan huwa kodiċi ta 'kwalità baxxa. Xi oqfsa jiftħu transazzjoni. Hija prekarja, u tista 'ma tafx fl-applikazzjoni li għandek mdendla.

Fejn iwasslu affarijiet bħal dawn?

Sal-punt li t-tabelli u l-indiċi tagħna jibdew jintefħu b'mod drammatiku. Dan huwa eżattament l-istess effett ta 'nefħa. Għad-database, dan ikun ifisser li l-ħin tar-rispons tad-database se jiżdied b'mod qawwi ħafna u t-tagħbija fuq is-server tad-database se tiżdied. U bħala riżultat, l-applikazzjoni tagħna se tbati. Għax jekk qattajt 10 millisekondi fil-kodiċi tiegħek fuq talba għad-database, 10 millisekondi fuq il-loġika tiegħek, allura l-funzjoni tiegħek ħadet 20 millisekondi biex titlesta. U issa s-sitwazzjoni tiegħek se tkun imdejjaq ħafna.

U ejja naraw x'jiġri. Il-graff tax-xellug t'isfel turi li għandna tranżazzjoni fit-tul. U jekk inħarsu lejn il-graff tax-xellug ta 'fuq, naraw li d-daqs tat-tabella tagħna qabeż f'daqqa minn żewġ megabytes għal 300 megabytes. Fl-istess ħin, l-ammont ta 'dejta fit-tabella ma nbidilx, jiġifieri hemm ammont pjuttost kbir ta' żibel hemmhekk.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Is-sitwazzjoni ġenerali rigward il-ħin medju tar-rispons tas-server inbidlet ukoll b'diversi ordnijiet ta 'kobor. Jiġifieri, it-talbiet kollha fuq is-server bdew jonqsu kompletament. U fl-istess ħin, ġew imnedija proċessi interni Postgres fil-forma ta 'autovacuum, li qed jippruvaw jagħmlu xi ħaġa u jikkunsmaw ir-riżorsi.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

X'qed jiġri bis-sinjal tagħna? L-istess. Il-ħin medju tar-rispons tagħna skont is-sinjal qabeż diversi ordnijiet ta 'kobor. Speċifikament f'termini ta 'riżorsi kkunsmati, naraw li t-tagħbija fuq il-proċessur żdiedet ħafna. Din hija l-grafika ta' fuq tal-lemin. U żdiedet għax il-proċessur irid issolvi mazz ta 'linji inutli fit-tfittxija ta' dak meħtieġ. Dan huwa l-graff tal-lemin t'isfel. U bħala riżultat, in-numru tagħna ta 'sejħiet kull sekonda beda jonqos b'mod sinifikanti ħafna, minħabba li d-database ma kellhiex ħin biex tipproċessa l-istess numru ta' talbiet.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Irridu nerġgħu lura għall-ħajja. Immorru onlajn u nsiru nafu li tranżazzjonijiet twal iwasslu għal problemi. Insibu u noqtlu din it-tranżazzjoni. U kollox qed isir normali għalina. Kollox jaħdem kif suppost.

Ikkalmajna, iżda wara ftit nibdew ninnutaw li l-applikazzjoni ma taħdimx bl-istess mod bħal qabel l-emerġenza. It-talbiet għadhom ipproċessati aktar bil-mod, u b'mod sinifikanti aktar bil-mod. Darba u nofs sa darbtejn aktar bil-mod speċifikament fl-eżempju tiegħi. It-tagħbija fuq is-server hija wkoll ogħla milli kienet qabel l-inċident.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U l-mistoqsija: "X'qed jiġri mill-bażi f'dan il-mument?" U s-sitwazzjoni li ġejja sseħħ mal-bażi. Fuq il-grafika tat-tranżazzjonijiet tista 'tara li waqfet u verament m'hemm l-ebda transazzjonijiet fit-tul. Iżda d-daqs tas-sinjal żdied fatalment matul l-inċident. U minn dakinhar ma naqsux. Il-ħin medju fuq il-bażi stabbilizza ruħu. U t-tweġibiet donnhom qed jaslu b’mod adegwat b’veloċità aċċettabbli għalina. L-awtovakwu sar aktar attiv u beda jagħmel xi ħaġa bis-sinjal, għax jeħtieġ li jgħarbel aktar dejta.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Speċifikament, skont il-pjanċa tat-test bil-kontijiet, fejn nibdlu l-bilanċi: il-ħin ta 'rispons għal talba jidher li reġa' lura għan-normal. Imma fir-realtà hija darba u nofs ogħla.

U mit-tagħbija fuq il-proċessur, naraw li t-tagħbija fuq il-proċessur ma reġgħetx lura għall-valur meħtieġ qabel il-ħabta. U r-raġunijiet hemm jinsabu preċiżament fil-grafika t'isfel tal-lemin. Wieħed jista 'jara li ċertu ammont ta' memorja qed tiġi mfittxija hemmhekk. Jiġifieri, biex insibu l-linja meħtieġa, aħna naħlu r-riżorsi tas-server tad-database filwaqt li nagħżlu data inutli. In-numru ta 'tranżazzjonijiet kull sekonda stabbilizza.

B'mod ġenerali tajjeb, iżda s-sitwazzjoni hija agħar milli kienet. Degradazzjoni ċara tad-database bħala konsegwenza tal-applikazzjoni tagħna li taħdem ma 'din id-database.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U biex nifhmu x'inhu għaddej hemmhekk, jekk ma kontx fir-rapport preċedenti, issa ejja nieħdu ftit teorija. Teorija dwar il-proċess intern. Għaliex vakwu tal-karozza u x'tagħmel?

Litteralment fil-qosor għall-fehim. F'xi ħin ikollna tabella. Għandna ringieli fit-tabella. Dawn il-linji jistgħu jkunu attivi, ħajjin, u dak li għandna bżonn issa. Huma mmarkati bl-aħdar fl-istampa. U hemm linji mejta li diġà ġew maħduma, ġew aġġornati, u daħliet ġodda dehru fuqhom. U huma mmarkati li m'għadhomx interessanti għad-database. Iżda huma fit-tabella minħabba karatteristika Postgres.

Għaliex għandek bżonn vakwu tal-karozza? F'xi punt, l-awtovakwu jiġi, jaċċessa d-database u jistaqsiha: "Jekk jogħġbok agħtini l-id tal-eqdem tranżazzjoni li bħalissa hija miftuħa fid-database." Id-database jirritorna din id. U l-awtovakwu, billi bbażat ruħha fuqu, jagħżel il-linji fit-tabella. U jekk jara li xi linji nbidlu minn tranżazzjonijiet ħafna eqdem, allura għandu d-dritt li jimmarkahom bħala linji li nistgħu nużaw mill-ġdid fil-futur billi niktbu data ġdida hemmhekk. Dan huwa proċess fl-isfond.

F'dan iż-żmien, inkomplu naħdmu mad-database u nkomplu nagħmlu xi bidliet fit-tabella. U fuq dawn il-linji, li nistgħu nużaw mill-ġdid, niktbu data ġdida. U b’hekk inġibu ċiklu, jiġifieri l-ħin kollu jidhru xi linji qodma mejta hemm, minflokhom inikteb linji ġodda li għandna bżonn. U dan huwa stat normali biex PostgreSQL jaħdem.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

X'ġara waqt l-inċident? Kif seħħ dan il-proċess hemmhekk?

Kellna sinjal f'xi kundizzjoni, xi wħud ħajjin, xi linji mejta. Il-vakwu tal-karozza wasal. Huwa staqsa lid-database x'inhi l-eqdem transazzjoni tagħna u x'inhi l-id tagħha. Irċevejt din l-id, li jista 'jkun ħafna sigħat ilu, forsi għaxar minuti ilu. Jiddependi fuq kemm tkun tqila t-tagħbija li għandek fuq id-database tiegħek. U mar ifittex linji li seta’ jimmarka bħala użati mill-ġdid. U ma sibtx linji bħal dawn fit-tabella tagħna.

Iżda f'dan iż-żmien inkomplu naħdmu mal-mejda. Nagħmlu xi ħaġa fiha, naġġornawha, nibdlu d-dejta. X'għandha tagħmel id-database f'dan il-ħin? Hija m'għandha l-ebda għażla ħlief li żżid linji ġodda fl-aħħar tat-tabella eżistenti. U għalhekk id-daqs tal-mejda tagħna jibda jintefaħ.

Fir-realtà, għandna bżonn linji ħodor biex jaħdmu. Iżda waqt problema bħal din, jirriżulta li l-persentaġġ ta 'linji ħodor huwa estremament baxx fit-tabella kollha.

U meta nwettqu mistoqsija, id-database trid tgħaddi mill-linji kollha: kemm ħomor kif ukoll ħodor, biex issib il-linja mixtieqa. U l-effett ta 'nefħa ta' tabella b'dejta inutli jissejjaħ "bloat", li jiekol ukoll l-ispazju tad-diska tagħna. Ftakar, kien 2 MB, sar 300 MB? Issa ibdel megabytes għal gigabytes u malajr titlef ir-riżorsi kollha tad-disk tiegħek.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

X’konsegwenzi jista’ jkun hemm għalina?

  • Fl-eżempju tiegħi, it-tabella u l-indiċi kibru 150 darba. Xi wħud mill-klijenti tagħna kellhom aktar każijiet fatali meta sempliċement bdew jispiċċaw mingħajr spazju fuq id-disk.
  • Id-daqs tat-tabelli innifsu qatt mhu se jonqos. L-awtovakwu f'xi każijiet jista 'jaqta' d-denb tat-tabella jekk ikun hemm biss linji mejta. Iżda peress li hemm rotazzjoni kostanti, linja ħadra waħda tista 'tiffriża fl-aħħar u ma tiġix aġġornata, filwaqt li l-oħrajn kollha se jiġu miktuba x'imkien fil-bidu tal-pjanċa. Iżda dan huwa avveniment tant improbabbli li l-mejda tiegħek nnifisha se tiċkien fid-daqs, għalhekk m'għandekx tittama għalih.
  • Id-database jeħtieġ li tissortja permezz ta 'mazz sħiħ ta' linji inutli. U naħlu r-riżorsi tad-disk, naħlu r-riżorsi tal-proċessur u l-elettriku.
  • U dan jaffettwa direttament l-applikazzjoni tagħna, għax jekk fil-bidu qattajna 10 millisekondi fuq it-talba, 10 millisekondi fuq il-kodiċi tagħna, allura waqt il-ħabta bdejna nonfqu sekonda fuq it-talba u 10 millisekondi fuq il-kodiċi, jiġifieri ordni ta ' il-kobor fil-prestazzjoni tal-applikazzjoni naqas. U meta l-inċident ġie solvut, bdejna nonfqu 20 millisekondi fuq talba, 10 millisekondi fuq kodiċi. Dan ifisser li għadna naqas b'darba u nofs fil-produttività. U dan kollu minħabba tranżazzjoni waħda li ffriżat, forsi tort tagħna.
  • U l-mistoqsija: “Kif nistgħu nġibu kollox lura?” sabiex kollox ikun tajjeb magħna u t-talbiet jidħlu malajr daqs qabel l-inċident.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Għal dan il-għan hemm ċertu ċiklu ta 'xogħol li jitwettaq.

L-ewwel irridu nsibu t-tabelli problematiċi li huma minfuħin. Nifhmu li f'xi tabelli r-reġistrazzjoni hija aktar attiva, f'oħrajn inqas attiva. U għal dan nużaw l-estensjoni pgstattuple. Billi tinstalla din l-estensjoni, tista 'tikteb mistoqsijiet li jgħinuk issib tabelli li huma pjuttost minfuħin.

Ladarba tkun sibt dawn it-tabelli, trid tikkompressahom. Diġà hemm għodod għal dan. Fil-kumpanija tagħna nużaw tliet għodod. L-ewwel huwa l-vakwu SĦIĦ mibni. Huwa krudili, ħarxa u bla ħniena, imma xi drabi huwa utli ħafna. Pg_repack и pgcompacttable - Dawn huma utilitajiet ta 'partijiet terzi għall-kompressjoni ta' tabelli. U jittrattaw id-database b'aktar attenzjoni.

Jintużaw skont dak li huwa aktar konvenjenti għalik. Imma jien ser ngħidlek dwar dan fl-aħħar nett. Il-ħaġa prinċipali hija li hemm tliet għodod. Hemm ħafna minn fejn jagħżlu.

Wara li kkoreġijna kollox u kun żgur li kollox huwa tajjeb, irridu nkunu nafu kif nipprevjenu din is-sitwazzjoni fil-futur:

  • Jista 'jiġi evitat pjuttost faċilment. Għandek bżonn tissorvelja t-tul tas-sessjonijiet fuq is-server Master. Speċjalment sessjonijiet perikolużi f'idle fl-istat tat-tranżazzjoni. Dawn huma dawk li għadhom kemm fetħu transazzjoni, għamlu xi ħaġa u telqu, jew sempliċement imdendla, intilfu fil-kodiċi.
  • U għalik, bħala żviluppaturi, huwa importanti li tittestja l-kodiċi tiegħek meta jinqalgħu dawn is-sitwazzjonijiet. Mhuwiex diffiċli li tagħmel. Dan se jkun verifika utli. Se tevita numru kbir ta 'problemi "tfal" assoċjati ma' tranżazzjonijiet twal.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

F'dawn il-graffs, ridt nuruk kif is-sinjal u l-imġieba tad-database nbidlu wara li għaddejt mis-sinjal b'VACUUM FULL f'dan il-każ. Din mhix produzzjoni għalija.

Id-daqs tal-mejda immedjatament reġa' lura għall-istat operattiv normali tiegħu ta 'koppja ta' megabytes. Dan ma affettwax ħafna l-ħin medju ta 'rispons għas-server.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Iżda speċifikament għas-sinjal tat-test tagħna, fejn aġġornajna l-bilanċi tal-kontijiet, naraw li l-ħin medju ta 'rispons għal talba biex tiġi aġġornata d-dejta fis-sinjal tnaqqset għal-livelli ta' qabel l-emerġenza. Ir-riżorsi kkunsmati mill-proċessur biex tlesti din it-talba wkoll niżlu għal-livelli ta 'qabel il-ħabta. U l-grafika t'isfel tal-lemin turi li issa nsibu eżattament il-linja li għandna bżonn mill-ewwel, mingħajr ma ngħaddu mill-munzelli ta 'linji mejta li kien hemm qabel ma t-tabella ġiet ikkompressata. U l-ħin medju tat-talba baqa' bejn wieħed u ieħor fl-istess livell. Imma hawnhekk għandi, pjuttost, żball fil-hardware tiegħi.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Hawn tispiċċa l-ewwel storja. Huwa l-aktar komuni. U jiġri lil kulħadd, irrispettivament mill-esperjenza tal-klijent u kemm huma kwalifikati l-programmaturi. Illum jew għada dan jiġri.

It-tieni storja, li fiha nqassmu t-tagħbija u ottimizzaw ir-riżorsi tas-server

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

  • Aħna diġà kibru u sirna guys serji. U nifhmu li għandna replika u jkun tajjeb li nibbilanċjaw it-tagħbija: ikteb lill-Imgħallem, u aqra mir-replika. U normalment din is-sitwazzjoni tqum meta rridu nippreparaw xi rapporti jew ETL. U n-negozju huwa kuntent ħafna dwar dan. Huwa verament irid varjetà ta 'rapporti b'ħafna analitiċi kumplessi.
  • Ir-rapporti jieħdu ħafna sigħat, minħabba li l-analiżi kumplessa ma tistax tiġi kkalkulata f'millisekondi. Aħna, bħal guys kuraġġużi, niktbu kodiċi. Fl-applikazzjoni tal-inserzjoni nagħmlu r-reġistrazzjoni fuq il-Master, u nwettqu r-rapporti fuq ir-replika.
  • Tqassam it-tagħbija.
  • Kollox jaħdem perfettament. Aħna kbar.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U din is-sitwazzjoni kif tidher? Speċifikament fuq dawn il-grafiċi, żidt ukoll it-tul tat-tranżazzjonijiet mir-replika għat-tul tat-tranżazzjoni. Il-graffs l-oħra kollha jirreferu biss għas-server Master.

Sa dan iż-żmien, il-bord tar-rapport tiegħi kien kiber. Hemm aktar minnhom. Naraw li l-ħin medju tar-rispons tas-server huwa stabbli. Naraw li fuq ir-replika għandna transazzjoni fit-tul li ddum sagħtejn. Naraw it-tħaddim kwiet tal-autovacuum, li jipproċessa linji mejta. U kollox tajjeb magħna.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Speċifikament, skont il-pjanċa ttestjata, inkomplu naġġornaw il-bilanċi tal-kontijiet hemmhekk. U għandna wkoll ħin ta 'rispons stabbli għal talbiet, konsum stabbli tar-riżorsi. Kollox tajjeb magħna.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Kollox tajjeb sal-mument li dawn ir-rapporti jibdew jisparaw lura minħabba kunflitt mar-replikazzjoni. U jisparaw lura f'intervalli regolari.

Immorru onlajn u nibdew naqraw għaliex qed jiġri dan. U nsibu soluzzjoni.

L-ewwel soluzzjoni hija li tiżdied il-latency tar-replikazzjoni. Nafu li r-rapport tagħna jdum għal 3 sigħat. Aħna waqqafna d-dewmien tar-replikazzjoni għal 3 sigħat. Qed inniedu kollox, imma xorta jibqa' jkollna problemi bir-rapporti kultant jiġu kkanċellati.

Irridu li kollox ikun perfett. Nitilgħu aktar. U sibna setting frisk fuq l-Internet - hot_standby_feedback. Ejja nixgħelha. Hot_standby_feedback jippermettilna nżommu lura l-autovacuum fuq il-Master. Għalhekk, neħilsu kompletament mill-kunflitti ta 'replikazzjoni. U kollox jaħdem tajjeb għalina bir-rapporti.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U x'qed jiġri mas-server Master f'dan il-ħin? U aħna qegħdin f'inkwiet totali mas-server Master. Issa qed naraw il-graffs meta jkolli dawn iż-żewġ settings attivati. U naraw li s-sessjoni fuq ir-replika tagħna b'xi mod bdiet tinfluwenza s-sitwazzjoni fuq is-server Master. Hija għandha effett minħabba li waqqfet l-awtovakwu, li jnaddaf il-linji mejta. Id-daqs tal-mejda tagħna reġa' żdied. Il-ħin medju ta' eżekuzzjoni tal-mistoqsijiet madwar id-database kollha żdied ukoll. L-autovacuums issikkaw ftit.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Speċifikament, mill-pjanċa tagħna, naraw li l-aġġornament tad-dejta fuqha qabeż ukoll fis-smewwiet. Il-konsum tas-CPU żdied b'mod simili ħafna. Erġajna għaddejjin minn numru kbir ta’ linji mejta u inutli. U l-ħin tar-rispons għal dan is-sinjal u n-numru ta 'tranżazzjonijiet naqsu.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

X’se tkun jekk ma nafux fuq xiex kont qed nitkellem qabel?

  • Nibdew infittxu problemi. Jekk iltqajna ma 'problemi fl-ewwel parti, nafu li dan jista' jkun minħabba tranżazzjoni twila u mmorru għand l-Imgħallem. Għandna problema fuq l-Imgħallem. Zalzett lilu. Tisħon, il-Medja tat-Tagħbija tagħha hija madwar mija.
  • It-talbiet hemm huma bil-mod, iżda ma naraw l-ebda tranżazzjoni fit-tul hemmhekk. U ma nifhmux x'inhi l-kwistjoni. Ma nifhmux fejn inħarsu.
  • Aħna niċċekkjaw it-tagħmir tas-server. Forsi r-raid tagħna ġġarraf. Forsi l-stick tal-memorja tagħna huwa maħruq. Iva, kollox jista 'jiġri. Imma le, is-servers huma ġodda, kollox jaħdem tajjeb.
  • Kulħadd qed jaħdem: amministraturi, żviluppaturi u d-direttur. Xejn ma jgħin.
  • U f'xi punt kollox f'daqqa jibda jikkoreġi lilu nnifsu.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

F'dan iż-żmien, it-talba fuq ir-replika tagħna ġiet ipproċessata u titħalla. Irċevejna r-rapport. In-negozju għadu kuntent. Kif tistgħu taraw, is-sinjal tagħna reġa kiber u mhux se jiċkien. Fuq il-grafika bis-sessjonijiet, ħallejt biċċa ta 'din it-tranżazzjoni twila minn replika sabiex tkun tista' tistma kemm iddum sakemm is-sitwazzjoni tistabbilizza.

Is-sessjoni spiċċat. U biss wara xi żmien is-server jiġi xi ftit jew wisq fl-ordni. U l-ħin medju ta 'rispons għal talbiet fuq is-server Master jerġa' lura għan-normal. Minħabba li, finalment, l-awtovakwu għandu l-opportunità li jnaddaf u jimmarka dawn il-linji mejta. U beda jagħmel xogħolu. U kemm jagħmel dan malajr, hekk malajr se nirranġaw.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Skont il-pillola ttestjata, fejn naġġornaw il-bilanċi tal-kontijiet, naraw eżattament l-istess stampa. Il-ħin medju tal-aġġornament tal-kont qed jinnormalizza wkoll gradwalment. Ir-riżorsi kkunsmati mill-proċessur huma wkoll imnaqqsa. U n-numru ta 'tranżazzjonijiet kull sekonda jerġa' lura għan-normal. Imma erġajna nerġgħu lura għan-normal, mhux l-istess bħalma konna qabel l-inċident.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Fi kwalunkwe każ, niksbu tnaqqis fil-prestazzjoni, bħal fl-ewwel każ, b'darba u nofs sa darbtejn, u xi kultant aktar.

Jidher li għamilna kollox sew. Qassam it-tagħbija. It-tagħmir mhuwiex idle. Qsamna t-talbiet skond moħħna, iżda xorta kollox irriżulta ħażin.

  • Tippermettix hot_standby_feedback? Iva, mhux rakkomandat li tixgħel mingħajr raġunijiet partikolarment qawwija. Minħabba li din it-twist taffettwa direttament is-server Master u tissospendi l-operat tal-autovacuum hemmhekk. Billi tippermettiha fuq xi replika u tinsa dwarha, tista 'toqtol lill-Kaptan u tikseb problemi kbar bl-applikazzjoni.
  • Iżżid max_standby_streaming_delay? Iva, għar-rapporti dan huwa minnu. Jekk għandek rapport ta 'tliet sigħat u ma tridx li tiġġarraf minħabba kunflitti ta' replikazzjoni, allura sempliċement iżżid id-dewmien. Rapport fit-tul qatt ma jeħtieġ dejta li tkun waslet fid-database bħalissa. Jekk għandek għal tliet sigħat, allura tkun qed taħdem għal xi perjodu ta 'dejta antik. U għalik, jekk hemmx dewmien ta 'tliet sigħat jew dewmien ta' sitt sigħat mhux se jagħmel l-ebda differenza, iżda tirċievi rapporti b'mod konsistenti u ma jkollokx problemi li jaqgħu.
  • Naturalment, għandek bżonn tikkontrolla sessjonijiet twal fuq repliki, speċjalment jekk tiddeċiedi li tattiva hot_standby_feedback fuq replika. Għax kollox jista’ jiġri. Tajna din ir-replika lill-iżviluppatur sabiex ikun jista’ jittestja l-mistoqsijiet. Huwa kiteb talba tal-ġenn. Huwa niedaha u mar jixorbu t-te, u sirna l-Imgħallem stabbilit. Jew forsi npoġġu l-applikazzjoni ħażina hemmhekk. Is-sitwazzjonijiet huma varjati. Sessjonijiet fuq repliki għandhom jiġu mmonitorjati bir-reqqa daqs fuq il-Master.
  • U jekk għandek mistoqsijiet veloċi u twal fuq repliki, allura f'dan il-każ huwa aħjar li taqsamhom biex tqassam it-tagħbija. Din hija link għal streaming_delay. Għal dawk veloċi, għandek replika waħda b'dewmien żgħir ta 'replikazzjoni. Għal talbiet ta' rappurtar li ilhom għaddejjin, għandek replika li tista' tibqa' b'6 sigħat jew kuljum. Din hija sitwazzjoni kompletament normali.

Aħna neliminaw il-konsegwenzi bl-istess mod:

  • Insibu imwejjed minfuħin.
  • U aħna nikkompressawha bl-aktar għodda konvenjenti li taqbel magħna.

It-tieni storja tispiċċa hawn. Ejja ngħaddu għat-tielet storja.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Pjuttost komuni wkoll għalina fejn nagħmlu l-migrazzjoni.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

  • Kwalunkwe prodott tas-softwer qed jikber. Ir-rekwiżiti għaliha qed jinbidlu. Fi kwalunkwe każ, irridu niżviluppaw. U jiġri li għandna bżonn naġġornaw id-dejta fit-tabella, jiġifieri li nwettqu aġġornament f'termini tal-migrazzjoni tagħna għall-funzjonalità l-ġdida li qed nintroduċu bħala parti mill-iżvilupp tagħna.
  • Il-format tad-dejta l-antik mhuwiex sodisfaċenti. Ejja ngħidu li issa nduru għat-tieni tabella, fejn għandi tranżazzjonijiet fuq dawn il-kontijiet. U ejja ngħidu li kienu f'rubli, u ddeċidejna li nżidu l-eżattezza u nagħmluha f'kopecks. U għal dan irridu nagħmlu aġġornament: immoltiplika l-qasam bl-ammont tat-tranżazzjoni b'mija.
  • Fid-dinja tal-lum, nużaw għodod awtomatizzati għall-kontroll tal-verżjoni tad-database. Ejja ngħidu Liquibase. Aħna nirreġistraw il-migrazzjoni tagħna hemmhekk. Aħna nittestjawha fuq il-bażi tat-test tagħna. Kollox sew. L-aġġornament għaddej. Huwa jimblokka x-xogħol għal xi żmien, iżda aħna jiksbu data aġġornata. U nistgħu nniedu funzjonalità ġdida dwar dan. Kollox kien ittestjat u ċċekkjat. Kollox kien ikkonfermat.
  • Aħna wettaqna xogħol ippjanat u wettaqna l-migrazzjoni.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Hawn il-migrazzjoni bl-aġġornament ippreżentat quddiemek. Peress li dawn huma tranżazzjonijiet tal-kont tiegħi, il-pjanċa kienet 15 GB. U peress li naġġornaw kull linja, aħna rduppjaw id-daqs tat-tabella bl-aġġornament, għaliex aħna ktibna mill-ġdid kull linja.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Matul il-migrazzjoni, ma stajna nagħmlu xejn b'din il-pjanċa, minħabba li t-talbiet kollha għaliha kienu fil-kju u stennew sakemm tlesta dan l-aġġornament. Imma hawnhekk irrid niġbed l-attenzjoni tiegħek għan-numri li huma fuq l-assi vertikali. Jiġifieri, għandna żmien medju ta 'talba qabel il-migrazzjoni ta' madwar 5 millisekondi u t-tagħbija tal-proċessur, in-numru ta 'operazzjonijiet ta' blokki għall-qari tal-memorja tad-diska huwa inqas minn 7,5.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Aħna wettaqna l-migrazzjoni u erġajna ltqajna problemi.

Il-migrazzjoni kienet suċċess, iżda:

  • Il-funzjonalità l-antika issa tieħu aktar żmien biex titlesta.
  • Il-mejda reġgħet kibret fid-daqs.
  • It-tagħbija fuq is-server reġgħet saret akbar minn qabel.
  • U, ovvjament, għadna qed intejbu l-funzjonalità li ħadmet tajjeb, tjiebna ftit.

U dan huwa għal darb'oħra nefħa, li għal darb'oħra tħassar ħajjitna.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Hawnhekk nuri li t-tabella, bħaż-żewġ każijiet preċedenti, mhix se terġa 'lura għad-daqsijiet preċedenti tagħha. It-tagħbija medja tas-server tidher li hija adegwata.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U jekk nduru għat-tabella bil-kontijiet, naraw li l-ħin medju tat-talba rdoppja għal din it-tabella. It-tagħbija fuq il-proċessur u n-numru ta 'linji magħżula fil-memorja qabżu 'l fuq minn 7,5, iżda kien aktar baxx. U qabża 2 darbiet fil-każ ta 'proċessuri, 1,5 darbiet fil-każ ta' operazzjonijiet ta 'blokki, jiġifieri aħna ltqajna degradazzjoni fil-prestazzjoni tas-server. U bħala riżultat - degradazzjoni tal-prestazzjoni tal-applikazzjoni tagħna. Fl-istess ħin, in-numru ta’ sejħiet baqa’ bejn wieħed u ieħor fl-istess livell.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

U l-ħaġa prinċipali hawnhekk hija li tifhem kif tagħmel tali migrazzjonijiet b'mod korrett. U jeħtieġ li jsiru. Aħna nagħmlu dawn il-migrazzjoni b'mod pjuttost konsistenti.

  • Migrazzjonijiet kbar bħal dawn ma jseħħux awtomatikament. Għandhom dejjem ikunu taħt kontroll.
  • Superviżjoni minn persuna infurmata hija meħtieġa. Jekk għandek DBA fit-tim tiegħek, allura ħalli d-DBA jagħmel dan. Ix-xogħol tiegħu. Jekk le, allura ħalli l-aktar persuna b'esperjenza tagħmel dan, li jaf kif taħdem ma 'databases.
  • Skema tad-database ġdida, anki jekk naġġornaw kolonna waħda, aħna dejjem inħejju fi stadji, jiġifieri minn qabel qabel ma titnieda l-verżjoni l-ġdida tal-applikazzjoni:
  • Qed jiżdiedu oqsma ġodda li fihom ser nirreġistraw id-dejta aġġornata.
  • Aħna nittrasferixxu data mill-qasam il-qadim għall-qasam il-ġdid f'partijiet żgħar. Għaliex qed nagħmlu dan? L-ewwelnett, aħna dejjem nikkontrollaw il-proċess ta 'dan il-proċess. Nafu li diġà ttrasferijna ħafna lottijiet u fadal ħafna.
  • U t-tieni effett pożittiv huwa li bejn kull lott bħal dan nagħlqu t-tranżazzjoni, niftħu waħda ġdida, u dan jippermetti li l-awtovakwu jaħdem skond il-pjanċa, jimmarka linji mejta għall-użu mill-ġdid.
  • Għal-linji li se jidhru waqt li l-applikazzjoni tkun qed taħdem (għad għandna l-applikazzjoni l-antika taħdem), aħna nżidu grillu li jikteb valuri ġodda f'oqsma ġodda. Fil-każ tagħna, din hija multiplikazzjoni b'mija tal-valur l-antik.
  • Jekk aħna kompletament iebsa u rridu l-istess qasam, allura mat-tlestija tal-migrazzjonijiet kollha u qabel ma nwasslu verżjoni ġdida tal-applikazzjoni, aħna sempliċement inbiddlu l-isem tal-oqsma. Dawk qodma jingħataw xi isem ivvintat, u l-oqsma l-ġodda jingħataw isem ġdid għal dawk qodma.
  • U wara biss inniedu verżjoni ġdida tal-applikazzjoni.

U fl-istess ħin mhux se jkollna nefħa u mhux se nbatu f'termini ta 'prestazzjoni.

Hawn tispiċċa t-tielet storja.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'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

U issa ftit aktar dettall dwar l-għodod li semmejt fl-ewwel storja.

Qabel ma tfittex nefħa, trid tinstalla l-estensjoni pgstattuple.

Sabiex ma jkollokx għalfejn toħroġ bi mistoqsijiet, aħna diġà ktibna dawn il-mistoqsijiet fix-xogħol tagħna. Tista' tużahom. Hemm żewġ talbiet hawn.

  • L-ewwel wieħed jieħu żmien pjuttost twil biex jaħdem, iżda jurik il-valuri ta 'nefħa eżatti mit-tabella.
  • It-tieni wieħed jaħdem aktar malajr u huwa effettiv ħafna meta jkollok bżonn tivvaluta malajr jekk hemmx nefħa jew le skont it-tabella. U għandek tifhem ukoll li n-nefħa hija dejjem preżenti f'tabella Postgres. Din hija karatteristika tal-mudell MVCC tagħha.
  • U 20% nefħa hija normali għat-tabelli f'ħafna każijiet. Jiġifieri, m'għandekx tinkwieta u tikkompressa din it-tabella.

Aħna dehret kif nidentifikaw tabelli li huma minfuħin b'dejta inutli.

Issa dwar kif tirranġa n-nefħa:

  • Jekk għandna tablet żgħira u diski tajbin, jiġifieri fuq tablet sa gigabyte, huwa pjuttost possibbli li tuża VACUUM FULL. Huwa se jieħu lock esklussiv mingħandek fuq il-mejda għal ftit sekondi u okay, iżda se jagħmel kollox malajr u b'mod ħarxa. X'jagħmel VACUUM FULL? Huwa jieħu lock esklussiv fuq il-mejda u jikteb mill-ġdid ringieli ħajjin mit-tabelli qodma fit-tabella l-ġdida. U fl-aħħar jibdelhom. Tħassar fajls qodma u jissostitwixxi dawk qodma b'oħrajn ġodda. Iżda għat-tul tax-xogħol tagħha, tieħu lock esklussiv fuq il-mejda. Dan ifisser li ma tista’ tagħmel xejn b’din it-tabella: la tikteb lilha, la taqra fiha, u lanqas timmodifikaha. U VACUUM FULL jeħtieġ spazju addizzjonali fuq disk biex tikteb id-data.
  • Għodda li jmiss pg_repack. Fil-prinċipju tiegħu, huwa simili ħafna għal VACUUM FULL, minħabba li jikteb ukoll mill-ġdid data minn fajls qodma għal oħrajn ġodda u jissostitwixxihom fit-tabella. Iżda fl-istess ħin, ma tieħux lock esklussiv fuq il-mejda fil-bidu nett tax-xogħol tagħha, iżda teħodha biss fil-mument meta diġà għandha data lesta sabiex tissostitwixxi l-fajls. Ir-rekwiżiti tar-riżorsi tad-disk tiegħu huma simili għal dawk ta 'VACUUM FULL. Ikollok bżonn spazju addizzjonali fuq id-diska, u dan kultant huwa kritiku jekk għandek tabelli terabyte. U huwa pjuttost bil-ġuħ għall-proċessur għax jaħdem b'mod attiv ma 'I/O.
  • It-tielet utilità hija pgcompacttable. Huwa aktar attent bir-riżorsi għax jaħdem skond prinċipji kemmxejn differenti. L-idea ewlenija ta 'pgcompacttable hija li tmexxi r-ringieli kollha ħajjin sal-bidu tat-tabella billi tuża aġġornamenti fit-tabella. U mbagħad imexxi vakwu fuq din il-mejda, għax nafu li għandna ringieli ħajjin fil-bidu u ringieli mejta fl-aħħar. U l-vakwu innifsu jaqta 'dan id-denb, jiġifieri ma jeħtieġx ħafna spazju addizzjonali fuq id-diska. U fl-istess ħin, xorta jista 'jingħafas f'termini ta' riżorsi.

Kollox bl-għodda.

Żbalji tipiċi fl-applikazzjonijiet li jwasslu għal nefħa f'postgresql. Andrey Salnikov

Jekk issib is-suġġett tal-bloat interessanti f'termini ta 'esplorazzjoni aktar ġewwa, hawn huma xi links utli:

Ippruvajt aktar biex nuri storja ta 'orrur għall-iżviluppaturi, minħabba li huma l-klijenti diretti tagħna tad-databases u jridu jifhmu għalxiex u liema azzjonijiet iwasslu. Nispera li rnexxieli. Grazzi tal-attenzjoni tiegħek!

mistoqsijiet

Grazzi tar-rapport! Tkellimt dwar kif tista’ tidentifika l-problemi. Kif jistgħu jiġu mwissija? Jiġifieri kelli sitwazzjoni fejn it-talbiet kienu mdendlin mhux biss għax kienu jaċċessaw xi servizzi esterni. Dawn kienu biss xi wild joins. Kien hemm xi talbiet ċkejkna u li ma jagħmlux ħsara li damu għal ġurnata, u mbagħad bdew jagħmlu xi bla sens. Jiġifieri simili ħafna għal dak li tiddeskrivi. Kif issegwi dan? Oqgħod attent u kontinwament tara liema talba hija mwaħħla? Kif jista’ jiġi evitat dan?

F'dan il-każ, dan huwa kompitu għall-amministraturi tal-kumpanija tiegħek, mhux neċessarjament għad-DBA.

Jien amministratur.

PostgreSQL għandu veduta msejħa pg_stat_activity li turi mistoqsijiet imdendlin. U tista 'tara kemm idum imdendel hemm.

Għandi nidħol u nħares kull 5 minuti?

Stabbilixxi cron u ċċekkja. Jekk għandek talba fit-tul, ikteb ittra u hekk. Jiġifieri, m'għandekx bżonn tħares b'għajnejk, tista 'tkun awtomatizzata. Se tirċievi ittra, tirreaġixxi għaliha. Jew tista' tispara awtomatikament.

Hemm xi raġunijiet ovvji għaliex jiġri dan?

Jien elenkajt xi wħud. Eżempji oħra aktar kumplessi. U jista 'jkun hemm konversazzjoni għal żmien twil.

Grazzi tar-rapport! Xtaqt niċċara dwar l-utilità pg_repack. Jekk ma tagħmilx lock esklussiv, allura...

Hija tagħmel lock esklussiv.

... allura nista' potenzjalment nitlef id-data. L-applikazzjoni tiegħi m'għandha tkun qed tirreġistra xejn matul dan iż-żmien?

Le, taħdem bla xkiel mat-tabella, jiġifieri pg_repack l-ewwel tittrasferixxi l-linji ħajjin kollha li jeżistu. Naturalment, hemm xi tip ta' dħul fit-tabella. Huwa biss jitfa 'dan ponytail barra.

Jiġifieri fil-fatt jagħmel dan fl-aħħar?

Fl-aħħar, huwa jieħu serratura esklussiva biex tbiddel dawn il-fajls.

Se jkun aktar mgħaġġel minn VACUUM FULL?

VACUUM FULL, hekk kif beda, immedjatament ħa lock esklussiv. U sakemm ma jagħmel kollox, mhux se jħalliha tmur. U pg_repack jieħu lock esklussiv biss fil-ħin tas-sostituzzjoni tal-fajl. F'dan il-mument mhux se tikteb hemm, iżda d-dejta mhux se tintilef, kollox se jkun tajjeb.

Bongu! Tkellimt dwar it-tħaddim ta’ vacuum tal-karozza. Kien hemm graff b'ċelluli ta 'reġistrazzjoni ħomor, isfar u ħodor. Jiġifieri, sofor – immarkahom bħala mħassra. U bħala riżultat, xi ħaġa ġdida tista 'tiġi miktuba fihom?

Iva. Postgres ma jħassarx linji. Huwa għandu tali speċifiċità. Jekk aġġornajna linja, aħna mmarkajna l-qadima bħala mħassra. L-id tat-tranżazzjoni li biddlet din il-linja tidher hemm, u niktbu linja ġdida. U għandna sessjonijiet li potenzjalment jistgħu jaqrawhom. F'xi punt dawn isiru pjuttost qodma. U l-essenza ta 'kif jaħdem l-autovacuum hija li jgħaddi minn dawn il-linji u jimmarkahom bħala mhux meħtieġa. U tista 'ssostitwixxi d-data hemmhekk.

Fhimt. Iżda dan mhux dwar dan il-mistoqsija. Jien ma spiċċajtx. Ejja nassumu li għandna tabella. Għandu oqsma ta 'daqs varjabbli. U jekk nipprova ndaħħal xi ħaġa ġdida, tista 'sempliċement ma tidħolx fiċ-ċellula l-antika.

Le, fi kwalunkwe każ il-linja kollha hija aġġornata hemmhekk. Postgres għandu żewġ mudelli ta 'ħażna tad-dejta. Jagħżel mit-tip tad-dejta. Hemm data li hija maħżuna direttament fit-tabella, u hemm ukoll data tos. Dawn huma ammonti kbar ta’ data: test, json. Huma maħżuna fi pjanċi separati. U skont dawn il-pilloli, isseħħ l-istess storja bi nefħa, jiġifieri kollox huwa l-istess. Huma biss elenkati separatament.

Grazzi tar-rapport! Huwa aċċettabbli li tuża mistoqsijiet ta' timeout tad-dikjarazzjoni biex tillimita t-tul?

Aċċettabbli ħafna. Aħna nużaw dan kullimkien. U peress li m'għandniex is-servizzi tagħna stess, nipprovdu appoġġ mill-bogħod, għandna varjetà pjuttost ta 'klijenti. U kulħadd huwa kompletament sodisfatt b'dan. Jiġifieri għandna impjiegi cron li jiċċekkjaw. It-tul tas-sessjonijiet huwa sempliċement miftiehem mal-klijent, li qabel ma naqblux. Jista 'jkun minuta, jista' jkun 10 minuti. Jiddependi mit-tagħbija fuq il-bażi u l-għan tagħha. Imma lkoll nużaw pg_stat_activity.

Grazzi tar-rapport! Qed nipprova napplika r-rapport tiegħek għall-applikazzjonijiet tiegħi. U jidher li aħna nibdew tranżazzjoni kullimkien, u tlestiha b'mod ċar kullimkien. Jekk ikun hemm xi eċċezzjoni, allura l-irtirar għadu jseħħ. U mbagħad bdejt naħseb. Wara kollox, it-tranżazzjoni tista 'ma tibda b'mod espliċitu. Dan probabbilment huwa ħjiel għat-tfajla. Jekk naġġorna biss rekord, it-tranżazzjoni tibda f'PostgreSQL u titlesta biss meta l-konnessjoni tkun skonnettjata?

Jekk qed titkellem issa dwar il-livell tal-applikazzjoni, allura jiddependi fuq is-sewwieq li qed tuża, fuq l-ORM li qed jintuża. Hemm ħafna settings hemmhekk. Jekk għandek il-kommit awtomatiku attivat, allura tranżazzjoni tibda hemmhekk u tagħlaq immedjatament.

Jiġifieri jagħlaq immedjatament wara l-aġġornament?

Jiddependi fuq is-settings. Semmejt setting wieħed. Dan huwa impenn awtomatiku fuq. Huwa pjuttost komuni. Jekk tkun attivata, allura t-tranżazzjoni tkun infetħet u għalqet. Sakemm ma għidtx b'mod espliċitu "bidu t-tranżazzjoni" u "tmiem it-tranżazzjoni", iżda sempliċement nediet talba fis-sessjoni.

Bongu! Grazzi tar-rapport! Ejja nimmaġinaw li għandna database li qed nefħa u nefħa u mbagħad l-ispazju fuq is-server jispiċċa. Hemm xi għodda biex tirranġa din is-sitwazzjoni?

L-ispazju fuq is-server jeħtieġ li jiġi mmonitorjat kif suppost.

Pereżempju, id-DBA mar għat-tè, kien f'resort, eċċ.

Meta tinħoloq sistema ta 'fajls, jinħoloq mill-inqas xi tip ta' spazju ta 'backup fejn id-data ma tkunx miktuba.

X'jiġri jekk ikun kompletament taħt iż-żero?

Hemmhekk jissejjaħ spazju riservat, jiġifieri jista’ jiġi meħlus u skont kemm inħoloq, ikollok spazju ħieles. B'mod awtomatiku ma nafx kemm hemm. U f'każ ieħor, iwassal diski sabiex ikollok spazju biex twettaq operazzjoni ta 'rikostruzzjoni. Tista 'tħassar xi tabella li inti garantit li ma jkollokx bżonn.

Hemm xi għodda oħra?

Huwa dejjem magħmul bl-idejn. U lokalment jidher ċar x'inhu l-aħjar li tagħmel hemmhekk, minħabba li xi dejta hija kritika u xi wħud mhix kritika. U għal kull database u l-applikazzjoni li taħdem magħha, jiddependi min-negozju. Dejjem jiġi deċiż lokalment.

Grazzi tar-rapport! Għandi żewġ mistoqsijiet. L-ewwel, int wrejt slides li wrew li meta t-tranżazzjonijiet huma mwaħħla, kemm id-daqs tal-ispazju tat-tabella kif ukoll id-daqs tal-indiċi jikbru. U aktar fuq ir-rapport kien hemm mazz ta 'utilitajiet li jippakkjaw it-tablet. Xi ngħidu dwar l-indiċi?

Jippakkjawhom ukoll.

Imma l-vakwu ma jaffettwax l-indiċi?

Xi wħud jaħdmu b'indiċi. Per eżempju, pg_rapack, pgcompacttable. Il-vakwu jirrikrea l-indiċi u jaffettwahom. Bil-VACUUM FULL l-idea hija li tikteb fuq kollox, jiġifieri taħdem ma 'kulħadd.

U t-tieni mistoqsija. Ma nifhimx għaliex ir-rapporti fuq repliki jiddependu tant fuq ir-replikazzjoni nnifisha. Deherli li r-rapporti jinqraw, u r-replikazzjoni tinkiteb.

X'jikkawża kunflitt ta' replikazzjoni? Għandna Master li fuqu jseħħu l-proċessi. Għandna vacuum tal-karozzi għaddej. X'jagħmel fil-fatt autovacuum? Qed jaqta’ xi linji qodma. Jekk f'dan iż-żmien ikollna talba fuq ir-replika li taqra dawn il-linji qodma, u fuq il-Master seħħet sitwazzjoni li l-autovacuum immarka dawn il-linji bħala possibbli għall-kitba fuqhom, allura ktibnahom fuqhom. U rċevejna pakkett tad-dejta, meta jkollna bżonn nikteb mill-ġdid dawk il-linji li t-talba teħtieġ fuq ir-replika, il-proċess ta 'replikazzjoni se jistenna l-timeout li kkonfigurajt. U mbagħad PostgreSQL jiddeċiedi x'inhu l-aktar importanti għalih. U r-replikazzjoni hija aktar importanti għalih mit-talba, u se jispara t-talba sabiex jagħmel dawn il-bidliet fuq ir-replika.

Andrey, għandi mistoqsija. Dawn il-grafiċi mill-isbaħ li wrejt waqt il-preżentazzjoni, huma dawn ir-riżultat tax-xogħol ta’ xi tip ta’ utilità tiegħek? Kif saru l-graffs?

Dan huwa servizz Okmeter.

Dan huwa prodott kummerċjali?

Iva. Dan huwa prodott kummerċjali.

Sors: www.habr.com

Żid kumment