DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ngexesha elithile kwixesha elizayo elikude, ukususwa ngokuzenzekelayo kwedatha engadingekile kuya kuba ngomnye wemisebenzi ebalulekileyo ye-DBMS [1]. Okwangoku, thina ngokwethu kufuneka sithathele ingqalelo ukucima okanye ukuhambisa idatha engeyomfuneko kwiinkqubo zokugcina ezingabizi kakhulu. Masithi ugqibe ekubeni ucime imiqolo ezigidi ezimbalwa. Umsebenzi olula ngokufanelekileyo, ngakumbi ukuba imeko iyaziwa kwaye kukho isalathisi esifanelekileyo. "CIMA KWItafile1 APHO col1 = :value" - yintoni enokuba lula, akunjalo?

Ividiyo:

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

  • Bendikwikomiti yenkqubo yeHighload ukusukela kunyaka wokuqala, oko kukuthi ukusukela ngo-2007.

  • Kwaye bendikunye nePostgres ukusukela ngo-2005. Yisebenzise kwiiprojekthi ezininzi.

  • Iqela kunye neRuPostges kwakhona ukususela ngo-2007.

  • Sikhule saya kutsho kuma-2100+ abathathi-nxaxheba kwi-Meetup. Ikwindawo yesibini kwihlabathi emva kweNew York, ethathwe yiSan Francisco ixesha elide.

  • Ndihlala eCalifornia iminyaka emininzi. Ndisebenzisana ngakumbi neenkampani zaseMelika, kubandakanywa nezinkulu. Bangabasebenzisi abasebenzayo bePostgres. Kwaye kukho zonke iintlobo zezinto ezinomdla.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

https://postgres.ai/ yinkampani yam. Sikwishishini lemisebenzi ezenzekelayo esusa ukucotha kophuhliso.

Ukuba wenza into, ngamanye amaxesha kukho uhlobo lweeplagi ezijikeleze iPostgres. Masithi kufuneka ulinde ukuba admin amisele ibhentshi yovavanyo, okanye kufuneka ulinde iDBA ukuba ikuphendule. Kwaye sifumana iibhotile ezinjalo kuphuhliso, uvavanyo kunye nenkqubo yokulawula kwaye sizame ukuziphelisa ngoncedo lwe-automation kunye neendlela ezintsha.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

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

Bendisandula ndiseVLDB eLos Angeles. Le yeyona nkomfa inkulu yogcino-lwazi. Kwaye kwakukho ingxelo yokuba kwixesha elizayo i-DBMS ayiyi kugcina kuphela, kodwa iphinde isuse idatha ngokuzenzekelayo. Lo ngumxholo omtsha.

Kukho idatha eninzi nangaphezulu kwihlabathi le-zettabytes - yi-1 petabytes. Kwaye ngoku sele kuqikelelwa ukuba singaphezu kwe-000 zettabytes zedatha egcinwe kwihlabathi. Kwaye kukho ngakumbi nangakumbi kubo.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

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

Kwaye ukwenza ntoni ngayo? Ngokucacileyo kufuneka isuswe. Nali ikhonkco kule ngxelo enomdla. Kodwa ukuza kuthi ga ngoku oku akuzange kuphunyezwe kwi-DBMS.

Abakwaziyo ukubala imali bafuna izinto ezimbini. Bafuna ukuba sicime, ngoko ke ngokobuchwephesha kufuneka sikwazi ukuyenza.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Into endiza kuyithetha ngokulandelayo yimeko ethile engabonakaliyo ebandakanya iqela leemeko zokwenyani, oko kukuthi, uhlobo lokuhlanganiswa kwento eyenzekayo kum kunye nogcino-lwazi olujikelezileyo ngamaxesha amaninzi, iminyaka emininzi. IiRakes zikuyo yonke indawo kwaye wonke umntu uyanyathela kuwo ngalo lonke ixesha.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Masithi sinesiseko okanye iziseko ezininzi ezikhulayo. Kwaye ezinye iirekhodi ngokucacileyo ziyinkunkuma. Umzekelo, umsebenzisi waqala ukwenza into apho, kodwa akazange ayigqibe. Kwaye emva kwexesha elithile siyazi ukuba oku kungagqitywanga akusayi kugcinwa. Oko kukuthi, singathanda ukucoca ezinye izinto zenkunkuma ukwenzela ukugcina indawo, ukuphucula ukusebenza, njl.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ngokubanzi, umsebenzi kukwenza ngokuzenzekelayo ukucinywa kwezinto ezithile, imigca ethile kwitafile ethile.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kwaye sinesicelo esinjalo, esiza kuthetha ngaso namhlanje, oko kukuthi, malunga nokususwa kwenkunkuma.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Sacela umphuhlisi onamava ukuba ayenze. Wathatha esi sicelo, wazijonga ngokwakhe - yonke into isebenza. Ivavanywe kwiqonga - yonke into ilungile. Iphelile - yonke into iyasebenza. Kanye ngemini siyayiqhuba - yonke into ilungile.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

I-database ikhula kwaye ikhula. Yonke imihla DELETE iqala ukusebenza kancinci kancinci.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Emva koko siyaqonda ukuba ngoku sinenkampani yokuthengisa kwaye itrafikhi iya kuba nkulu ngokuphindaphindiweyo, ngoko sithatha isigqibo sokumisa okwethutyana izinto ezingafunekiyo. Kwaye ulibale ukubuya.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kwiinyanga ezimbalwa kamva bakhumbula. Kwaye loo mphuhlisi wayeka okanye uxakeke yenye into, uyalele omnye ukuba ayibuyisele.

Wajonga kwi-dev, kwi-staging - yonke into ilungile. Ngokwemvelo, kusafuneka ucoce oko kuqokelelweyo. Wajonga yonke into isebenza.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kwenzeka ntoni emva koko? Emva koko yonke into iyahlukana ngenxa yethu. Ihla ukuze ngexesha elithile yonke into iwe phantsi. Wonke umntu wothukile, akukho mntu uyiqondayo into eyenzekayo. Kwaye ke kwavela ukuba lo mbandela wawukule DELETE.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Into ayihamba kakuhle? Nalu uluhlu lwezinto ezinokuthi zingahambi kakuhle. Yiyiphi kwezi ebaluleke kakhulu?

  • Ngokomzekelo, kwakungekho ukuhlaziywa, oko kukuthi ingcali ye-DBA ayizange ijonge. Uza kuyifumana kwangoko ingxaki ngeliso elinamava, kwaye ngaphandle koko, unokufikelela kwi-prod, apho imigca yezigidi ezininzi ziye zaqokelelana.

  • Mhlawumbi bajonge into engalunganga.

  • Mhlawumbi i-hardware iphelelwe lixesha kwaye kufuneka uphucule esi siseko.

  • Okanye kukho into engalunganga nge-database ngokwayo, kwaye kufuneka sisuke kwi-Postgres siye kwi-MySQL.

  • Okanye mhlawumbi kukho into engalunganga ngolu tyando.

  • Mhlawumbi kukho iimpazamo kwintlangano yomsebenzi kwaye kufuneka ugxothe umntu kwaye uqeshe abantu abagqwesileyo?

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Bekungekho kukhangela i-DBA. Ukuba bekukho i-DBA, uya kubona le migca yezigidi ezininzi kwaye nangaphandle kovavanyo olunokuthi: "Abakwenzi oko." Masithi ukuba le khowudi ibikwi-GitLab, GitHub kwaye bekuya kubakho inkqubo yophononongo lwekhowudi kwaye bekungenjalo ngaphandle kwemvume ye-DBA olu sebenzi beluya kwenzeka kwi-prod, kuyacaca ke ukuba i-DBA ibinokuthi: β€œOku akunakukwenziwa. ”

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kwaye uya kuthi uya kuba neengxaki nge-disk IO kwaye zonke iinkqubo ziya kuphambana, kunokubakho izitshixo, kwaye uya kuvala i-autovacuum kangangemizuzu emininzi, ke oku akulunganga.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

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

Impazamo yesibini - bajonga kwindawo engalunganga. Siye sabona emva kwento yokuba uninzi lwedatha eyinkunkuma eqokelelwe kwiprod, kodwa umphuhlisi akazange aqokelele idatha kule database, kwaye akukho mntu wenze le junk ngexesha lokumiswa. Ngokufanelekileyo, bekukho imigca ye-1 esebenze ngokukhawuleza.

Siyaqonda ukuba iimvavanyo zethu zibuthathaka, oko kukuthi inkqubo eyakhiweyo ayibambi iingxaki. Uvavanyo olwaneleyo lweDB alwenziwanga.

Uvavanyo olufanelekileyo kukhethwa ukuba lwenziwe kwisixhobo esifanayo. Akusoloko kunokwenzeka ukwenza oku kwisixhobo esifanayo, kodwa kubaluleke kakhulu ukuba ibe yikopi epheleleyo yedatha. Le yinto ebendiyishumayela kangangeminyaka eliqela ngoku. Kwaye kunyaka ophelileyo ndathetha ngale nto, ungayibukela yonke kuYouTube.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Mhlawumbi izixhobo zethu zimbi? Ukuba ukhangele, emva koko i-latency yaxhuma. Sibonile ukuba ukusetyenziswa yi-100%. Ewe kunjalo, ukuba ezi ibiziidrive zeNVMe zangoku, kuya kuba lula kakhulu kuthi. Kwaye mhlawumbi besingayi kulala phantsi kuyo.

Ukuba unamafu, ke uphuculo lwenziwa lula apho. Inyuse iireplicas ezintsha kwihardware entsha. utshintsho. Kwaye konke kulungile. Kulula kakhulu.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ngaba kuyenzeka ukuba ngandlela ithile ukubamba iidiski ezincinci? Kwaye apha, ngoncedo lwe-DBA, singena kwisihloko esithile esibizwa ngokuba yi-checkpoint tuning. Kuye kwafumaniseka ukuba besingenalo uhlengahlengiso.

Yintoni indawo yokukhangela? Ikuyo nayiphi na i-DBMS. Xa unedatha kwimemori eguqukayo, ayibhalwanga kwangoko kwidiski. Ulwazi olutshintshileyo idatha lubhalwa kuqala kwi-log-ahead log. Kwaye ngexesha elithile, i-DBMS ithatha isigqibo sokuba lixesha lokulahla amaphepha okwenene kwidiski, ukuze ukuba sinokungaphumeleli, sinokwenza ngaphantsi kwe-REDO. Kufana nento yokudlala. Ukuba siyabulawa, siya kuqala umdlalo ukusuka kwindawo yokugqibela yokujonga. Kwaye yonke i-DBMS iyayiphumeza.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Iisetingi kwi-Postgres zisemva. Zenzelwe i-10-15 iminyaka ubudala imiqulu yedatha kunye nokuthengiselana. Kwaye indawo yokukhangela ayinjalo.

Nalu ulwazi oluvela kwingxelo yethu yokujonga i-Postgres, o.k.e. ukujonga impilo ngokuzenzekelayo. Kwaye nantsi idatabase yeeterabytes ezininzi. Kwaye kunokubonwa kakuhle ukuba ukunyanzeliswa kwee-checkpoints phantse kwi-90% yamatyala.

Ingaba ithetha ntoni? Kukho iisetingi ezimbini apho. Indawo yokukhangela inokuza ngexesha lokuvala, umzekelo, kwimizuzu eli-10. Okanye inokuza xa idatha eninzi igcwalisiwe.

Kwaye ngokungagqibekanga max_wal_saze imiselwe kwi-1 gigabyte. Enyanisweni, oku kwenzeka ngokwenene kwi-Postgres emva kwe-300-400 megabytes. Utshintshe idatha eninzi kwaye indawo yakho yokukhangela iyenzeka.

Kwaye ukuba akukho mntu wayilungisayo, kwaye inkonzo yanda, kwaye inkampani ifumana imali eninzi, ineentengiselwano ezininzi, emva koko i-checkpoint ifika kanye ngomzuzu, ngamanye amaxesha imizuzwana engama-30, kwaye ngamanye amaxesha iphinde idibanise. Oku kubi kakhulu.

Kwaye kufuneka siqinisekise ukuba iza kancinci rhoqo. Oko kukuthi, singanyusa max_wal_size. Kwaye iya kuza kancinci.

Kodwa siye savelisa indlela epheleleyo yokwenza ngokuchanekileyo ngakumbi, oko kukuthi, indlela yokwenza isigqibo malunga nokukhetha izicwangciso, ngokucacileyo ngokusekelwe kwidatha ethile.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ngokufanelekileyo, senza uthotho lwemifuniselo emibini koovimba beenkcukacha.

Uluhlu lokuqala - sitshintsha max_wal_size. Kwaye senza uqhaqho olukhulu. Okokuqala, siyenza kulungiselelo olungagqibekanga lwe-gigabyte eyi-1. Kwaye senza i DELETE enkulu yezigidi ezininzi zemigca.

Uyabona ukuba kunzima kangakanani kuthi. Siyabona ukuba i-disk IO imbi kakhulu. Sijonga ukuba zingaphi ii-WAL esizenzileyo, kuba oku kubaluleke kakhulu. Makhe sibone ukuba indawo yokuhlola yenzeke kangaphi. Kwaye siyabona ukuba akulunganga.

Okulandelayo sonyusa max_wal_size. Siyaphinda. Sandisa, siyaphinda. Kwaye amaxesha amaninzi. Ngokomgaqo, amanqaku angama-10 alungile, apho i-1, 2, 4, 8 gigabytes. Kwaye sijonga indlela yokuziphatha kwenkqubo ethile. Kucacile ukuba apha izixhobo kufuneka zifane neprod. Kufuneka ube neediski ezifanayo, inani elifanayo lememori, kunye nezicwangciso zePostgres ezifanayo.

Kwaye ngale ndlela siya kutshintshana inkqubo yethu, kwaye siyazi ukuba i-DBMS iya kuziphatha njani kwimeko ye-mass mass DELETE, ukuba iya kukhangela njani.

Indawo yokuhlola ngesiRashiya ziindawo zokuhlola.

Umzekelo: Cima izigidi zeerowu ngesalathiso, imiqolo "ithe saa" kumaphepha.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Nanku umzekelo. Esi sisiseko esithile. Kwaye ngokusetwa okungagqibekanga kwe-1 gigabyte ye-max_wal_size, kucace gca ukuba iidiski zethu ziya kwishelufu yokurekhoda. Lo mfanekiso luphawu oluqhelekileyo lwesigulane esigula kakhulu, oko kukuthi, wayeziva kakubi ngokwenene. Kwaye kwabakho utyando olunye, bekukho nje UKUSUMA kwemigca yezigidi ezininzi.

Ukuba umsebenzi onjalo uvunyelwe kwi-prod, ngoko siya kulala phantsi, kuba kuyacaca ukuba i-DELETE enye iyasibulala kwi-shelf.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ukuqhubela phambili, apho i-gigabytes ye-16, kuyacaca ukuba amazinyo sele ehambile. Amazinyo sele angcono, oko kukuthi, sinkqonkqoza kwisilingi, kodwa akunjalo. Kwakukho inkululeko ethile apho. Ekunene yingxelo. Kwaye inani lemisebenzi - igrafu yesibini. Kwaye kuyacaca ukuba sele siphefumla lula kancinci xa iigigabhayithi ezili-16.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kwaye apho i-64 gigabytes inokubonwa ukuba ibe ngcono ngokupheleleyo. Sele amazinyo sele evakalisiwe, kukho amathuba amaninzi okusinda kweminye imisebenzi kwaye wenze into ngediski.

Kutheni kunjalo

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ndizakuntywila kwiinkcukacha kancinci, kodwa esi sihloko, indlela yokujonga indawo yokukhangela, kunokukhokelela kwingxelo epheleleyo, ke andizukulayisha kakhulu, kodwa ndiza kuchaza kancinci ubunzima obukhoyo.

Ukuba i-checkpoint iyenzeka rhoqo, kwaye sihlaziya imigca yethu ngokungahambi ngokulandelelana, kodwa sifumane ngesalathisi, okulungileyo, kuba asiyicimi yonke itafile, ngoko kunokwenzeka ukuba ekuqaleni sichukumise iphepha lokuqala, ngoko ke iwaka. waza wabuyela kowokuqala . Kwaye ukuba phakathi kolu tyelelo kwiphepha lokuqala, indawo yokukhangela sele iyigcinile kwidisk, ngoko iya kuyigcina kwakhona, kuba siyifumene imdaka okwesibini.

Kwaye siya kunyanzela indawo yokukhangela ukuyigcina amaxesha amaninzi. Bekuza kwenziwa utyando olungafunekiyo kuye.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kodwa akuphelelanga apho. Amaphepha aziikhilobhayithi ezisi-8 kwiPostgres kunye neekhilobhayithi ezi-4 kwiLinux. Kwaye kukho i-full_page_bhala useto. Yenziwa ngokungagqibekanga. Kwaye oku kuchanekile, kuba ukuba siyayicima, kukho ingozi yokuba kuphela isiqingatha sephepha siya kugcinwa xa siphahlazeka.

Ukuziphatha kokubhala kwi-WAL yelog yangaphambili kukuba xa sinendawo yokukhangela kwaye sitshintsha iphepha okokuqala, lonke iphepha, oko kukuthi, zonke ii-kilobytes ezi-8, zingena kwi-log yangaphambili, nangona sitshintshe kuphela umgca, onobunzima be-100 bytes. Kwaye kufuneka sibhale phantsi lonke iphepha.

Kwiinguqu ezilandelayo, kuya kubakho i-tuple ethile kuphela, kodwa okokuqala sibhala yonke into.

Kwaye, ngokufanelekileyo, ukuba indawo yokukhangela yenzeke kwakhona, kufuneka siqale yonke into ukusuka ekuqaleni kwakhona kwaye sityhale lonke iphepha. Ngokujonga rhoqo, xa sihamba kumaphepha afanayo, i-full_page_writes = iya kuba ngaphezulu kunokuba inokuba njalo, oko kukuthi, sivelisa i-WAL eninzi. Okuninzi kuthunyelwa kwiikopi, kwindawo yokugcina, kwidiski.

Kwaye, ngokufanelekileyo, sineemfuneko ezimbini.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ukuba sonyusa max_wal_size, kuyavela ukuba senza kube lula kuzo zombini indawo yokukhangela kunye nombhali we-wal. Kwaye kulungile.

Masifake i-terabyte kwaye siphile nayo. Yintoni embi ngayo? Oku kubi, kuba kwimeko yokungaphumeleli, siya kukhwela iiyure, kuba indawo yokukhangela yayikude kwaye ininzi ishintshile. Kwaye kufuneka siyenze yonke le REDO. Kwaye ke senza uluhlu lwesibini lwemifuniselo.

Senza utyando kwaye sibone xa indawo yokukhangela sele iza kugqiba, sibulala -9 Postgres ngabom.

Kwaye emva koko siqala kwakhona, kwaye sibone ukuba kuya kuphakama ixesha elingakanani kwesi sixhobo, oko kukuthi, kuya kuphinda kulungiswe kangakanani kule meko imbi.

Kabini ndiya kuphawula ukuba imeko imbi. Okokuqala, siye santlitheka kanye ngaphambi kokuba kugqitywe indawo yokuhlola, ngoko ke kuninzi ekufuneka sikulahlekele. Kwaye okwesibini, senze utyando olukhulu. Kwaye ukuba iindawo zokujonga bezikwixesha lokuvala, ke, kunokwenzeka ukuba, i-WAL encinci iya kwenziwa ukusukela kwindawo yokugqibela yokukhangela. Oko kukuthi, ilahleko ephindwe kabini.

Silinganisa imeko enjalo kwiisayizi ezahlukeneyo ze-max_wal_size kwaye siyaqonda ukuba ukuba max_wal_size ngama-gigabytes angama-64, ngoko kwimeko embi kakhulu siya kukhwela imizuzu eyi-10. Kwaye sicinga ukuba iyasifanela okanye hayi. Lo ngumbuzo weshishini. Kufuneka sibonise lo mfanekiso kwabo bajongene nezigqibo zoshishino size sibuze, β€œSinokungqengqa ixesha elingakanani xa kukho ingxaki? Ngaba sinokulala phantsi kwimeko embi kakhulu kwi-3-5 imizuzu? Kwaye wenze isigqibo.

Kwaye nantsi inqaku elinomdla. Sineengxelo ezimbalwa malunga nePatroni kwinkomfa. Kwaye mhlawumbi uyayisebenzisa. Le yi-autofailover ye-Postgres. I-GitLab kunye ne-Data Egret bathethe ngale nto.

Kwaye ukuba une-autofailover eza kwimizuzwana engama-30, mhlawumbi singangqengqa kangangemizuzu eli-10? Ngenxa yokuba siza kutshintshela kwi-replica ngeli nqaku, kwaye yonke into iya kulunga. Le yingongoma esisiseko. Andazi impendulo ecacileyo. Ndivakalelwa kukuba lo mxholo awukho nje malunga nokubuyiselwa kwengozi.

Ukuba sinokubuyisela ixesha elide emva kokungaphumeleli, ngoko siya kukhululeka kwezinye iimeko ezininzi. Ngokomzekelo, kwiimvavanyo ezifanayo, xa sisenza into kwaye ngamanye amaxesha kufuneka silinde imizuzu eyi-10.

Andisayi kuhamba kakhulu, nokuba sine-autofailover. Njengomthetho, amaxabiso anje nge64, 100 gigabytes amaxabiso amahle. Ngamanye amaxesha kufanelekile ukukhetha kancinci. Ngokubanzi, le yinzululwazi efihlakeleyo.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ukwenza uphindaphindo, umzekelo, max_wal_size =1, 8, kufuneka uphinde usebenze ngobunzima amaxesha amaninzi. Uphumelele. Kwaye kwisiseko esifanayo ufuna ukuyenza kwakhona, kodwa sele ucime yonke into. Kwenziwe ntoni?

Ndiza kuthetha kamva malunga nesisombululo sethu, into esiyenzayo ukuze siphindaphinde kwiimeko ezinjalo. Kwaye le yeyona ndlela ichanekileyo.

Kodwa kule meko, sibe nethamsanqa. Ukuba, njengoko isitsho apha "QALA, UCIME, ROLLBACK", ngoko sinokuphinda u-CIMA. Oko kukuthi, ukuba siyicimile ngokwethu, singayiphinda. Kwaye ngokwasemzimbeni kuwe idatha iya kulala kwindawo enye. Awufumani nokudumba. Ungaphinda-phinda kwezo DELETEs ezinjalo.

Oku SIMA nge-ROLLBACK ilungele ukulungiswa kwendawo yokukhangela, nokuba awunazo iilebhu zedatha ebekwe ngokufanelekileyo.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Senza ipleyiti ngekholomu enye "i". I-Postgres ineentsika eziluncedo. Azibonakali ngaphandle kokuba zicelwe ngokuthe ngqo. Ezi zezi: ctid, xmid, xmax.

I-Ctid yidilesi yendawo. Zero iphepha, i-tuple yokuqala kwiphepha.

Kuya kubonakala ukuba emva kwe-ROOLBACK i-tuple yahlala kwindawo enye. Oko kukuthi, sinokuzama kwakhona, kuya kuziphatha ngendlela efanayo. Le yeyona nto iphambili.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Xmax lixesha lokufa kwe-tuple. Yafakwa isitampu, kodwa i-Postgres iyazi ukuba intengiselwano yaqengqeleka emva, ke akukhathaliseki nokuba yi-0 okanye yintengiselwano eqengqelekisiweyo. Oku kuphakamisa ukuba kuyenzeka ukuphinda-phinda ngaphezulu kwe-CIMA kwaye ujonge imisebenzi emininzi yendlela yokuziphatha. Unokwenza iilebhu zedatabase ukwenzela amahlwempu.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Oku kumalunga nabadwelisi benkqubo. Malunga ne-DBA, nabo, bahlala bekhuza abadwelisi benkqubo ngale nto: "Kutheni usenza imisebenzi emide nenzima kangaka?". Esi sisihloko esahluke ngokupheleleyo kwi-perpendicular. Bekukade kukho ulawulo, kwaye ngoku kuya kubakho uphuhliso.

Ngokucacileyo, asizange siqhekezwe sibe ziingceba. Icacile. Akunakwenzeka ukuba ungawaphuli i-DELETE enjalo kwimfumba yezigidi zemigca ibe ngamalungu. Kuya kwenziwa imizuzu engama-20, kwaye yonke into iya kulala. Kodwa, ngelishwa, nabaphuhlisi abanamava benza iimpazamo, nakwiinkampani ezinkulu kakhulu.

Kutheni kubalulekile ukuqhekeza?

  • Ukuba sibona ukuba idiski inzima, ngoko masiyicothise. Kwaye ukuba sophukile, ngoko singongeza unqumamo, singacothisa ukutswina.

  • Kwaye asiyi kubavimba abanye ixesha elide. Kwezinye iimeko akukhathaliseki, ukuba ucima inkunkuma yokwenyani ekungekho mntu usebenzayo, ngoko ke akunakuvimba nabani na ngaphandle komsebenzi we-autovacuum, kuba iya kulinda intengiselwano ukuba igqitywe. Kodwa ukuba ususa into enokuthi ifakwe ngomnye umntu, ngoko baya kuvalelwa, kuya kubakho uhlobo oluthile lokuphendula ngetsheyini. Ukuthengiselana okude kufuneka kugwenywe kwiiwebhusayithi kunye nezicelo zeselula.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

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

Oku kunomdla. Ndihlala ndibona ukuba abaphuhlisi babuza: "Yintoni ubungakanani bepakethi endimele ndiyikhethe?".

Kucacile ukuba ubukhulu besayizi ye-bundle, encinci ye-transaction overhead, oko kukuthi, i-overhead eyongezelelweyo evela kwiintengiselwano. Kodwa kwangaxeshanye, ixesha liyanda kule ntengiselwano.

Ndinomgaqo olula kakhulu: thatha kangangoko unako, kodwa ungagqitheli kwi-executables ngomzuzwana.

Kutheni umzuzwana? Inkcazo ilula kakhulu kwaye iyaqondakala kumntu wonke, nakubantu abangengabo ubuchwepheshe. Sibona ukusabela. Masithathe 50 millisecond. Ukuba kukho into etshintshileyo, ngoko iliso lethu liya kusabela. Ukuba ngaphantsi, ngoko kunzima ngakumbi. Ukuba kukho into ephendulayo emva kwe-100 milliseconds, umzekelo, unqakraze imouse, kwaye ikuphendule emva kwe-100 milliseconds, sele uziva oku kulibaziseka kancinane. Isesibini sele sibonwa njengeziqhoboshi.

Ngokufanelekileyo, ukuba saphula imisebenzi yethu yobunzima ibe yi-10-yesibini iqhuma, ngoko sinomngcipheko wokuba siya kumvimba umntu. Kwaye iya kusebenza imizuzwana embalwa, kwaye abantu baya kuyibona. Ngoko ke, ndikhetha ukungenzi ngaphezu komzuzwana. Kodwa kwangaxeshanye, musa ukuyiqhekeza ngokucokisekileyo, kuba i-transaction overhead iya kubonakala. Isiseko siya kuba nzima, kwaye ezinye iingxaki ezahlukeneyo zinokuvela.

Sikhetha ubungakanani bepakethi. Kwimeko nganye, sinokukwenza ngokwahlukileyo. Inokwenziwa ngokuzenzekelayo. Kwaye siqinisekile ngokusebenza kakuhle kokulungiswa kwepakethi enye. Oko kukuthi, senza DELETE ipakethe enye okanye UKUHLAZIYA.

Ngandlela-thile, yonke into endiyithethayo ayithethi nge-DELETE kuphela. Njengoko uqikelele, ezi yiyo nayiphi na imisebenzi eninzi kwidatha.

Kwaye siyabona ukuba isicwangciso sihle. Ungasibona iskena sesalathisi, iskena sesalathiso kuphela singcono. Kwaye sinesixa esincinci sedatha ebandakanyekayo. Kwaye ngaphantsi kwesibini sizalisekisa. Super.

Kwaye kusafuneka siqinisekise ukuba akukho kuthotywa. Kwenzeka ukuba iipakethi zokuqala zisebenza ngokukhawuleza, kwaye emva koko ziba zibi, zibi nakakhulu. Inkqubo injalo ukuba kufuneka uvavanye kakhulu. Yile nto kanye yenzelwe iilebhu zedatabase.

Kwaye kusafuneka silungiselele into ukuze ivumele ukuba siyilandele ngokuchanekileyo kwimveliso. Umzekelo, sinokubhala ixesha kwilogi, sinokubhala ukuba siphi ngoku kwaye ngubani osicimile ngoku. Yaye oku kuya kusivumela ukuba siqonde okwenzekayo kamva. Kwaye xa kukho into engahambi kakuhle, khawuleza ufumane ingxaki.

Ukuba sifuna ukujonga ukusebenza kwezicelo kwaye kufuneka siphindaphinde amaxesha amaninzi, ke kukho into efana ne-bot yabanye. Sele elungile. Isetyenziswa ngabaninzi abaphuhlisi mihla le. Kwaye uyayazi indlela yokunika i-database enkulu ye-terabyte kwisicelo kwimizuzwana engama-30, ikopi yakho. Kwaye unokucima into apho kwaye uthi ISETHA, kwaye uyicime kwakhona. Ungazama ngayo ngale ndlela. Ndibona ikamva lale nto. Kwaye sele siyenza.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

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

Ziziphi izicwangciso zokwahlulahlula? Ndibona iindlela ezi-3 zokwahlulahlula ezahlukeneyo ezisetyenziswa ngabaphuhlisi kwipakethi.

Eyokuqala ilula kakhulu. Sinesazisi samanani. Kwaye masiyicazulule ibe ngamathuba ahlukeneyo kwaye sisebenze ngaloo nto. Icala elisezantsi licacile. Kwicandelo lokuqala, sinokuba nemigca eyi-100 yenkunkuma yangempela, kwimigca emi-5 yesibini okanye akunjalo, okanye yonke imigca eyi-1 iya kuba yinkunkuma. Umsebenzi ongalinganiyo kakhulu, kodwa kulula ukuwuqhawula. Baye bathatha eyona ID bayisaphula. Le yindlela engenangqondo.

Isicwangciso sesibini yindlela elungeleleneyo. Isetyenziswa kwiGitlab. Bayithatha bayiskena itafile. Sifumene imida yeepakethi ze-ID ukwenzela ukuba ipakethi nganye ibe neerekhodi ze-10 ngqo. Kwaye uzibeke emgceni. Kwaye ke siyayiprosesa. Unokwenza oku kwimisonto emininzi.

Kwisicwangciso sokuqala, kwakhona, ngendlela, unokwenza oku kwiintambo ezininzi. Akunzima.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

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

Kodwa kukho indlela epholileyo nengcono. Eli liqhinga lesithathu. Kwaye xa kunokwenzeka, kungcono ukuyikhetha. Senza oku ngesiseko sesalathiso esikhethekileyo. Kule meko, iya kuba sisalathisi ngokwemeko yethu yenkunkuma kunye ne-ID. Siza kufaka i-ID ukuze ibe yi-index scan kuphela ukuze singayi kwimfumba.

Ngokubanzi, iskena sesalathiso kuphela sikhawuleza kunesalathisi.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kwaye sifumana ngokukhawuleza ii-ID zethu esifuna ukuzicima. BATCH_SIZE sikhetha kwangaphambili. Kwaye asizifumani nje kuphela, sizifumana ngendlela ekhethekileyo kwaye siziqhekeze kwangoko. Kodwa siyatshixa ukuze ukuba sele zitshixiwe, singazitshixi, kodwa sidlulele phambili sithathe ezilandelayo. Le yohlaziyo tsiba itshixiwe. Eli nqaku liphezulu lePostgres lisivumela ukuba sisebenze kwimisonto emininzi ukuba sifuna. Inokwenzeka kumlambo omnye. Kwaye nantsi i-CTE - esi sicelo esinye. Kwaye sinokucinywa okwenyani okuqhubekayo kumgangatho wesibini wale CTE - returning *. Ungabuyisela id, kodwa kungcono *ukuba awunayo idatha eninzi kumgca ngamnye.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Kutheni siyidinga nje? Yile nto ekufuneka siyinike ingxelo. Ngoku sicime imigca emininzi ngokwenene. Kwaye sinemida nge-ID okanye ngokudalwa_ ngolu hlobo. Unokwenza min, max. Kukho enye into enokwenziwa. Ungafaka izinto ezininzi apha. Kwaye kulungele kakhulu ukubeka iliso.

Kukho enye inqaku malunga nesalathiso. Ukuba sithatha isigqibo sokuba sifuna isalathiso esikhethekileyo kulo msebenzi, ngoko kufuneka siqinisekise ukuba akonakalisi imfumba yohlaziyo lwe-tuples kuphela. Oko kukuthi, iPostgres inezibalo ezinjalo. Oku kunokubonwa kwi-pg_stat_user_tables yetafile yakho. Uyakwazi ukubona ukuba uhlaziyo olushushu luyasetyenziswa okanye hayi.

Kukho iimeko apho isalathiso sakho esitsha sinokuzisika ngokulula. Kwaye unalo lonke olunye uhlaziyo olusele lusebenza, cotha isantya. Akunjalo nje ngenxa yokuba isalathisi sivele (isalathisi ngasinye sinciphisa uhlaziyo kancinane, kodwa kancinane), kodwa apha sisayonakalisa. Kwaye akunakwenzeka ukwenza ukulungelelaniswa okukhethekileyo kule theyibhile. Oku kwenzeka ngamanye amaxesha. Oku kubuqili kangangokuba bambalwa abantu abakhumbulayo. Kwaye le rakhi kulula ukunyathela kuyo. Ngamanye amaxesha kwenzeka ukuba ufuna ukufumana indlela esuka kwelinye icala kwaye wenze ngaphandle kwesi salathisi esitsha, okanye wenze esinye isalathisi, okanye ngenye indlela, umzekelo, ungasebenzisa indlela yesibini.

Kodwa esi sesona sicwangciso silungileyo, indlela yokwahlula kwiibhetshi kunye nokudubula kwiibhetshi ngesicelo esinye, cima kancinci, njl.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Iintengiselwano ezinde https://gitlab.com/snippets/1890447

I-autovacuum evaliweyo - https://gitlab.com/snippets/1889668

umba wokubhloka - https://gitlab.com/snippets/1890428

Impazamo #5 inkulu. U-Nikolai ovela e-Okmeter wathetha ngokujongwa kwe-Postgres. Ideal Postgres esweni, ngelishwa, ayikho. Abanye basondele, abanye bakude. I-Okmeter ikufutshane ngokwaneleyo ukuba igqibelele, kodwa kuninzi okulahlekileyo kwaye kufuneka kongezwe. Kufuneka ukulungele oku.

Umzekelo, ii-tuples ezifileyo zijongwa kakuhle. Ukuba unezinto ezininzi ezifileyo etafileni, ngoko kukho into engalunganga. Kungcono ukusabela ngoku, kungenjalo kunokubakho ukuthotywa, kwaye sinokungqengqa. Iyenzeka.

Ukuba kukho i-IO enkulu, ngoko kuyacaca ukuba oku akulungile.

Iintengiselwano ezinde nazo. Iintengiselwano ezinde kufuneka zingavunyelwa kwi-OLTP. Kwaye nali ikhonkco kwi-snippet ekuvumela ukuba uthathe le snippet kwaye sele wenze umkhondo wentengiselwano ezinde.

Kutheni iintengiselwano ezinde zingalunganga? Kuba zonke izitshixo ziya kukhululwa kuphela ekupheleni. Kwaye sigxeka wonke umntu. Kwaye, sivimba i-autovacuum yazo zonke iitafile. Akulunganga kwaphela. Nokuba unokulinda okushushu okuvuliweyo kwikopi, kusekubi. Ngokubanzi, akukho ndawo ingcono ukuphepha ukuthengiselana okude.

Ukuba sineetafile ezininzi ezingacocwanga, kufuneka sibe nesilumkiso. Apha imeko enjalo inokwenzeka. Sinokuchaphazela ngokungathanga ngqo ukusebenza kwe-autovacuum. Le snippet evela ku-Avito, endiyiphucule kancinane. Kwaye kuye kwaba sisixhobo esinomdla ukubona into esinayo nge-autovacuum. Umzekelo, ezinye iitafile zilindile kwaye aziyi kulinda ithuba labo. Kananjalo kufuneka uyibeke esweni kwaye ube nesilumkiso.

Kwaye ikhupha iibhloko. Ihlathi lemithi yebhloko. Ndiyathanda ukuthatha into emntwini ndiyiphucule. Apha ndathatha i-CTE epholileyo ephindaphindayo kwi-Data Egret ebonisa ihlathi lemithi yokutshixa. Esi sisixhobo esilungileyo sokuxilonga. Kwaye kwisiseko sayo, unokwakha kwakhona ukubeka iliso. Kodwa oku kufuneka kwenziwe ngononophelo. Kuya kufuneka uzenzele isitatimende esincinci. Kwaye i-lock_timeout iyanqweneleka.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Ngamanye amaxesha zonke ezi mpazamo zenzeka xa zizonke.

Ngokombono wam, eyona mpazamo iphambili apha yintlangano. Yeyombutho, kuba ubuchule abutsali. Le nombolo 2 - bajonga kwindawo engalunganga.

Sihlolisise kwindawo engafanelekanga, kuba sasingenayo i-clone yokuvelisa, ekulula ukuyijonga. Umphuhlisi usenokungakwazi ukufikelela kwimveliso kwaphela.

Kwaye sajonga akukho apho. Ukuba sasikhe sajonga apho, ngesizibonele ngokwethu. Umphuhlisi wayibona yonke ngaphandle kwe-DBA ukuba wayijonga kwindawo efanelekileyo, apho kukho inani elifanayo ledatha kunye nendawo efanayo. Ebezakubona konke oku kuthotywa kwakhe shame.

Okungakumbi malunga ne-autovacuum. Emva kokuba senze utshayela olukhulu lwemigca eliqela yezigidi, kusafuneka senze REPACK. Oku kubaluleke kakhulu kwizalathisi. Baza kuziva kakubi emva kokuba sicoce yonke into elapho.

Kwaye ukuba ufuna ukubuyisela umsebenzi wokucoca imihla ngemihla, ngoko ndingacebisa ukuba uyenze rhoqo, kodwa encinci. Inokuba kanye ngomzuzu okanye nangaphezulu kancinci kancinci. Kwaye kufuneka ubeke esweni izinto ezimbini: ukuba le nto ayinazo iimpazamo kwaye ayihlali ngasemva. Iqhinga endilibonisileyo liza kuyicombulula le nto.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Into esiyenzayo ngumthombo ovulekileyo. Ifakwe kwi-GitLab. Kwaye siyenza ukuze abantu bajonge nangaphandle kwe-DBA. Senza ilebhu yedathabheyisi, oko kukuthi, sibiza icandelo lesiseko asebenza kulo uJoe ngoku. Kwaye ungabamba ikopi yemveliso. Ngoku kukho ukuphunyezwa kwe-Joe ye-slack, unokuthi apho: "chaza into enjalo kunye nesicelo esinjalo" kwaye ngokukhawuleza ufumane umphumo wekopi yakho yedatha. Unako nokuCIMA apho, kwaye akukho mntu uya kuqaphela.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Masithi une 10 terabytes, senza ilebhu yedatabase kananjalo 10 terabytes. Kwaye kunye ne-10 yedatha ye-terabyte ngaxeshanye, abaphuhlisi abali-10 banokusebenza ngaxeshanye. Wonke umntu unokwenza into ayifunayo. Ingacima, ilahle, njalo njalo. Yintelekelelo enjalo. Siza kuthetha ngale nto ngomso.

DeLETE othandekayo. UNikolay Samokhvalov (Postgres.ai)

Oku kubizwa ngokuba yi-thitle provisioning. Olu lunikezelo oluchuliweyo. Olu luhlobo oluthile lwefantasy olususa kakhulu ukulibaziseka ekuphuhliseni, ekuvavanyeni kwaye lenze ihlabathi libe yindawo engcono kulo mba. Oko kukuthi, ikuvumela ukuba uphephe iingxaki ngemisebenzi eninzi.

Umzekelo: 5 terabyte database, ukufumana ikopi ngaphantsi kwe 30 imizuzwana. Kwaye ayixhomekekanga nakubungakanani, oko kukuthi, akunamsebenzi nokuba zingaphi iiterabytes.

Namhlanje ungaya postgres.ai kwaye umbe izixhobo zethu. Ungabhalisa ukuze ubone ukuba kukho ntoni na. Ungayifaka le bhoti. Yeyazimahla. Bhala.

Imibuzo yakho

Rhoqo kwiimeko zokwenyani kuye kuvele ukuba idatha ekufuneka ihlale kwitafile ingaphantsi kakhulu kunokufuna ukucinywa. Oko kukuthi, kwimeko enjalo, kudla ngokuba lula ukuphumeza indlela enjalo, xa kulula ukwenza into entsha, khuphela kuphela idatha efunekayo apho, kwaye uqhube itafile endala. Kucacile ukuba indlela yenkqubo iyadingeka kulo mzuzu, ngelixa uya kutshintsha. Injani le ndlela?

Le yindlela efanelekileyo kakhulu kunye nomsebenzi omhle kakhulu. Ifana kakhulu nento eyenziwa ngu-pg_repack, ifana kakhulu nento omele uyenze xa usenza ii-ID 4 bytes. Izikhokelo ezininzi zenze oku kwiminyaka embalwa edlulileyo, kwaye amacwecwe nje akhulile, kwaye kufuneka aguqulelwe kwii-bytes ezi-8.

Lo msebenzi unzima kakhulu. Siyenzile. Kwaye kufuneka ulumke kakhulu. Kukho izitshixo, njalo njalo. Kodwa iyenziwa. Oko kukuthi, indlela esemgangathweni kukuhamba nge pg_repack. Ubhengeza ileyibhile enjalo. Kwaye ngaphambi kokuba uqale ukulayisha idatha yesnapshot kuyo, uyabhengeza ipleyiti enye elandelela lonke utshintsho. Kukho iqhinga lokuba awukwazi nokulandelela utshintsho oluthile. Kukho izinto ezifihlakeleyo. Kwaye ke utshintshe ngokuqengqeleka utshintsho. Kuya kubakho ikhefu elifutshane xa sivala wonke umntu, kodwa ngokubanzi oku kuyenziwa.

Ukuba ujonga kwi-pg_repack kwi-GitHub, ngoko, xa kukho umsebenzi wokuguqula i-ID ukusuka kwi-int 4 ukuya kwi-int 8, bekukho ingcamango yokusebenzisa i-pg_repack ngokwayo. Oku kuyenzeka, kodwa yinto encinci, kodwa iyakusebenzela nale. Unokungenelela kwi-trigger esetyenziswa yi-pg_repack kwaye uthi apho: "Asiyidingi le datha", oko kukuthi, sidlulisela kuphela into esiyidingayo. Kwaye ke utshintsha nje kwaye yiloo nto.

Ngale ndlela, sisafumana ikopi yesibini yetafile, apho idatha sele ifakwe kwi-indexed kwaye ifakwe ngokulinganayo kakhulu kunye nezalathisi ezintle.

I-Bloat ayikho, yindlela efanelekileyo. Kodwa ndiyazi ukuba kukho iinzame zokuphuhlisa i-automation kule nto, okt ukwenza isisombululo sendalo yonke. Ndiyakwazi ukukunxibelelanisa nale nto i-automation. Ibhalwe kwiPython, into entle leyo.

Ndisuka nje kancinci kwihlabathi le-MySQL, ngoko ke ndize kumamela. Kwaye sisebenzisa le ndlela.

Kodwa kuphela ukuba sinama-90%. Ukuba sine-5%, ngoko akulunganga kakhulu ukuyisebenzisa.

Enkosi ngengxelo! Ukuba akukho zixhobo zokwenza ikopi epheleleyo yeprod, ngaba kukho nayiphi na i-algorithm okanye ifomula yokubala umthwalo okanye ubungakanani?

Umbuzo omhle. Ukuza kuthi ga ngoku, siyakwazi ukufumana i-database ye-multi-terabyte. Nangona i-hardware ayikho into efanayo, umzekelo, imemori encinci, iprosesa encinci kunye neediski azifani ncam, kodwa siyenza. Ukuba akukho ndawo, ngoko kufuneka ucinge. Makhe ndicinge kude kube ngomso, ufikile, sizothetha, ngumbuzo omhle lo.

Enkosi ngengxelo! Uqale uqale malunga nenyani yokuba kukho iPostgres epholileyo, enemida enjalo kunye nenjalo, kodwa iyaphuhlisa. Kwaye oku konke oku kuyindlela enkulu. Ngaba yonke le nto ayingqubani nophuhliso lwePostgres ngokwayo, apho enye i-DELETE deferent iya kuvela okanye enye into ekufuneka igcine kwinqanaba eliphantsi le nto sizama ukuyithambisa ngezinye iindlela zethu ezingaqhelekanga apha?

Ukuba sithe kwi-SQL ukucima okanye ukuhlaziya iirekhodi ezininzi kwintengiselwano enye, ngoko i-Postgres ingayisasaza njani apho? Sinqongophele ngokwasemzimbeni ekusebenzeni. Sizakuyenza ixesha elide. Kwaye siya kutshixa ngeli xesha, njl.

Kwenziwe ngezalathisi.

Ndiyakwazi ukucinga ukuba uhlengahlengiso olufanayo lwendawo yokukhangela lunokuzenzekela. Ngenye imini kusenokuba njalo. Kodwa ke andiwuqondi kakuhle umbuzo.

Umbuzo ngulo, ngaba kukho i-vector yophuhliso ehamba apha naphaya, kwaye nantsi eyakho ihamba ngokuhambelana? Ezo. Ngaba abakayicingi ngoku?

Ndathetha ngemigaqo enokusetyenziswa ngoku. Kukho enye i-bot nancy, ngoku unokwenza i-automated checkpoint tuning. Ngaba ngenye imini iya kuba sePostgres? Andazi, ayikaxoxwa nangoku. Sisekude kuloo nto. Kodwa kukho izazinzulu ezenza iinkqubo ezintsha. Kwaye basityhalela kwizalathisi ezizenzekelayo. Kukho uphuhliso. Umzekelo, unokujonga ukulungiswa kwe-auto. Ikhetha iiparamitha ngokuzenzekelayo. Kodwa akazukukwenzela indawo yokukhangela. Oko kukuthi, iya kuthatha ukusebenza, i-shell buffer, njl.

Kwaye ukukhangela indawo yokukhangela, unokwenza oku: ukuba unewaka lamaqela kunye nezixhobo ezahlukeneyo zehardware, oomatshini abahlukileyo abakwilifu, ungasebenzisa ibhot yethu. nancy yenza i-automation. Kwaye max_wal_size iya kukhethwa ngokwemimiselo yakho ngokuzenzekelayo. Kodwa ukuza kuthi ga ngoku oku akukasondeli nasembindini, ngelishwa.

Mholo Uthethe ngeengozi zentengiselwano ezinde. Uthe i-autovacuum ivaliwe xa kucinywa. Isenzakalisa njani ngenye indlela? Kuba sithetha ngakumbi malunga nokukhulula indawo kunye nokukwazi ukuyisebenzisa. Yintoni enye esiyiphosayo?

I-Autovacuum mhlawumbi ayiyona ngxaki inkulu apha. Kwaye into yokuba intengiselwano ende inokuvala ezinye iintengiselwano, oku kunokwenzeka kuyingozi ngakumbi. Angadibana okanye angadibani. Ukuba wadibana, oko kunokuba kubi kakhulu. Kwaye nge-autovacuum - oku kuyingxaki. Kukho iingxaki ezimbini zentengiselwano ezinde kwi-OLTP: izitshixo kunye ne-autovacuum. Kwaye ukuba unempendulo eshushu yokulinda enikwe amandla kwi-replica, uya kuhlala ufumana i-autovacuum lock kwi-master, iya kufika isuka kwi-replica. Kodwa noko akuyi kubakho zitshixo. Kwaye kuya kubakho loks. Sithetha ngotshintsho lwedatha, ngoko ke izitshixo ziyingongoma ebalulekileyo apha. Kwaye ukuba yonke le nto ixesha elide, ixesha elide, ke ngakumbi nangakumbi intengiselwano itshixiwe. Banokuba abanye. Kwaye kubonakala imithi. Ndinikeze ikhonkco kwisnippet. Kwaye le ngxaki ibonakala ngokukhawuleza ngakumbi kunengxaki nge-autovacuum, enokuthi iqokelele kuphela.

Enkosi ngengxelo! Uqale ingxelo yakho ngokuthi uvavanye ngendlela engeyiyo. Saqhubeka nombono wethu wokuba kufuneka sithathe izixhobo ezifanayo, kunye nesiseko ngendlela efanayo. Masithi sinike umphuhlisi isiseko. Kwaye wasithobela isicelo. Kwaye ubonakala elungile. Kodwa akakhangeli ukuphila, kodwa ukuphila, umzekelo, sinomthwalo we-60-70%. Kwaye nokuba sisebenzisa olu tuning, alusebenzi kakuhle.

Ukuba neengcali kwiqela kunye nokusebenzisa iingcali ze-DBA ezinokuthi ziqikelele oko kuya kwenzeka ngomthwalo wangempela wemvelaphi kubalulekile. Xa siqhuba nje utshintsho lwethu olucocekileyo, sibona umfanekiso. Kodwa indlela ehambele phambili ngakumbi, xa senze into enye kwakhona, kodwa ngomthwalo owenziwe ngemveliso. Kupholile kakhulu. Kude kube ngoko, kufuneka ukhule. Ingathi ngumntu omdala. Sijonge nje into esinayo sajonga nokuba sinazo na izixhobo ezaneleyo. Ngumbuzo olungileyo lowo.

Xa sele sisenza inkunkuma khetha kwaye, umzekelo, iflegi esusiweyo

Yile nto i-autovacuum iyenzayo ngokuzenzekelayo kwi-Postgres.

Owu, uyayenza?

I-Autovacuum ngumqokeleli wenkunkuma.

Ndiyabonga!

Enkosi ngengxelo! Ngaba kukho ukhetho lokuyila ngokukhawuleza isiseko sedatha kunye nokwahlula ngendlela yokuba yonke inkunkuma ibe mdaka ukusuka kwitafile ephambili kwindawo ethile ukuya kwicala?

Ewe kunjalo.

Ngaba sinako ke ukuzikhusela ukuba sitshixe itafile ekungafanelanga isetyenziswe?

Ewe kunjalo. Kodwa kufana nombuzo wenkukhu kunye neqanda. Ukuba sonke siyazi ukuba kuya kwenzeka ntoni kwixesha elizayo, ke, ngokuqinisekileyo, siya kwenza yonke into epholileyo. Kodwa ishishini liyatshintsha, kukho iikholamu ezintsha, izicelo ezintsha. Kwaye emva koko - oops, sifuna ukuyisusa. Kodwa le meko ifanelekileyo, ebomini iyenzeka, kodwa kungekhona rhoqo. Kodwa ngokubanzi ngumbono olungileyo. Nciphisa nje kwaye yiloo nto.

umthombo: www.habr.com

Yongeza izimvo