Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waxaan kuu soo jeedinayaa inaad akhrido qoraalka warbixinta laga bilaabo bilawga 2016 ee Andrey Salnikov "khaladaadka caadiga ah ee codsiyada u horseedaya barar postgresql"

Warbixintan, waxaan ku lafaguri doonaa khaladaadka ugu waaweyn ee codsiyada ka dhasha marxaladda qaabaynta iyo qorista code-ka codsiga. Oo waxaan qaadan doonaa oo keliya khaladaadka u horseedaya barar gudaha Postgresql. Sida caadiga ah, tani waa bilawga dhamaadka waxqabadka nidaamkaaga guud ahaan, inkastoo markii hore aysan jirin wax shuruudo ah oo tan ah oo muuqda.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waan ku faraxsanahay inaan qof walba soo dhaweeyo! Warbixintani maaha mid farsamo sidii tii hore ee saaxiibkay. Warbixintan waxaa inta badan loogu talagalay horumarinta nidaamka dhabarka sababtoo ah waxaan haysanaa tiro aad u badan oo macaamiisha ah. Dhammaantoodna waxay sameeyaan khaladaad isku mid ah. Waan kuu sheegi doonaa iyaga. Waxaan sharxi doonaa waxa dilaaga ah iyo waxyaabaha xun ee khaladaadkani ay keenaan.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Maxaa qaladaad loo sameeyaa? Waxaa loo sameeyaa laba sababood: si aan kala sooc lahayn, laga yaabee inay shaqeyn doonto iyo sababtoo ah aqoon la'aanta hababka qaar ee ka dhaca heerka u dhexeeya kaydinta iyo codsiga, iyo sidoo kale kaydka laftiisa.

Waxaan ku siin doonaa saddex tusaale oo sawiro xunxun sida ay wax u dhaceen. Waxaan si kooban kaaga sheegi doonaa habka ka dhacaya halkaas. Iyo sida loola macaamilo, goorta ay dhaceen, iyo hababka ka hortagga ah ee loo isticmaalo si looga hortago khaladaadka. Waxaan kuu sheegi doonaa wax ku saabsan qalabka caawinta oo waxaan ku siin doonaa xiriiriye faa'iido leh.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waxaan isticmaalay xog-ururin tijaabo ah oo aan ku lahaa laba miis. Mid ka mid saxan oo leh xisaabaadka macaamiisha, kan kale oo leh wax kala iibsiga akoonnadan. Iyo inta jeer ee qaar waxaan cusbooneysiineynaa hadhaaga xisaabaadkaan.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Xogta hore ee saxanka: aad bay u yar tahay, 2 MB. Waqtiga jawaabta ee kaydka xogta iyo gaar ahaan calaamadda sidoo kale waa mid aad u wanaagsan. Iyo culeys aad u wanaagsan - 2 oo hawlgal ah ilbiriqsi kasta marka loo eego saxanka.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Warbixintan waxaan ku tusi doonaa garaafyo si aad si cad u fahanto waxa dhacaya. Had iyo jeer waxaa jiri doona 2 sawir oo garaafyo leh. Sawirka ugu horreeya waa waxa ka dhacaya guud ahaan server-ka.

Xaaladdan oo kale, waxaan aragnaa inaan dhab ahaantii haysanno calaamad yar. Tilmaanta ayaa ku yar 2 MB. Kani waa garaafka ugu horreeya ee bidixda.

Celceliska wakhtiga jawaabta ee server-ku sidoo kale waa mid deggan oo gaaban. Tani waa garaafka sare ee midig.

Garaafka bidix ee hoose wuxuu muujinayaa macaamilka ugu dheer. Waxaan aragnaa in wax kala iibsiga si degdeg ah loo dhammeeyo. Oo autovacuum halkan kuma shaqeeyo weli, sababtoo ah waxay ahayd tijaabo bilow ah. Way sii shaqayn doontaa, wayna anfacaysaa.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Sawirka labaad wuxuu had iyo jeer u heellan doonaa saxanka la tijaabinayo. Xaaladdan oo kale, waxaan si joogto ah u cusbooneysiineynaa xisaabaadka xisaabta macmiilka. Oo waxaan aragnaa in celceliska waqtiga jawaabta ee hawlgalka cusboonaysiinta uu aad u wanaagsan yahay, in ka yar hal millisek. Waxaan aragnaa in agabka processor-ka (tani waa garaafka midig ee sare) sidoo kale loo isticmaalo si siman oo aad u yar.

Garaafka midig ee hoose wuxuu muujinayaa inta hawlgalka iyo xusuusta diskooga aan ku dhex marno raadinta xariiqda aan rabno ka hor intaanan cusbooneysiin. Iyo tirada hawlgallada sida ku cad calaamaddu waa 2 ilbiriqsi kasta, sidaan sheegay bilowgii.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Imikana waxa ina soo maray masiibo. Sababaha qaar waxaa jira macaamil ganacsi oo la ilaaway. Sababaha badanaa waa dhammaan banal:

  • Mid ka mid ah kuwa ugu caansan waa in aan bilownay helitaanka adeegga dibadda ee code-ka codsiga. Adeeganina nagama jawaabo. Taasi waa, waxaan furnay macaamil ganacsi, isbeddel ku samee database-ka oo aan ka tagnay codsiga si aan u akhrino boostada ama adeeg kale oo ka mid ah kaabayaashayada, iyo sabab qaar ka mid ah wax jawaab ah noogama jawaabo. Kalfadhigeena waxa uu ku xayiran yahay xaalad aan la garanayn goorta la xalin doono.
  • Xaaladda labaad waa marka ka reeban yahay ku dhacay koodkayaga sababo jira awgood. Marka laga reebo ma aanaan socodsiin xiritaanka wax kala iibsiga. Waxa aanu ku soo gabagabaynay fadhi ku laadlaad ah oo wax kala iibsi furan.
  • Midka ugu dambeeyana sidoo kale waa kiis caadi ah oo caadi ah. Tani waa kood tayo hooseeya. Qaab-dhismeedyada qaarkood waxay furaan macaamil ganacsi. Way soo laadlaadsan tahay, waxaana laga yaabaa inaadan ku ogaan codsiga in aad haysato.

Aaway waxyaalahan oo kale?

Ilaa heer ay miisaskayada iyo tusmooyinkayadu bilaabaan inay si weyn u bararaan. Tani waa isla saamaynta bararka. Xog-ururinta, tani waxay ka dhigan tahay in wakhtiga jawaabta kaydku uu si aad ah u kordho oo culayska kaydka kaydka uu kordho. Natiijo ahaan, codsigayagu wuu dhibtoon doonaa. Sababtoo ah haddii aad ku bixisay 10 millise seconds koodka codsigaaga macluumaadka, 10 millise seconds caqli-galkaaga, markaa shaqadaadu waxay qaadatay 20 millise seconds si ay u dhamaystirto. Oo hadda xaaladdaadu waxay noqon doontaa mid murugo leh.

Oo aan aragno waxa dhaca. Garaafka bidix ee hoose wuxuu muujinayaa inaan leenahay macaamil ganacsi dheer. Haddaynu eegno garaafka bidix ee sare, waxaynu arkaynaa in cabbirka miiskeennu uu si lama filaan ah uga booday laba megabytes ilaa 300 megabytes. Isla mar ahaantaana, qadarka xogta ee shaxda isma bedelin, tusaale ahaan waxaa jira qadar aad u badan oo qashin ah.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Xaaladda guud ee ku saabsan celceliska wakhtiga jawaabta server-ka ayaa sidoo kale beddelay dhowr amar oo waaweyn. Taasi waa, dhammaan codsiyada server-ka waxay bilaabeen inay si buuxda u dhacaan. Isla mar ahaantaana, hababka gudaha ee Postgres ayaa lagu bilaabay qaabka autovacuum, kuwaas oo isku dayaya inay wax qabtaan oo cunaan kheyraadka.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Maxaa ka socda calaamadeena? Isku mid. Celceliska wakhtiga jawaabtayada marka loo eego calaamada ayaa kor u kacday dhawr amar oo waaweyn. Gaar ahaan marka la eego kheyraadka la isticmaalo, waxaan aragnaa in culeyska processor-ku uu aad u kordhay. Tani waa garaafka sare ee midig. Wayna korodhay sababtoo ah Processor-ku waa inuu kala soocaa xariiqyo badan oo aan faa'iido lahayn isagoo raadinaya kii loo baahnaa. Tani waa garaafka midig ee hoose. Natiijo ahaan, tirada wicitaannadayada ilbiriqsigiiba waxay bilaabeen inay si aad ah hoos ugu dhacaan, sababtoo ah xog-ururinta ma helin wakhti ay ku baarto tiro isku mid ah codsiyada.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waxaan u baahanahay inaan dib u soo noolaano. Waxaan galnaa internetka oo waxaan ogaanay in wax kala iibsiga dheer uu keeno dhibaatooyin. Waxaan helnaa oo dilnaa macaamilkan. Wax walbana caadi ayay nagu noqonayaan. Wax walba waxay u shaqeeyaan sidii la rabay.

Waan is dejinay, laakiin muddo ka dib waxaan bilownay inaan ogaano in codsigu aanu u shaqayn si la mid ah sidii ka hor xaaladda degdegga ah. Codsiyada weli si tartiib tartiib ah ayaa looga baaraandegay, oo si weyn u gaabis ah. Hal iyo badh ilaa laba jeer ayaa gaabis ah gaar ahaan tusaalahayga. Culayska ku jira server-ka ayaa sidoo kale ka sarreeya sidii uu ahaa shilka ka hor.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Iyo su'aasha: "Maxaa ku dhacaya saldhigga xilligan?" Oo xaaladda soo socota waxay ku dhacdaa saldhigga. Shaxda wax kala iibsiga waxaad arki kartaa inay istaagtay oo runtii ma jiraan wax kala beddelasho waqti dheer ah. Laakiin cabbirka calaamadda ayaa si ba'an u kordhay intii uu shilku socday. Tan iyo markaas ma ay yarayn. Celceliska wakhtiga saldhiga ayaa xasilay. Jawaabahana waxaad mooddaa in ay si waafi ah ku imanayaan xawaare aan aqbali karno. Autovacuum wuxuu noqday mid aad u firfircoon oo bilaabay inuu wax ku sameeyo calaamadda, sababtoo ah waxay u baahan tahay in la shaandheeyo xog badan.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Gaar ahaan, marka loo eego saxanka tijaabada ee xisaabaadka, halkaas oo aan ka beddelno dheelitirnaanta: wakhtiga jawaabta ee codsigu wuxuu u muuqdaa inuu ku soo noqday caadi. Laakiin dhab ahaantii waxay ka sarreysaa hal jeer iyo badh.

Oo culayska saaran Processor-ka, waxaanu aragnaa in culayska processor-ku aanu ku soo noqon qiimihii loo baahnaa ka hor shilka ka hor. Sababaha halkaasna waxay si sax ah ugu jiraan garaafka midig ee hoose. Waxaa la arki karaa in xaddi xusuus ah laga baarayo halkaas. Taasi waa, si loo helo xariiqda loo baahan yahay, waxaan ku dhuminnaa kheyraadka server-ka xogta iyadoo la kala saarayo xogta aan faa'iido lahayn. Tirada wax kala iibsiga ilbiriqsikiiba waa xasiloontay.

Guud ahaan way wanaagsan tahay, laakiin xaaladdu way ka sii xun tahay sidii ay ahayd. Nadiifi hoos u dhaca xogta macluumaadka ee ka dhashay codsigayaga ku shaqeeya xogtan.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Iyo si loo fahmo waxa halkaas ka socda, haddii aanad joogin warbixintii hore, hadda aynu helno aragti yar. Aragtida ku saabsan habka gudaha. Waa maxay sababta faaruqinta baabuurka maxaase qabtaa?

Macno kooban si loo fahmo. Mar ka mid ah waxaan haysanaa miis. Waxaan leenahay safafka miiska. Khadadkani waxay noqon karaan kuwo firfircoon, nool, iyo waxa aan hadda u baahanahay. Waxay ku calaamadsan yihiin cagaar sawirka. Oo waxaa jira khadad dhiman oo hore loo soo shaqeeyay, la cusboonaysiiyay, iyo waxyaabo cusub oo soo baxay. Oo waxaa lagu calaamadiyey in aanay xiiso u hayn kaydka xogta. Laakiin waxay ku jiraan miiska sababtoo ah qaabka Postgres.

Maxaad ugu baahan tahay faaruq baabuur? Mar marka qaarkood, autovacuum-ku wuu yimaadaa, galo xogta xogta oo uu weyddiiyo: "Fadlan i sii aqoonsiga macaamilka ugu da'da weyn ee hadda ka furan kaydka." Xogta xogta ayaa soo celisa aqoonsigan. Oo autovacuum, oo ku tiirsan, ayaa u kala sooca xariiqyada miiska. Oo haddii uu arko in qaar ka mid ah khadadka ay beddeleen macaamilo aad u da' weyn, markaas wuxuu xaq u leeyahay inuu calaamadiyo iyaga sida khadadka aan dib u isticmaali karno mustaqbalka annaga oo ku qoraya xog cusub halkaas. Tani waa nidaam asal ah.

Waqtigan xaadirka ah, waxaan sii wadeynaa inaan la shaqeyno xogta oo aan sii wadno inaan wax ka bedelno miiska. Iyo khadadkan, oo aan dib u isticmaali karno, waxaan ku qoreynaa xog cusub. Oo sidaas daraaddeed waxaan helnaa wareeg, i.e. mar kasta oo qaar ka mid ah khadadka duugga ah ee dhintay ay ka muuqdaan halkaas, halkii iyaga waxaan ku qornaa xarriiqyo cusub oo aan u baahanahay. Tanina waa xaalad caadi ah oo PostgreSQL ay ku shaqeyso.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Maxaa dhacay intii uu shilku socday? Sidee hawshani halkaas uga dhacday?

Waxaan lahayn calaamad xaalad ahaan, qaar nool, qaar khadadka dhintay. Faaruqkii baabuurka ayaa yimid. Waxa uu waydiiyay keydka macluumaadka waxa uu yahay wax kala iibsigeena ugu da'da weyn iyo waxa uu yahay id. Waxa aan helay idkan, kaas oo noqon kara saacado badan ka hor, laga yaabee toban daqiiqo ka hor. Waxay kuxirantahay inta culeyska aad ku hayso xogtaada. Wuxuuna raadiyay khadadka uu ku calaamadin karo sidii dib loo isticmaalay. Oo ma aanan helin khadadka noocaas ah miiskayaga.

Laakiin waqtigan waxaan sii wadeynaa inaan la shaqeyno miiska. Waxaan ku samaynaa wax ku jira, cusboonaysii, beddel xogta. Maxaa la gudboon kaydka xogta wakhtigan? Iyadu ma hayso doorasho aan ahayn inay ku darto khadadka cusub dhammaadka miiska jira. Oo sidaas daraaddeed cabbirka miiskayaga wuxuu bilaabaa inuu bararo.

Xaqiiqda, waxaan u baahanahay khadadka cagaaran si aan u shaqeyno. Laakiin inta lagu jiro dhibaatadan oo kale, waxaa soo baxday in boqolkiiba khadadka cagaaran ay aad u hooseeyaan dhammaan miiska oo dhan.

Oo markaan fulino su'aal, xog-ururintu waa inay dhex martaa dhammaan khadadka: casaan iyo cagaar, si loo helo xariiqda la rabo. Iyo saamaynta bararka miis leh xog aan faa'iido lahayn waxaa loo yaqaan "bloat", kaas oo sidoo kale cuna booska diskooga. Xusuusnow, waxay ahayd 2 MB, waxay noqotay 300 MB? Hadda u beddel megabyte oo aad u beddesho gigabytes waxaad si dhakhso ah u waayi doontaa dhammaan agabyada diskkaaga.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Cawaaqibkee ayaa naga iman kara?

  • Tusaalahayga, miiska iyo tusaha ayaa koray 150 jeer. Qaar ka mid ah macaamiisheena ayaa soo maray kiisas badan oo dilaa ah markii ay si fudud bilaabeen inay ka dhamaadaan booska diskooga.
  • Baaxadda miisaska lafteeda waligeed ma dhimmi doonto. Autovacuum xaaladaha qaarkood waxay gooyn kartaa dabada miiska haddii ay jiraan kaliya khadadka dhintay. Laakiin maadaama uu jiro wareeg joogto ah, hal xariiq oo cagaar ah ayaa laga yaabaa inuu qaboojiyo dhamaadka oo aan la cusboonaysiin, halka kuwa kale oo dhan lagu qori doono meel bilowga saxanka. Laakiin tani waa dhacdo aan macquul ahayn in miiskaaga laftiisa uu hoos u dhigi doono xajmiga, markaa waa inaadan rajo gelin.
  • Xog-ururintu waxay u baahan tahay inay kala soocdo tiro dhan oo khadadka aan faa'iido lahayn. Waxa aanu khasaarinay agabka diskooga, waxa aanu khasaarinay agabka processor-ka iyo korontada.
  • Oo tani waxay si toos ah u saameynaysaa codsigayaga, sababtoo ah haddii bilowgii aan ku isticmaalnay 10 millise seconds codsiga, 10 millise seconds koodkayaga, ka dibna inta lagu jiro shilku waxaan bilownay inaan ku bixinno hal ilbiriqsi codsiga iyo 10 millise seconds koodhka, i.e. amarka baaxadda waxqabadka arjiga ayaa hoos u dhacay. Oo markii shilka la xalliyey, waxaan bilownay inaan ku bixinno 20 millise seconds codsi, 10 millise seconds kood. Tani waxay ka dhigan tahay in aan weli hoos u dhacnay hal jeer iyo bar wax soo saarkii. Tan oo dhanna waxaa sabab u ah hal wax kala iibsi oo barafoobay, lagana yaabo in aan khaladkayaga galno.
  • Iyo su'aasha: "Sideen wax walba u soo celin karnaa?" si wax walba ay noogu fiicnaadaan oo codsiyadu u soo galaan sida ugu dhakhsaha badan shilka ka hor.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Ujeedadaas awgeed waxaa jira wareeg shaqo oo gaar ah oo la fuliyo.

Marka hore waxaan u baahanahay inaan helno miisaska dhibaatada leh ee bararsan. Waxaan fahamsanahay in miisaska qaarkood duubista ay aad u firfircoon tahay, kuwa kalena ay yar tahay. Taasna waxaan u isticmaalnaa kordhinta pgstattuple. Markaad rakibto kordhintan, waxaad qori kartaa su'aalo kaa caawin doona inaad hesho miisas aad u bararay.

Markaad hesho miisaskan, waxaad u baahan tahay inaad cadaadiso. Waxa horeba u jiray agab tan. Shirkaddayada waxaan isticmaalnaa saddex qalab. Midka koowaad waa VACUUM FULL ku dhex-yaalla. Waa naxariis daran, qallafsanaan iyo naxariis la'aan, laakiin mararka qaarkood aad ayuu waxtar u leeyahay. Pg_repack ΠΈ pgcompactable - Kuwanu waa utility-ga qolo saddexaad oo loogu talagalay isku-buufinta miisaska. Waxayna si taxadar leh ula dhaqmaan keydka macluumaadka.

Waxaa loo isticmaalaa iyadoo ku xiran waxa adiga kugu habboon. Laakiin tan waxaan kaaga sheegi doonaa ugu dambeyntii. Waxa ugu muhiimsan waa in ay jiraan saddex qalab. Waxaa jira fara badan oo laga dooran karo.

Ka dib markii aan saxno wax walba oo aan hubinno in wax walba ay wanaagsan yihiin, waa inaan ogaanaa sida looga hortago xaaladdan mustaqbalka:

  • Si fudud ayaa looga hortagi karaa. Waxaad u baahan tahay inaad la socoto muddada fadhiyada ee server-ka Masterka. Gaar ahaan kalfadhiyada khatarta ah ee ku jira xaalad ganacsi oo shaqo la'aan ah. Kuwani waa kuwa hadda furay macaamil ganacsi, wax sameeyay oo ka tagay, ama si fudud u laadlaadsan, ayaa ku lumay koodka.
  • Adiga, horumariyayaal ahaan, waa muhiim inaad tijaabiso koodkaaga marka xaaladahani soo baxaan. Ma adka in la sameeyo. Tani waxay noqon doontaa jeeg faa'iido leh. Waxaad ka fogaan doontaa tiro badan oo ah dhibaatooyinka "carruurta" ee la xidhiidha wax kala iibsiga dheer.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Jaantusyadan, waxaan rabay inaan ku tuso sida calaamadda iyo hab-dhaqanka kaydka xogta isu beddeleen ka dib markii aan dhex maray calaamadda VACUUM FULL kiiskan. Tani maaha wax-soo-saarka aniga.

Cabbirka miiska ayaa isla markiiba ku soo noqday xaaladdiisii ​​caadiga ahayd ee dhawr megabyte. Tani si weyn uma saameynin celceliska waqtiga jawaabta serverka.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Laakin gaar ahaan calaamada imtixaankeena, halkaas oo aanu ku cusboonaysiinay hadhaaga akoontiga, waxaanu aragnaa in celceliska wakhtiga jawaabta codsiga lagu cusboonaysiinayo xogta calaamada la dhimay ilaa heerar xaalad degdeg ah ka hor. Ilaha uu isticmaalo processor-ku si uu u dhamaystiro codsigan ayaa sidoo kale hoos ugu dhacay heerar shil ka hor. Jaantuska hoose ee midigna wuxuu muujinayaa in hadda aan helno xariiqda saxda ah ee aan isla markiiba u baahan nahay, iyada oo aan la marin xariiqyada khadadka dhintay ka hor inta aan miiska la cadaadin. Celcelis ahaan wakhtiga codsigu waxa uu ahaa qiyaastii isla heerkii. Laakiin halkan waxaan ku leeyahay, halkii, qalad qalabkayga.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waa halka ay ku dhammaatay sheekadii ugu horraysay. Waa tan ugu badan. Oo waxay ku dhacdaa qof kasta, iyadoon loo eegin khibradda macmiilka iyo sida ay u qalmaan barnaamij-fududyadu. Dhawaan ama hadhow tani way dhacdaa.

Sheekada labaad, taas oo aan u qaybin culayska iyo hagaajinta khayraadka server

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

  • Waxaan mar hore koray oo waxaan noqonnay niman dhab ah. Oo waxaan fahamsanahay inaan haysanno nuqul oo ay noo fiicnaan lahayd inaan isku dheelitirno culeyska: u qor Master-ka, oo ka akhri nuqulka. Caadi ahaan xaaladdani waxay soo baxdaa marka aan rabno inaan diyaarinno warbixinnada qaar ama ETL. Ganacsiguna aad buu ugu faraxsan yahay arrintan. Wuxuu runtii rabaa warbixino kala duwan oo leh falanqayn badan oo adag.
  • Warbixinadu waxay qaataan saacado badan, sababtoo ah falanqaynta adag laguma xisaabin karo millise seconds. Annagu, sida ragga geesiyaasha ah, ayaan u qornaa kood. Codsiga gelinta waxaan ku sameyneynaa duubista Master-ka, waxaana ku fulineynaa warbixinnada nuqulka.
  • Qaybinta rarka.
  • Wax walba waxay u shaqeeyaan si qumman. Waynu fiicanahay

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Maxayse u egtahay xaaladdan? Gaar ahaan garaafyadan, waxaan sidoo kale ku daray muddada macaamilka ee nuqulka muddada macaamilka. Dhammaan garaafyada kale waxay tixraacayaan kaliya server-ka Masterka.

Waqtigan xaadirka ah, guddiga warbixintaygu wuu koray. Way badan yihiin. Waxaan aragnaa in celceliska jawaabta server-ka uu yahay mid deggan. Waxaan ku aragnaa in nuqul ka mid ah aanu ku leenahay macaamil ganacsi dheer oo soconaya 2 saacadood. Waxaan aragnaa hawlgalka xasilloon ee autovacuum, kaas oo ka shaqeeya xadadka dhintay. Wax walbana waa nagu fiican yihiin.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Gaar ahaan, marka loo eego saxanka la tijaabiyay, waxaan sii wadeynaa inaan cusbooneysiinno hadhaaga akoonka halkaas. Waxaan sidoo kale haysanaa waqti jawaab celin deggan codsiyada, isticmaalka kheyraadka deggan. Wax walba waa nagu fiican yihiin.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Wax kastaa way fiican yihiin ilaa wakhtiga ay warbixinahani bilaabayaan inay dib u soo noqdaan sababtoo ah isku dhac iyo ku celcelin. Waxayna dib u ridaan waqtiyo joogto ah.

Waxaan galnaa khadka oo aan bilownay inaan akhrino sababta ay tani u dhacayso. Xalna waanu helnaa.

Xalka ugu horreeya waa in la kordhiyo daahitaanka taranka. Waxaan ognahay in warbixintayadu ay socoto 3 saacadood. Dib u dhigista ku celcelinta waxaanu dejinay 3 saacadood. Wax walba waanu bilaabaynaa, laakiin wali waxaan sii wadnaa in aan dhib ku qabno warbixinada mararka qaarkood la tirtiro.

Waxaan rabnaa in wax walba ay noqdaan kuwo qumman. Waxaan sii fuuleynaa. Oo waxaan ka helnay goob fiican internetka - hot_standby_feedback. Aan shidno. Hot_standby_feedback waxay noo ogolaanaysaa inaan dib u celino autovacuum-ka Masterka. Markaa, waxaan si buuxda uga takhalusnaa isku dhacyada soo noqnoqda. Wax walbana si fiican ayay noogu shaqeeyaan warbixinnada.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Maxaase ka dhacaya server-ka Master-ka waqtigan? Waxaana dhibaato guud nagu haysa server-ka Master-ka. Hadda waxaan aragnaa garaafyada marka aan labadan habayn ee la furo. Oo waxaan aragnaa in fadhiga on our nuqul ka bartey bilaabay inuu saameyn ku yeesho xaaladda server-ka Master-ka. Saamayn ayay ku leedahay sababtoo ah waxay hakisay autovacuum, kaas oo nadiifiya xadadka dhintay. Cabbirka miiskayadu mar kale ayuu cirka isku shareeray. Celceliska wakhtiga fulinta su'aasha ee dhammaan xogta xogta ayaa sidoo kale cirka isku shareertay. Gawaarida ayaa yara adkeeyay.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Gaar ahaan, laga soo bilaabo saxankeena, waxaan ku aragnaa in cusboonaysiinta xogta ay sidoo kale u booddo cirka. Isticmaalka CPU si la mid ah aad buu u kordhay. Waxaan mar kale maraynaa tiro badan oo khadadka dhintay oo aan waxtar lahayn. Iyo wakhtiga jawaabta calaamadan iyo tirada wax kala iibsiga ayaa hoos u dhacay.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Sidee bay u ekaan doontaa haddaynaan garanayn wixii aan hore uga hadlayay?

  • Waxaan bilownaa raadinta dhibaatooyin. Haddii aan la kulanno dhibaatooyin qaybta hore, waxaan ognahay in tani ay sabab u tahay macaamil ganacsi oo dheer oo u tag Masterka. Dhib ayaa naga haysata Masterka. Sausages isaga. Wuu kululaadaa, Celceliska Loadkiisu waa boqol.
  • Codsiyada waxaa jira kuwo gaabis ah, laakiin ma aragno wax macaamil ganacsi oo dheer halkaas. Annagu ma fahmin waxa jira. Ma fahmin meel aan eegno.
  • Waxaan hubineynaa qalabka server-ka. Waxaa laga yaabaa in duulaankayagii burburay. Waxaa laga yaabaa in ushii xusuustayadu gubatay. Haa, wax walba way dhici karaan. Laakiin maya, adeegayaashu waa cusub yihiin, wax walba si fiican ayey u shaqeeyaan.
  • Qof kastaa wuu socdaa: maamulayaasha, horumariyayaal iyo agaasime. Wax caawiya ma jiraan.
  • Mar wax walbana waxay si lama filaan ah u bilaabaan inay is saxaan.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waqtigan xaadirka ah, codsiga ku saabsan nuqulkayaga waa la habeeyey oo waa laga tagay. Waxaan helnay warbixinta. Ganacsigu wali wuu faraxsan yahay. Sida aad arki karto, calaamadayadu mar kale way kortay mana hoos u dhacayso. Shaxda garaafyada leh, waxaan kaga tagay qayb ka mid ah macaamil ganacsiyeedkan dheer ee nuqul ka mid ah si aad u qiyaasto inta ay qaadanayso ilaa xaaladdu ay xasilinayso.

Fadhigii wuu dhamaaday. Oo kaliya wakhti ka dib server-ka ayaa u imanaya wax ka badan ama ka yar. Iyo celceliska wakhtiga jawaab celinta codsiyada server-ka Master-ka ayaa caadi ku soo noqda. Sababtoo ah, ugu dambeyntii, autovacuum wuxuu leeyahay fursad uu ku nadiifiyo oo uu calaamadiyo khadadkan dhintay. Wuxuuna bilaabay inuu shaqadiisa qabto. Iyo sida ugu dhakhsaha badan ee uu u sameeyo, si dhakhso ah ayaanu u hagaajin doonaa.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Marka loo eego kaniiniga la tijaabiyay, halkaasoo aan ku cusboonaysiinno hadhaaga akoonnada, waxaanu aragnaa sawir la mid ah. Celceliska wakhtiga cusboonaysiinta akoontiga ayaa sidoo kale si tartiib tartiib ah caadi u noqonaya. Ilaha uu isticmaalo processor-ku sidoo kale waa la dhimay. Iyo tirada wax kala iibsiga ilbiriqsikiiba sidii caadiga ahayd. Laakiin mar kale waxaan ku soo laabanay sidii hore, ma ahan sidii aan ahaan jirnay shilka ka hor.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Si kastaba ha noqotee, waxaan helnaa hoos u dhac ku yimaada waxqabadka, sida kiiskii ugu horreeyay, hal iyo badh ilaa laba jeer, iyo mararka qaarkood in ka badan.

Waxaan u muuqanaa inaan sameynay wax walba oo sax ah. U qaybi rarka. Qalabku shaqo la'aan maaha. Codsiyada waxaan u qaybinay sida ay maskaxdeenu tahay, laakiin wali wax waliba si xun ayay u noqdeen.

  • Ma awood siin jawaab celin-sugitaan_kuul? Haa, laguma talinayo in la shido iyada oo aysan jirin sababo xooggan oo gaar ah. Sababtoo ah qalloocani wuxuu si toos ah u saameeyaa server-ka Master-ka wuxuuna hakiyaa hawlgalka autovacuum ee halkaas. Adigoo awood u siinaya qaar ka mid ah nuqul ka mid ah oo aad illowdo, waxaad dili kartaa Master-ka oo aad dhibaato weyn kala kulmi kartaa codsiga.
  • Kordhi max_diyaarinta_streaming_daahitaanka? Haa, warbixinada tani waa run. Haddii aad haysato warbixin saddex saacadood ah oo aadan rabin inay ku dhacdo isku dhacyada soo noqnoqda, ka dibna si fudud u kordhi daahitaanka. Warbixinta muddada dheer waligeed uma baahna xogta hadda soo gashay kaydka xogta. Haddii aad haysato saddex saacadood, markaa waxaad ku shaqaynaysaa wakhti xog duug ah. Adiga, haddii ay dib u dhacaan saddex saacadood ama dib u dhac lix saacadood ah waxba ma soo kordhinayso, laakiin waxaad heli doontaa warbixinno joogto ah oo aan wax dhib ah kala kulmi doonin inay dhacaan.
  • Dabiici ahaan, waxaad u baahan tahay inaad xakamayso fadhiyada dheer ee nuqul ka mid ah, gaar ahaan haddii aad go'aansato inaad awood u siiso hot_standby_feedback nuqul ka mid ah. Sababtoo ah wax walba way dhici karaan. nuqulkan waxaan siinay horumariyaha si uu u tijaabiyo codsiyada. Cod waalan buu qoray. Wuu bilaabay oo u baxay inuu shaaha cabbo, waxaanu helnay Master-kii. Ama waxaa laga yaabaa in aan ku dhejinno codsiga khaldan. Xaaladuhu waa kala duwan yihiin. Fadhiyada ku saabsan nuqullada waa in si taxadar leh loola socdo sida Master-ka.
  • Oo haddii aad hayso su'aalo degdeg ah oo dheer oo ku saabsan nuqullada, ka dibna kiiskan waxa fiican in la kala qaybiyo si loo qaybiyo culeyska. Kani waa isku xidhka streaming_delay. Kuwa degdega ah, hay hal nuqul oo leh dib u dhac yar oo ku celcelin ah. Codsiyada ka warbixinta muddada dheer, hay nuqul ka dhigi kara 6 saacadood ama maalin. Tani waa xaalad gebi ahaanba caadi ah.

Waxaan u baabi'innaa cawaaqibka si la mid ah:

  • Waxaan helnaa miisas bararsan.
  • Oo waxaanu ku cadaadinaynaa qalabka ugu habboon ee nagu habboon.

Sheekadii labaad waxay ku dhammaatay halkan. Aan u gudubno sheekada saddexaad.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Sidoo kale aad noogu badan oo aan ku jirno tahriibka.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

  • Alaab kasta oo software ah ayaa koraysa. Shuruudaha looga baahan yahay ayaa isbedelaya. Si kastaba ha ahaatee, waxaan rabnaa inaan horumarino. Oo waxay dhacdaa in aan u baahanahay in aan cusboonaysiino xogta miiska ku jirta, taas oo ah in aan socodsiino cusbooneysiinta marka la eego socdaalkayaga shaqada cusub ee aan soo bandhigayno qayb ka mid ah horumarkayaga.
  • Qaabkii xogta hore maaha mid lagu qanci karo. Aynu nidhaahno hadda aynu u leexanno miiska labaad, halkaas oo aan ku leeyahay wax kala iibsiga akoonnadan. Aynu sheegno inay ku jireen rubles, waxaanan go'aansanay inaan kordhinno saxnaanta oo aan ku sameyno kopecks. Oo tan waxaan u baahannahay inaan sameyno cusbooneysiin: ku dhufo goobta qiimaha macaamilka boqol.
  • Adduunyada maanta, waxaan isticmaalnaa aaladaha xakameynta nooca macluumaadka ee otomaatiga ah. Aan nidhaahno Liquibase. Waxaanu socdaalkayaga ku diiwaangelinaynaa halkaas. Waxaan ku tijaabinaynaa saldhiggayaga tijaabada. Wax walba waa fiican yihiin. Cusboonaysiinta ayaa socota. Waxay xannibaysaa shaqada in muddo ah, laakiin waxaan helnaa xog cusub. Oo waxaan bilaabi karnaa shaqeyn cusub tan. Wax walba waa la tijaabiyay oo la hubiyay. Wax walba waa la xaqiijiyay.
  • Waxa aanu fulinay hawlo qorshaysan oo tahriib ah.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Waa kan tahriibka oo la socda wararka hortiinna lagu soo bandhigay. Maadaama kuwani yihiin macaamilka akoonkayga, saxanku wuxuu ahaa 15 GB. Iyo tan iyo markii aan cusbooneysiinay khad kasta, waxaan labanlaabnay cabbirka miiska iyadoo la cusbooneysiiyay, sababtoo ah waxaan dib u qornay xariiq kasta.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Intii tahriibka lagu jiray, waxba kuma aannu samayn karrin saxankan, sababtoo ah dhammaan codsiyadii loo soo jeediyay saf bay ku jireen oo waa la sugay ilaa laga dhammeeyo warkan cusub. Laakiin halkan waxaan rabaa inaan ku soo jeediyo dareenkaaga tirooyinka ku yaal dhidibka toosan. Taasi waa, waxaan haysanaa celcelis ahaan codsi ka hor socdaalka qiyaastii 5 millise seconds iyo culeyska processor-ka, tirada hawlgallada xannibaadda ee akhrinta xusuusta diskku waxay ka yar tahay 7,5.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Tahriibkii waanu wadnay oo dhibaato ayaanu mar kale kala kulmaynay.

Tahriibku wuxuu ahaa mid guul leh, laakiin:

  • Shaqadii hore waxay hadda qaadanaysaa waqti dheer in la dhammaystiro.
  • Miiska ayaa koray xajmiga mar kale.
  • Culayska server-ka ayaa haddana noqday mid ka weyn sidii hore.
  • Iyo, dabcan, waxaan wali ku mashquulsan nahay shaqeynta si fiican u shaqeysay, wax yar ayaan hagaajinnay.

Oo tani mar kale waa barar, taas oo mar kale baabi'isa nolosheena.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Halkan waxaan ku muujinayaa in miiska, sida labadii kiis ee hore, uusan ku soo laaban doonin cabbirkiisii ​​hore. Celceliska culeyska server-ka wuxuu u muuqdaa mid ku filan.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Oo haddii aan u leexanno miiska xisaabaadka, waxaan arki doonaa in celceliska wakhtiga codsiga uu labanlaabmay miiskan. Culayska saaran processor-ka iyo tirada xariiqyada lagu kala soocay xusuusta ayaa ka booday 7,5, laakiin wuu ka hooseeyay. Oo waxay ku boodday 2 jeer marka la eego processor-yada, 1,5 jeer marka la eego hawlaha xannibaadda, i.e. waxaan helnay hoos u dhac ku yimid waxqabadka server-ka. Iyo natiijada - hoos u dhaca waxqabadka codsigayaga. Isla mar ahaantaana, tirada wicitaanadu waxay ku hadhay isku heer.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Iyo waxa ugu weyn ee halkan waa in la fahmo sida loo sameeyo socdaalka noocaas ah si sax ah. Waxayna u baahan yihiin in la sameeyo. Waxaan u samaynaa socdaalkan si quruxsan si joogto ah.

  • Socdaalkan waaweyni si toos ah uma dhacaan. Waa inay had iyo jeer la xakameeyaan.
  • Kormeerka qof aqoon leh ayaa loo baahan yahay. Haddii aad kooxdaada ku leedahay DBA, markaa u ogolow DBA inay sameyso. Waa shaqadiisa. Haddii kale, markaa qofka ugu khibradda badan ha sameeyo, yaa yaqaan sida loogu shaqeeyo xogta macluumaadka.
  • Nidaam cusub oo xog-ururin ah, xitaa haddii aan cusbooneysiinno hal tiir, waxaan had iyo jeer u diyaargarownaa marxalado, tusaale ahaan ka hor inta aan nooca cusub ee arjiga la bixin:
  • Goobo cusub ayaa lagu daray kuwaas oo aan ku duubi doono xogta la cusboonaysiiyay.
  • Waxaan ka soo wareejinaa xogta goobtii hore ilaa goobta cusub qaybo yaryar. Maxaynu tan u samaynaynaa? Marka hore, waxaan mar walba xakameynaa habka geeddi-socodkan. Waxa aynu ognahay in aanu hore u wareejinay intaas oo dufcadood oo ay in badan naga hadheen.
  • Saamaynta labaad ee wanaagsani waa in inta u dhaxaysa qayb kasta oo noocan oo kale ah aan xirno macaamilka, fur mid cusub, tani waxay u oggolaaneysaa autovacuum inuu u shaqeeyo si waafaqsan saxanka, calaamadee khadadka dhintay si dib loogu isticmaalo.
  • Khadadka soo bixi doona inta codsigu socdo (wali waxaan haynaa codsigii hore), waxaan ku darnaa kiciye qoraya qiyam cusub goobo cusub. Xaaladeena, tani waa ku dhufashada boqol ee qiimihii hore.
  • Haddii aan si buuxda u madax adaygno oo rabno goob isku mid ah, ka dib marka la dhammeeyo dhammaan socdaalka iyo ka hor inta aan la soo saarin nooc cusub oo arjiga, waxaan si fudud u magacownaa beeraha. Kuwii hore waxaa loo bixiyay magacyo la alifay, beerihii cusbaana waxaa loo bixiyay kuwii hore.
  • Oo kaliya markaas ka dib waxaan bilaabay version cusub ee codsiga.

Isla mar ahaantaana ma heli doono barar oo kuma dhibtoon doono marka la eego waxqabadka.

Waa halka ay ku dhammaatay sheekada saddexaad.

Khaladaadka caadiga ah ee codsiyada u horseeda barar 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

Oo hadda wax yar oo faahfaahsan oo ku saabsan qalabka aan ku sheegay sheekadii ugu horeysay.

Kahor intaadan raadin barar, waa inaad rakibtaa kordhinta pgstattuple.

Si aanad u soo bixin su'aalo, waxaanu hore ugu qornay su'aalahan shaqadayada. Waad isticmaali kartaa. Waxaa jira laba codsi halkan.

  • Midka ugu horreeya wuxuu qaadanayaa waqti dheer inuu shaqeeyo, laakiin wuxuu ku tusi doonaa qiyamka bararka saxda ah ee miiska.
  • Midka labaad si dhakhso ah ayuu u shaqeeyaa wuxuuna aad waxtar u leeyahay markaad u baahan tahay inaad si dhakhso ah u qiimeyso haddii uu jiro barar ama haddii kale sida ku cad miiska. Oo waa inaad sidoo kale fahamtaa in bararku had iyo jeer ku jiro miiska Postgres. Tani waa muuqaal ka mid ah moodelkeeda MVCC.
  • Iyo 20% barar ayaa caadi u ah miisaska kiisaska intooda badan. Taasi waa, waa inaadan walwalin oo aad cadaadisin miiskan.

Waxaan ogaanay sida loo garto miisaska ay ku barareen xog aan faa'iido lahayn.

Hadda oo ku saabsan sida loo hagaajiyo bararka:

  • Haddii aan haysano kiniin yar iyo saxanno wanaagsan, taas oo ah, kiniin ilaa gigabyte ah, waa suurtogal in la isticmaalo VACUUM FULL. Waxa uu miiska kaaga qaadan doonaa quful gaar ah dhawr ilbiriqsi oo waa hagaag, laakiin si degdeg ah oo adag ayuu wax walba u samayn doonaa. Muxuu qabtaa VACUUM FULL? Waxay qaadataa quful gaar ah miiska dushiisa oo waxay dib uga qortaa safafka tooska ah ee miisaska hore una gelisaa miiska cusub. Aakhirkana wuu beddelaa. Waxay tirtirtaa faylal hore oo ay ku beddeshaa kuwa hore oo cusub. Laakiin inta ay ku jirto shaqadeeda, waxay qaadataa quful gaar ah miiska. Taas macneheedu waxa weeye inaadan waxba ku samayn karin shaxdan: ha u qorin, waxna ku akhriyin, waxna ha beddelin. Iyo VACUUM FULL waxay u baahan tahay meel saxan oo dheeri ah si loo qoro xogta.
  • Qalabka xiga pg_repack. Mabda 'ahaan, waxay aad ula mid tahay VACUUM FULL, sababtoo ah waxay sidoo kale dib u qortaa xogta faylal hore oo cusub waxayna ku beddeshaa miiska. Laakiin isla mar ahaantaana, ma qaadato quful gaar ah miiska dushiisa bilowga shaqadeeda, laakiin waxay qaadataa oo keliya wakhtiga ay hore u haysato xog diyaar ah si ay u bedesho faylasha. Shuruudaha kheyraadka diskka waxay la mid yihiin kuwa VACUUM FULL. Waxaad u baahan tahay meel saxan oo dheeri ah, tanina mararka qaarkood waa muhiim haddii aad haysato miisaska terabyte. Waana mid gaajeysan sababtoo ah waxay si firfircoon ula shaqeysaa I/O.
  • Utility saddexaad waa pgcompactable. Aad bay uga taxaddaraan kheyraadka sababtoo ah waxay u shaqeysaa si waafaqsan mabaadi'da kala duwan. Fikradda ugu weyn ee pgcompacttable waa in ay u guurto dhammaan safafka tooska ah bilowga miiska iyadoo la adeegsanayo cusbooneysiinta miiska. Ka dibna waxay ku socotaa vacuum miiskan, sababtoo ah waxaan ognahay in aan haysano safafka nool bilowga iyo safafka dhintay dhamaadka. vacuum lafteedu waxay gooysaa dabadan, i.e. uma baahna meel disk badan oo dheeraad ah. Isla mar ahaantaana, waxaa weli lagu tuujin karaa dhinaca kheyraadka.

Wax kasta oo qalab leh.

Khaladaadka caadiga ah ee codsiyada u horseeda barar postgresql. Andrey Salnikov

Haddii aad u aragto mawduuca calool-xanuunku mid xiiso leh marka la eego u sii dhex-gelidda, halkan waxaa ah xiriiriyeyaal faa'iido leh:

Waxaan isku dayay in badan si aan u tuso sheeko naxdin leh oo loogu talagalay horumarinta, sababtoo ah waxay yihiin macaamiisheena tooska ah ee xogta macluumaadka waana inay fahmaan waxa iyo ficillada u horseedaya. Waxaan rajaynayaa in aan ku guulaystay. Waad ku mahadsan tahay dareenkaaga!

Su'aalahaada

Waad ku mahadsan tahay warbixinta! Waxaad ka hadashay sida aad ku garan karto dhibaatooyinka. Sidee looga digayaa? Taasi waa, waxaan la kulmay xaalad codsiyadu ay laalaadeen kaliya sababtoo ah waxay heleen adeegyo dibadeed. Kuwani waxay ahaayeen qaar duurjoog ah oo ku biiray. Waxa jiray codsiyo yaryar oo aan waxyeello lahayn oo hal maalin ku dheggan, ka dibna bilaabay samaynta wax aan macno lahayn. Taasi waa, aad ula mid ah waxa aad ku qeexday. Sida tan loo raad raaco? Fadhiiso oo si joogto ah u daawo codsigee xayiran? Sidee taas looga hortagi karaa?

Xaaladdan oo kale, tani waa hawl u taal maamulayaasha shirkaddaada, maahan qasab DBA.

waxaan ahay maamule

PostgreSQL waxay leedahay aragti loo yaqaan pg_stat_activity oo tusa su'aalo liidata. Oo waxaad arki kartaa inta ay le'eg tahay halkaas.

Ma inaan soo galo oo aan eego 5tii daqiqiba mar?

Samee cron oo hubi. Haddii aad hayso codsi wakhti dheer ah, qor warqad waana taas. Taasi waa, uma baahnid inaad ku eegto indhahaaga, si toos ah ayaa loo samayn karaa. Waxaad heli doontaa warqad, waxaad ka jawaabi doontaa. Ama si toos ah ayaad u toogan kartaa

Ma jiraan sababo cad oo ay tani u dhacdo?

Qaar baan taxay. Tusaalayaal kale oo kakan Oo waxaa jiri kara wada hadal muddo dheer.

Waad ku mahadsan tahay warbixinta! Waxaan rabay inaan caddeeyo wax ku saabsan utility pg_repack. Haddii aysan samayn quful gaar ah, markaas...

Waxay samaysaa quful gaar ah.

... markaas waxaa suuragal ah in aan lumin karo xogta. Miyaanay ahayn in codsigaygu aanu waxba duubin inta lagu jiro wakhtigan?

Maya, waxay si habsami leh ula shaqaysaa miiska, i.e. pg_repack marka hore waxa ay wareejisaa dhammaan khadadka tooska ah ee jira. Dabcan, nooc ka mid ah gelitaanka miiska ayaa halkaas ka dhaca. Waxa uu iska tuurayaa dabadan cirifka ah.

Taasi waa, wuxuu dhab ahaantii sameeyaa dhamaadka?

Dhammaadka, wuxuu qaataa quful gaar ah si uu u beddelo faylashan.

Miyuu ka dheerayn doonaa VACUUM FULL?

VACUUM FULL, isla markii ay bilaabatay, isla markiiba waxay qaadatay quful gaar ah. Ilaa uu wax walba sameeyo, ma dayn doono iyada. Oo pg_repack waxay qaadataa quful gaar ah oo keliya waqtiga faylka la beddelayo. Waqtigan xaadirka ah ma qori doontid halkaas, laakiin xogta ma lumin doonto, wax walbaa way fiicnaan doonaan.

Hello! Waxaad ka hadashay shaqada faaruqinta baabuurta. Waxaa jiray garaaf leh unug wax lagu duubo oo casaan, huruud iyo cagaar ah. Taasi waa, kuwa jaalaha ah - wuxuu ku calaamadeeyay inay yihiin kuwo la tirtiray. Sidaas darteed, wax cusub ayaa lagu qori karaa iyaga?

Haa Postgres ma tirtirto khadadka. Waxa uu leeyahay sida gaarka ah. Haddii aan cusbooneysiinnay xariiq, waxaan calaamadeynay kii hore mid la tirtiray. Aqoonsiga wax kala iibsiga ee beddelay khadkan ayaa ka muuqda halkaas, waxaanan qoraynaa khad cusub. Waxaanan leenahay kulamo laga yaabo inay akhriyaan. Marna aad bay u duqoobeen. Iyo nuxurka sida autovacuum u shaqeeyo waa in ay soo marto khadadkan oo ay ku calaamadiso kuwo aan loo baahnayn. Oo waxaad ku qori kartaa xogta halkaas.

waan fahmay Laakiin taasi maaha waxa su'aashu ku saabsan tahay. Maan dhamayn. Aynu ka soo qaadno in aynu miiska leenahay. Waxay leedahay beero cabbirka doorsooma. Haddaan isku dayo inaan geliyo shay cusub, waxa laga yaabaa inaanay ku haboonayn unugii hore.

Maya, si kastaba ha ahaatee khadka oo dhan ayaa lagu cusboonaysiiyay halkaas. Postgres waxay leedahay laba nooc oo kaydinta xogta. Waxay ka doorataa nooca xogta. Waxaa jira xog si toos ah ugu kaydsan miiska, sidoo kale waxaa jira xog tos ah. Kuwani waa tiro badan oo xog ah: qoraal, json. Waxay ku kaydsan yihiin taargooyin gaar ah. Sida laga soo xigtay kiniiniyadan, sheeko isku mid ah oo leh barar ayaa dhacda, i.e. wax walba waa isku mid. Si gooni ah ayaa loo taxay.

Waad ku mahadsan tahay warbixinta! Ma la aqbali karaa in la isticmaalo su'aalaha waqti-dhaafka si loo xaddido muddada?

Aad loo aqbali karo Meel walba ayaan tan ku isticmaalnaa. Maaddaama aynaan haysan adeegyadayada, waxaanu bixinaa taageero fog, waxaanu leenahay macaamiil aad u kala duwan. Qof walbana wuu ku qanacsan yahay tan. Taasi waa, waxaan haynaa shaqooyin cron ah oo hubinaya. Muddada kalfadhiyada waxaa si fudud loogu heshiiyaa macmiilka, ka hor intaanan ku heshiin. Waxay noqon kartaa hal daqiiqo, waxay noqon kartaa 10 daqiiqo. Waxay ku xiran tahay culeyska saldhigga iyo ujeeddadiisa. Laakiin dhammaanteen waxaan isticmaalnaa pg_stat_activity.

Waad ku mahadsan tahay warbixinta! Waxaan isku dayayaa inaan ku dabaqo warbixintaada codsiyadayda. Oo waxay u muuqataa in aan bilowno wax kala iibsiga meel kasta, oo si cad u dhamaystirno meel kasta. Haddii ay jiraan wax ka reeban, markaas dib-u-soo-noqoshada weli way dhacdaa. Kadibna waxaan bilaabay inaan fikiro. Ka dib oo dhan, wax kala iibsiga waxa laga yaabaa in aanu si cad u bilaaban. Tani waxay u badan tahay inay tilmaan u tahay gabadha. Haddii aan cusboonaysiiyo rikoodh, wax kala beddelashadu ma ka bilaabmi doontaa PostgreSQL oo dhammayn doonaa keliya marka xidhiidhku go'o?

Haddii aad hadda ka hadlayso heerka codsiga, markaas waxay kuxirantahay darawalka aad isticmaalayso, ORM-ka la isticmaalayo. Waxaa jira habayn badan oo halkaas ku yaal. Haddii aad si otomaatig ah u gasho, markaas wax kala iibsigu halkaas ayuu ka bilaabmaa oo isla markiiba xidhaa.

Taasi waa, waxay xireysaa isla markiiba ka dib cusbooneysiinta?

Waxay kuxirantahay dejinta Hal goob ayaan magacaabay. Tani waa auto ballan. Waa wax caadi ah. Haddii la awoodo, markaas macaamilku wuu furmay oo wuu xidhay. Ilaa aad si cad u tidhaahdo "bilow wax kala iibsiga" iyo "dhamaadka wax kala iibsiga", laakiin si fudud u bilaabay codsi fadhiga.

Hello! Waad ku mahadsan tahay warbixinta! Aynu ka soo qaadno in aan haysano kayd kayd ah oo barar iyo barar leh ka dibna meesha bannaan ee server-ka ayaa ka dhammaanaysa. Ma jiraan wax qalab ah oo lagu hagaajinayo xaaladdan?

Booska server-ka wuxuu u baahan yahay in si sax ah loola socdo.

Tusaale ahaan, DBA waxay tagtay shaah, waxay joogtay goob dalxiis, iwm.

Marka nidaamka faylka la abuuro, ugu yaraan nooc ka mid ah meel kayd ah ayaa la abuuraa halkaasoo aan xogta lagu qorin.

Maxaa dhacaya haddii ay gebi ahaanba eber ka hooseyso?

Halkaa waxaa loogu yeeraa booska kaydsan, ie waa la xorayn karaa waxayna ku xiran tahay inta la abuuray, waxaad heleysaa boos bilaash ah. Sida caadiga ah ma garanayo inta ay tahay. Iyo xaalad kale, keen saxanadaha si aad u heshid meel aad ku sameyso qalliin dib u dhis ah. Waxaad tirtiri kartaa qaar ka mid ah miiska laguu dammaanad qaaday inaadan u baahnayn.

Ma jiraan qalab kale?

Had iyo jeer waa gacan gacan Waxayna maxalli ahaan caddaatay waxa ugu wanaagsan in halkaas lagu sameeyo, sababtoo ah xogta qaar ayaa muhiim ah, qaarna waa kuwo aan muhiim ahayn. Iyo database kasta iyo codsiga la shaqeeya, waxay ku xiran tahay ganacsiga. Mar walba waxaa lagu go'aamiyaa gudaha.

Waad ku mahadsan tahay warbixinta! Waxaan qabaa laba su'aalood. Marka hore, waxaad muujisay sawirro muujinaya in marka wax kala iibsigu xayiran yahay, labadaba cabbirka miiska iyo cabbirka tusmada ayaa koraan. Iyo warbixin dheeraad ah oo ku saabsan waxa jiray tiro badan oo utility ah oo baakadaha kiniinka ah. Ka warran tusmada?

Iyagana way xidhxidheen.

Laakiin faakuumku ma saameeyo tusaha?

Qaarkood waxay ku shaqeeyaan index. Tusaale ahaan, pg_rapack, pgcompacttable. Faakuumku wuxuu dib u abuuraa tusmooyinka oo saameeya iyaga. Iyada oo VACUUM FULL ah fikradda waa in wax walba la beddelo, tusaale ahaan waxay la shaqeysaa qof walba.

Iyo su'aasha labaad. Ma fahmin sababta warbixinaha ku saabsan nuqul ka mid ah ay aad ugu tiirsan yihiin soo-celinta lafteeda. Waxa ay iila muuqatay in warbixinnada la akhriyo, oo ay ku celcelintu tahay wax la qoro.

Maxaa sababa isku dhaca taranka? Waxaan leenahay Master ah kaas oo habraacyadu dhacaan. Waxaan haynaa faaruq baabuur oo socda. Muxuu dhab ahaantii sameeyaa autovacuum? Sadar duug ah ayuu jarayaa. Haddii wakhtigan aan haysano codsi ku saabsan nuqulka akhriya sadarradan hore, iyo Master-ka xaalad ayaa ku dhacda in autovacuum uu calaamadeeyay khadadkan sida suurtogalka ah ee wax lagu qoro, ka dibna waanu ku qornay. Oo waxaan helnay xirmo xog ah, marka aan u baahanahay inaan dib u qorno khadadka codsigu u baahan yahay nuqulka, habka nuqulku wuxuu sugi doonaa wakhtiga kaa dhamaanaya ee aad habaysay. Kadibna PostgreSQL ayaa go'aamin doonta waxa ka muhiimsan. Ku-noqoshada ayaa isaga uga muhiimsan codsiga, wuuna toogan doonaa codsiga si uu isbeddeladan ugu sameeyo nuqulka.

Andrey, su'aal baan qabaa. Garaafyadan cajiibka ah ee aad muujisay intii lagu jiray bandhigga, kuwani miyay ka dhasheen shaqada nooc ka mid ah isticmaalkaaga? Sidee loo sameeyay garaafyada?

Kani waa adeeg okmeter.

Kani ma alaab ganacsi baa?

Haa Tani waa badeecad ganacsi.

Source: www.habr.com

Add a comment