Caafimaadka tusmooyinka ku jira PostgreSQL iyada oo loo marayo indhaha horumariyaha Java

Hello.

Magacaygu waa Vanya waxaana ahay horumariye Java ah. Waxay dhacdaa in aan wax badan la shaqeeyo PostgreSQL - dejinta xogta, hagaajinta qaab dhismeedka, waxqabadka, iyo ciyaarista wax yar DBA maalmaha fasaxa ah.

Dhowaan waxaan ku hagaajiyay dhowr xog ururin oo ku jira adeegyadeena yaryar waxaanan qoray maktabad java ah pg-index-caafimaadka, taas oo ka dhigaysa shaqadan mid sahlan, waxay i badbaadisaa waqti waxayna iga caawisaa inaan ka fogaado khaladaadka caanka ah ee ay sameeyaan horumariyayaashu. Waa maktabadda aan maanta ka hadli doono.

Caafimaadka tusmooyinka ku jira PostgreSQL iyada oo loo marayo indhaha horumariyaha Java

Afeef

Nooca ugu weyn ee PostgreSQL ee aan la shaqeeyo waa 10. Dhammaan weydiimaha SQL ee aan isticmaalo waxa lagu tijaabiyay nooca 11. Nooca ugu yar ee la taageeray waa 9.6.

prehistory

Waxaas oo dhami waxay ku bilowdeen ku dhawaad ​​hal sano ka hor xaalad iga yaabisay: abuurista tartan ee tusmada buluugga ah waxay ku dhammaatay qalad. Tusmada lafteeda, sida caadiga ah, waxay ku hadhay kaydka xogta xaalad aan ansax ahayn. Falanqaynta log waxay muujisay yaraan temp_file_limit. Oo waan sii soconaa... Qoto dheer oo qoto dheer, waxaan ogaaday farabadan oo dhib ah oo ku jira qaabeynta xogta iyo, galootiga gacmahayga, waxaan bilaabay inaan ku hagaajiyo indhahayga dhalaalaya.

Dhibaatada kow - qaabeynta caadiga ah

Malaha qof kastaa wuu daalan yahay tusaalaha ku saabsan Postgres, kaas oo lagu wadi karo kafee-sameeyaha, laakiin ... qaabeynta caadiga ah ayaa runtii kor u qaadaysa dhowr su'aalood. Ugu yaraan, waxaa habboon in fiiro gaar ah loo yeesho dayactirka_shaqada_mem, temp_file_limit, ogaysiis_waqti gabaabsi и quful_time.

Xaaladeena dayactirka_shaqada_mem ahaa default 64 MB, iyo temp_file_limit wax ku dhow 2 GB - si fudud ma haysanno xusuus ku filan si aan u abuurno tusmooyin miiska weyn.

Sidaa darteed, in pg-index-caafimaadka Waxaan ururiyay taxane furaha, fikradayda, xuduudaha ay tahay in loo habeeyo database kasta.

Dhibaatada laba - tusiyaal nuqul ah

Kaydkayada xogta waxay ku nool yihiin SSD-yada, waana isticmaalnaa HA-qaabaynta oo leh xarumo xogeed oo badan, martigeliyaha sayid iyo n- tirada nuqullada. Meesha diskooga waa kheyraad aad u qiimo badan; ma ahan mid ka muhiimsan waxqabadka iyo isticmaalka CPU. Sidaa darteed, dhinaca kale, waxaan u baahanahay indexes si dhakhso ah loo akhriyo, dhinaca kale, ma rabno inaan aragno tusmooyinka aan loo baahnayn ee kaydka, maadaama ay cunaan meel bannaan oo ay yareeyaan cusboonaysiinta xogta.

Oo hadda, isagoo wax walba soo celiyay tusmooyin aan sax ahayn iyo markuu arkay wax ku filan Warbixin uu qoray Oleg Bartunov, Waxaan go'aansaday inaan abaabulo nadiifinta "weyn". Waxaa soo baxday in horumariyayaashu aysan jeclayn inay akhriyaan dukumeentiyada xogta. Aad uma jecla. Taas awgeed, laba khalad oo caadi ah ayaa ka soo baxa - tusmada gacanta lagu sameeyay ee furaha aasaasiga ah iyo tusmada "buugga" la mid ah oo ku yaal tiir gaar ah. Xaqiiqdu waxay tahay in aan loo baahnayn - Postgres waxay samayn doontaa wax walba laftiisa. Tusmooyinka noocan oo kale ah si badbaado leh ayaa loo tirtiri karaa, ogaanshaha ayaa u muuqday ujeedadan koobab_indexes.

Dhibka saddexaad - tusmooyinka is-goysyada

Inta badan horumariyeyaasha cusub waxay ku abuuraan tusmooyin hal tiir. Si tartiib tartiib ah, iyagoo si fiican u soo maray ganacsigan, dadku waxay bilaabaan inay hagaajiyaan weydiimaha oo ay ku daraan tusmooyin kakan oo ay ku jiraan dhowr tiir. Tani waa sida tusmooyinka tiirarka ay u muuqdaan A, A + B, A+B+C iyo wixi la mida. Labadan tusmo ee ugu horreeya si badbaado leh ayaa loo tuuri karaa, maadaama ay horgalayaasha saddexaad yihiin. Tani waxay sidoo kale badbaadisaa boos badan oo disk ah waxaana jira baaritaanno arrintan isgoysyada_indexes.

Dhibaatada afar - furayaasha ajnabiga ah oo aan lahayn indexes

Postgres wuxuu kuu ogolaanayaa inaad abuurto caqabado fure u ah shisheeye adoon cayimin tusaha taageerada. Xaalado badan tani dhib ma aha, oo waxaa laga yaabaa in xitaa aysan is muujin... Waqtiga la joogo...

Waxay la mid tahay annaga: waa uun in wakhti wakhti shaqo ah, oo ku socda jadwalka iyo nadiifinta xogta amarrada imtixaanka, ayaa bilaabay in lagu "ku daro" martigeliyaha sayidkiisa. CPU iyo IO way qasaareen, codsiyadii waa ay gaabiyeen oo waa la damiyay, adeeggu wuxuu ahaa shan boqol. Falanqaynta degdega ah pg_stat_firfircooni waxay muujisay su'aalaha sida:

delete from <table> where id in (…)

Xaaladdan oo kale, dabcan, waxaa jiray index by id shaxda bartilmaameedka, iyo diiwaan aad u yar ayaa la tirtiray iyadoo loo eegayo xaaladda. Waxay u muuqatay in wax walba ay tahay inay shaqeeyaan, laakiin, hoogtay, ma aysan dhicin.

Midkii cajiibka ahaa ayaa u soo gurmaday sharax falanqeyn wuxuuna sheegay in marka laga soo tago tirtirista diiwaanada ku jira shaxda bartilmaameedka, ay sidoo kale jirto hubinta daacadnimada tixraaca, mid ka mid ah miisaska la xidhiidha jeeggani wuu fashilmay. iskaanka isdaba jooga sababtoo ah la'aanta index ku habboon. Sidaa awgeed waxa ku dhashay baadhitaanno furayaal_ajnabi_la'aan.

Dhibka shan - qiimaha waxba kama jiraan

Sida caadiga ah, Postgres waxaa ku jira qiimayaal aan waxba ahayn oo ku jira tusmooyinka btree, laakiin inta badan loogama baahna halkaas. Sidaa darteed, waxaan si taxadar leh isku dayaa inaan tuuro kuwan nulls (diagnostics tusmooyin_leh_qiimo_null_ah), abuurista tusmooyinka qayb ka mid ah tiirarka aan la tirtirin nooc ahaan where <A> is not null. Sidan ayaan awooday inaan ku dhimo cabbirka mid ka mid ah tusmooyinkayada oo ahaa 1877 MB ilaa 16 KB. Iyo mid ka mid ah adeegyada, cabbirka xogta ayaa hoos u dhacay wadar ahaan 16% (4.3 GB ee tirooyinka dhammaystiran) sababtoo ah ka saarida qiyamka aan tooska ahayn ee tusmooyinka. Kaydin aad u weyn oo meel disk ah oo leh wax ka beddel aad u fudud. 🙂

Dhibaatada lixaad - la'aanta furayaasha aasaasiga ah

Sababtoo ah dabeecadda farsamada MVCC gudaha Postgres xaalad sidan oo kale ah waa suurtagal buunbuuninmarka cabbirka miiskaagu uu si degdeg ah u korayo sababtoo ah tiro badan oo diiwaanno dhintay. Waxaan si aan caqli gal ahayn u rumaysnaa in tani aysan nagu handadi doonin, tanina aysan ku dhici doonin saldhiggayaga, sababtoo ah annaga, wow!!!, waxaan nahay horumariyayaal caadi ah... Sidee nacasnimo iyo nacasnimo ah ayaan u ahaa...

Maalin maalmaha ka mid ah, hal guurti oo cajiib ah ayaa qaaday oo cusbooneysiiyay dhammaan diiwaannada ku jira miis weyn oo si firfircoon loo isticmaalo. Waxaan helnay +100 GB cabbirka miiska oo ka baxsan buluugga. Waxay ahayd ceeb aad u xun, laakiin nasiib-darradayadu intaas kuma ekaan. Ka dib markii autovacuum-ka miiskaan uu dhamaaday 15 saacadood ka dib, waxaa caddaatay in goobta jireed aysan soo laaban doonin. Ma joojin karno adeegga oo aan ka dhigno VACUUM FULL, sidaas darteed waxaan go'aansanay inaan isticmaalno pg_repack. Kadibna waxaa soo baxday in pg_repack ma garanayo sida loo farsameeyo miisaska iyada oo aan furaha aasaasiga ah ama caqabad kale oo gaar ah lahayn, miiskayaguna ma lahayn furaha aasaasiga ah. Sidaa awgeed waxa ku dhashay baadhitaanno miisaska_la'aan_furaha_primary.

In nooca maktabadda 0.1.5 Awoodda lagu ururiyo xogta laga soo ururiyo miisaska iyo tusmooyinka iyo ka jawaabista waqtigeeda ayaa lagu daray.

Dhibaatooyinka todoba iyo siddeed - tusmooyinka aan ku filnayn iyo tusmooyinka aan la isticmaalin

Labada cudur ee soo socda waa: miisaska_leh_tusmooyin_ maqan и tusmooyin_ aan la isticmaalin - waxay u muuqdeen qaabkoodii ugu dambeeyay dhawaanahan. Ujeedadu waxay tahay in aan la qaadan karin oo kaliya.

Sidii aan horeyba u qoray, waxaan isticmaalnaa qaabeyn leh dhowr nuqul, iyo culeyska akhriska ee martigeliyaha kala duwan ayaa asal ahaan ka duwan. Natiijo ahaan, xaaladdu waxay soo baxday in qaar ka mid ah miisaska iyo tusmooyinka qaar ee martida loo yahay aan si dhab ah loo isticmaalin, iyo falanqaynta waxaad u baahan tahay inaad ka soo ururiso tirakoobyada dhammaan martida loo yahay kooxda. Dib u dajinta tirakoobka Tani waxay sidoo kale lagama maarmaan u tahay martigeliyaha kasta oo ku jira kutlada; tan kuma samayn kartid macalinka oo keliya.

Habkani waxa uu noo ogoladay in aanu badbaadino dhawr iyo toban gigabytes annagoo meesha ka saarnay tusmooyin aan waligood la isticmaalin, iyo sidoo kale in lagu daro tusmooyinka maqan ee miisaska dhifka ah ee la isticmaalo.

Sida gabagabada

Dabcan, ku dhawaad ​​​​dhammaan baaritaannada waad habeyn kartaa liiska ka saarida. Sidan, waxaad si dhakhso ah u hirgelin kartaa jeegaga codsigaaga, ka hortagga khaladaadka cusub inay soo baxaan, ka dibna si tartiib tartiib ah u hagaajiso kuwii hore.

Baadhitaannada qaarkood ayaa lagu samayn karaa imtixaanada shaqaynaya isla markaaba ka dib marka la soo saaro guuritaanka xogta. Oo tani waa laga yaabaa inay tahay mid ka mid ah astaamaha ugu awoodda badan maktabaddayda. Tusaale isticmaalka waxaa laga heli karaa demo.

Waxay macno samaynaysaa in la sameeyo jeegaga tusmooyinka aan la isticmaalin ama maqan, iyo sidoo kale barar, kaliya oo ku saabsan xogta dhabta ah. Qiimaha la ururiyay waxaa lagu qori karaa gudaha GujiHouse ama loo diro nidaamka la socodka.

Runtii taas ayaan rajaynayaa pg-index-caafimaadka waxay noqon doontaa mid waxtar leh oo loo baahan yahay. Waxa kale oo aad gacan ka geysan kartaa horumarinta maktabadda adiga oo ka warbixinaya dhibaatooyinka aad hesho oo aad soo jeediso baadhitaanno cusub.

Source: www.habr.com

Add a comment