Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Nigbakugba ni ọjọ iwaju ti o jinna, yiyọkuro laifọwọyi ti data ti ko wulo yoo jẹ ọkan ninu awọn iṣẹ ṣiṣe pataki ti DBMS [1]. Lakoko, awa tikararẹ nilo lati ṣe abojuto piparẹ tabi gbigbe data ti ko wulo si awọn eto ibi ipamọ ti ko gbowolori. Jẹ ki a sọ pe o pinnu lati paarẹ awọn ori ila miliọnu diẹ. Iṣẹ-ṣiṣe ti o rọrun ti o rọrun, paapaa ti ipo naa ba mọ ati pe atọka to dara wa. "Parẹ lati tabili1 NIBI col1 =: iye" - kini o le rọrun, otun?

Fidio:

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

  • Mo ti wa lori igbimọ eto Highload lati ọdun akọkọ, ie lati ọdun 2007.

  • Ati pe Mo ti wa pẹlu Postgres lati ọdun 2005. Lo o ni ọpọlọpọ awọn ise agbese.

  • Ẹgbẹ pẹlu RuPostges tun lati ọdun 2007.

  • A ti dagba si awọn olukopa 2100+ ni Meetup. O jẹ keji ni agbaye lẹhin New York, ti ​​San Francisco bori fun igba pipẹ.

  • Mo ti gbé ni California fun opolopo odun. Mo ṣe diẹ sii pẹlu awọn ile-iṣẹ Amẹrika, pẹlu awọn ti o tobi. Wọn jẹ awọn olumulo ti nṣiṣe lọwọ ti Postgres. Ati nibẹ ni o wa gbogbo ona ti awon ohun.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

https://postgres.ai/ ni ile-iṣẹ mi. A wa ninu iṣowo ti awọn iṣẹ ṣiṣe adaṣe ti o yọkuro awọn idinku idagbasoke.

Ti o ba n ṣe nkan, lẹhinna nigbamiran iru awọn pilogi kan wa ni ayika Postgres. Jẹ ki a sọ pe o nilo lati duro fun alabojuto lati ṣeto iduro idanwo fun ọ, tabi o nilo lati duro fun DBA lati dahun si ọ. Ati pe a rii iru awọn igo ni idagbasoke, idanwo ati ilana iṣakoso ati gbiyanju lati yọkuro wọn pẹlu iranlọwọ ti adaṣe ati awọn ọna tuntun.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

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

Mo wa laipe ni VLDB ni Los Angeles. Eyi ni apejọ ti o tobi julọ lori awọn apoti isura data. Ati pe ijabọ kan wa pe ni ọjọ iwaju DBMS kii ṣe fipamọ nikan, ṣugbọn tun paarẹ data laifọwọyi. Eyi jẹ koko-ọrọ tuntun.

Awọn data siwaju ati siwaju sii wa ni agbaye ti zettabytes - iyẹn jẹ 1 petabytes. Ati ni bayi o ti ni ifoju pe a ni diẹ sii ju 000 zettabytes ti data ti o fipamọ sinu agbaye. Ati pe ọpọlọpọ wọn wa.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

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

Ati kini lati ṣe pẹlu rẹ? O han ni o nilo lati yọ kuro. Eyi ni ọna asopọ si ijabọ ti o nifẹ si. Ṣugbọn titi di isisiyi eyi ko ti ni imuse ninu DBMS.

Awon ti o le ka owo fe ohun meji. Wọn fẹ ki a parẹ, nitorina ni imọ-ẹrọ a yẹ ki o ni anfani lati ṣe.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ohun ti Emi yoo sọ ni atẹle ni diẹ ninu awọn ipo alafojusi ti o pẹlu ọpọlọpọ awọn ipo gidi, ie iru akojọpọ ohun ti o ṣẹlẹ si mi ati awọn apoti isura data agbegbe ni ọpọlọpọ igba, ọpọlọpọ ọdun. Rakes wa nibi gbogbo ati pe gbogbo eniyan n gbe wọn lori wọn ni gbogbo igba.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Jẹ ki a sọ pe a ni ipilẹ tabi awọn ipilẹ pupọ ti o dagba. Ati diẹ ninu awọn igbasilẹ jẹ o han ni idoti. Fun apẹẹrẹ, olumulo bẹrẹ ṣiṣe nkan nibẹ, ṣugbọn ko pari rẹ. Ati lẹhin igba diẹ a mọ pe eyi ti ko pari ko le wa ni ipamọ mọ. Iyẹn ni, a yoo fẹ lati nu diẹ ninu awọn nkan idoti lati le ṣafipamọ aaye, ilọsiwaju iṣẹ, ati bẹbẹ lọ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ni gbogbogbo, iṣẹ-ṣiṣe ni lati ṣe adaṣe yiyọkuro awọn ohun kan pato, awọn laini pato ni diẹ ninu tabili.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ati pe a ni iru ibeere bẹ, eyiti a yoo sọrọ nipa loni, iyẹn, nipa yiyọ idoti.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

A beere lọwọ olupilẹṣẹ ti o ni iriri lati ṣe. O gba ibeere yii, ṣayẹwo fun ara rẹ - ohun gbogbo n ṣiṣẹ. Idanwo lori iṣeto - ohun gbogbo dara. Yiyi jade - ohun gbogbo ṣiṣẹ. Ni ẹẹkan ọjọ kan a nṣiṣẹ rẹ - ohun gbogbo dara.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Awọn database gbooro ati ki o dagba. DELETE lojoojumọ bẹrẹ lati ṣiṣẹ diẹ diẹ sii laiyara.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Lẹhinna a loye pe a ni ile-iṣẹ tita ni bayi ati pe ijabọ yoo pọ si ni ọpọlọpọ igba, nitorinaa a pinnu lati da duro fun awọn nkan ti ko wulo fun igba diẹ. Ki o si gbagbe lati pada.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Oṣu diẹ lẹhinna wọn ranti. Ati pe Olùgbéejáde yẹn jáwọ́ tabi o nšišẹ lọwọ pẹlu nkan miiran, paṣẹ fun ẹlomiran lati da pada.

O ṣayẹwo lori dev, lori iṣeto - ohun gbogbo dara. Nipa ti ara, o tun nilo lati nu ohun ti o ti ṣajọpọ mọ. O ṣayẹwo ohun gbogbo ṣiṣẹ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Kini yoo ṣẹlẹ nigbamii? Lẹhinna ohun gbogbo ṣubu fun wa. O ṣubu silẹ pe ni aaye kan ohun gbogbo ṣubu silẹ. Gbogbo eniyan ni ijaya, ko si ẹnikan ti o loye ohun ti n ṣẹlẹ. Ati lẹhinna o wa ni pe ọrọ naa wa ninu PArẹ yii.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Nnkan o lo daadaa? Eyi ni atokọ ohun ti o le jẹ aṣiṣe. Èwo nínú ìwọ̀nyí ló ṣe pàtàkì jù lọ?

  • Fun apẹẹrẹ, ko si atunyẹwo, ie amoye DBA ko wo. Oun yoo rii iṣoro naa lẹsẹkẹsẹ pẹlu oju ti o ni iriri, ati pẹlupẹlu, o ni iwọle si prod, nibiti ọpọlọpọ awọn laini miliọnu ti ṣajọpọ.

  • Boya wọn ṣayẹwo nkan ti ko tọ.

  • Boya ohun elo naa jẹ igba atijọ ati pe o nilo lati ṣe igbesoke ipilẹ yii.

  • Tabi ohun kan jẹ aṣiṣe pẹlu aaye data funrararẹ, ati pe a nilo lati gbe lati Postgres si MySQL.

  • Tabi boya ohun kan wa ti ko tọ pẹlu iṣẹ naa.

  • Boya awọn aṣiṣe diẹ wa ninu iṣeto iṣẹ ati pe o nilo lati fi ẹnikan ṣiṣẹ ati bẹwẹ awọn eniyan ti o dara julọ?

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ko si ayẹwo DBA. Ti DBA ba wa, oun yoo rii awọn laini miliọnu pupọ ati paapaa laisi awọn idanwo eyikeyi yoo sọ: “Wọn ko ṣe iyẹn.” Ṣebi ti koodu yii ba wa ni GitLab, GitHub ati pe ilana atunyẹwo koodu yoo wa ati pe kii ṣe pe laisi ifọwọsi ti DBA iṣẹ yii yoo waye lori prod, lẹhinna o han gbangba pe DBA yoo sọ pe: “Eyi ko le ṣee ṣe. ”

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ati pe yoo sọ pe iwọ yoo ni awọn iṣoro pẹlu IO disk ati gbogbo awọn ilana yoo jẹ irikuri, awọn titiipa le wa, ati pe iwọ yoo ṣe idiwọ autovacuum fun awọn iṣẹju diẹ, nitorinaa eyi ko dara.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

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

Aṣiṣe keji - wọn ṣayẹwo ni ibi ti ko tọ. A rii lẹhin otitọ pe ọpọlọpọ awọn data ijekuje ti o ṣajọpọ lori prod, ṣugbọn olupilẹṣẹ ko ni akopọ data ninu data data yii, ko si si ẹnikan ti o ṣẹda ijekuje yii lakoko iṣeto. Nitorinaa, awọn laini 1 wa ti o ṣiṣẹ ni iyara.

A loye pe awọn idanwo wa ko lagbara, ie ilana ti a kọ ko mu awọn iṣoro. Idanwo DB ti o peye ko ṣe.

Idanwo ti o dara julọ ni o dara julọ lori ohun elo kanna. Ko ṣee ṣe nigbagbogbo lati ṣe eyi lori ohun elo kanna, ṣugbọn o ṣe pataki pupọ pe ki o jẹ ẹda kikun ti data data. Èyí ni ohun tí mo ti ń wàásù fún ọ̀pọ̀ ọdún báyìí. Ati ni ọdun kan sẹhin Mo ti sọrọ nipa eyi, o le wo gbogbo rẹ lori YouTube.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Boya ohun elo wa ko dara? Ti o ba wo, lẹhinna lairi naa fo. A ti rii pe lilo jẹ 100%. Nitoribẹẹ, ti iwọnyi ba jẹ awakọ NVMe ode oni, lẹhinna o ṣee ṣe yoo rọrun pupọ fun wa. Ati boya a yoo ko dubulẹ lati o.

Ti o ba ni awọn awọsanma, lẹhinna igbesoke naa ni irọrun ṣe nibẹ. Awọn ẹda tuntun dide lori ohun elo tuntun. yipada. Ati pe gbogbo rẹ dara. Lẹwa rọrun.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ṣe o ṣee ṣe lati fi ọwọ kan awọn disiki kekere bi? Ati nibi, o kan pẹlu iranlọwọ ti DBA, a besomi sinu koko kan ti a npe ni checkpoint tuning. O wa ni jade wipe a ko ni checkpoint yiyi.

Kini aaye ayẹwo? O wa ni eyikeyi DBMS. Nigbati o ba ni data ninu iranti ti o yipada, kii ṣe kọ lẹsẹkẹsẹ si disk. Alaye ti data ti yipada ni a kọkọ kọ si akọọlẹ kikọ-iwaju. Ati ni aaye kan, DBMS pinnu pe o to akoko lati da awọn oju-iwe gidi silẹ si disk, nitorinaa ti a ba ni ikuna, a le ṣe REDO kere si. O dabi ohun isere. Ti a ba pa, a yoo bẹrẹ ere lati ibi ayẹwo to kẹhin. Ati gbogbo DBMS ṣe imuse rẹ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Awọn eto ni Postgres jẹ aisun lẹhin. Wọn ṣe apẹrẹ fun awọn iwọn ọdun 10-15 ti data ati awọn iṣowo. Ati checkpoint ni ko si sile.

Eyi ni alaye lati ijabọ ayẹwo Postgres wa, ie ayẹwo ilera aladaaṣe. Ati pe nibi ni diẹ ninu data data ti awọn terabytes pupọ. Ati pe o le rii daradara pe awọn aaye ayẹwo fi agbara mu ni o fẹrẹ to 90% ti awọn ọran.

Kini o je? Eto meji lo wa nibẹ. Aye ayẹwo le wa nipasẹ akoko ipari, fun apẹẹrẹ, ni iṣẹju 10. Tabi o le wa nigbati ọpọlọpọ data ti kun.

Ati nipa aiyipada max_wal_saze ti ṣeto si 1 gigabyte. Ni otitọ, eyi ṣẹlẹ gaan ni Postgres lẹhin 300-400 megabyte. O ti yipada pupọ data ati aaye ayẹwo rẹ ṣẹlẹ.

Ati pe ti ko ba si ẹnikan ti o ṣe aifwy, ati pe iṣẹ naa dagba, ati pe ile-iṣẹ n gba owo pupọ, o ni ọpọlọpọ awọn iṣowo, lẹhinna aaye ayẹwo wa lẹẹkan ni iṣẹju kan, nigbakan ni gbogbo awọn aaya 30, ati paapaa ni lqkan. Eleyi jẹ ohun buburu.

Ati pe a nilo lati rii daju pe o wa kere si nigbagbogbo. Iyẹn ni, a le gbe max_wal_size ga. Ati pe yoo wa kere si nigbagbogbo.

Ṣugbọn a ti ṣe agbekalẹ gbogbo ilana fun bi o ṣe le ṣe diẹ sii ni deede, iyẹn ni, bii o ṣe le ṣe ipinnu nipa yiyan awọn eto, ti o da lori data kan pato.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Nitorinaa, a n ṣe awọn idanwo meji lori awọn apoti isura data.

Ni igba akọkọ ti jara - a yi max_wal_size. Ati pe a n ṣe iṣẹ ṣiṣe nla kan. Ni akọkọ, a ṣe lori eto aiyipada ti 1 gigabyte. Ati pe a ṣe piparẹ nla ti ọpọlọpọ awọn laini miliọnu.

O le rii bi o ṣe le fun wa. A rii pe disk IO buru pupọ. A wo iye awọn WAL ti a ti ipilẹṣẹ, nitori eyi ṣe pataki pupọ. Jẹ ki a wo iye igba ti aaye ayẹwo naa ṣẹlẹ. Ati pe a rii pe ko dara.

Nigbamii ti a mu max_wal_size. A tun. A pọ si, a tun ṣe. Ati ki ọpọlọpọ igba. Ni opo, awọn aaye 10 dara, nibiti 1, 2, 4, 8 gigabytes. Ati pe a wo ihuwasi ti eto kan pato. O han gbangba pe nibi ohun elo yẹ ki o dabi lori prod. O gbọdọ ni awọn disiki kanna, iye kanna ti iranti, ati awọn eto Postgres kanna.

Ati ni ọna yii a yoo paarọ eto wa, ati pe a mọ bi DBMS yoo ṣe huwa ti o ba jẹ pe ibi-piparẹ buburu kan, bawo ni yoo ṣe le ṣayẹwo.

Aye ayẹwo ni Russian jẹ awọn aaye ayẹwo.

Apeere: Pa ọpọlọpọ awọn ori ila miliọnu rẹ kuro nipasẹ atọka, awọn ori ila “tuka” kọja awọn oju-iwe.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Eyi jẹ apẹẹrẹ kan. Eyi jẹ ipilẹ diẹ. Ati pẹlu eto aiyipada ti 1 gigabyte fun max_wal_size, o han gbangba pe awọn disiki wa lọ si selifu fun gbigbasilẹ. Aworan yii jẹ aami aiṣan ti alaisan ti o ṣaisan pupọ, iyẹn ni, o ni ibanujẹ gaan. Ati pe iṣẹ kan ṣoṣo wa, o kan parẹ ti awọn laini miliọnu pupọ.

Ti iru iṣẹ bẹ ba gba laaye ni prod, lẹhinna a yoo kan dubulẹ, nitori o han gbangba pe DELETE kan pa wa ni selifu.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Siwaju sii, nibiti 16 gigabytes, o han gbangba pe awọn eyin ti lọ tẹlẹ. Awọn ehin ti dara tẹlẹ, iyẹn ni, a n kan lori aja, ṣugbọn kii ṣe buburu. Ominira diẹ wa nibẹ. Ni apa ọtun ni igbasilẹ naa. Ati awọn nọmba ti mosi - awọn keji awonya. Ati pe o han gbangba pe a ti nmi ni irọrun diẹ nigbati 16 gigabytes.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ati nibiti 64 gigabytes le rii pe o ti dara julọ. Tẹlẹ awọn eyin ti sọ tẹlẹ, awọn aye diẹ sii wa lati ye awọn iṣẹ miiran ati ṣe nkan pẹlu disiki naa.

Kini idi bẹ

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Emi yoo lọ sinu awọn alaye diẹ diẹ, ṣugbọn koko yii, bii o ṣe le ṣe atunṣe ibi-iṣayẹwo, le ja si ijabọ gbogbo, nitorinaa Emi kii yoo ṣe fifuye pupọ, ṣugbọn Emi yoo ṣe ilana diẹ kini awọn iṣoro wa.

Ti aaye ayẹwo ba waye nigbagbogbo, ati pe a ṣe imudojuiwọn awọn ila wa kii ṣe lẹsẹsẹ, ṣugbọn wa nipasẹ atọka, eyiti o dara, nitori a ko paarẹ gbogbo tabili, lẹhinna o le ṣẹlẹ pe ni akọkọ a fi ọwọ kan oju-iwe akọkọ, lẹhinna ẹgbẹẹgbẹrun, ati lẹhinna pada si akọkọ. Ati pe ti o ba wa laarin awọn ọdọọdun wọnyi si oju-iwe akọkọ, aaye ayẹwo ti fipamọ tẹlẹ si disk, lẹhinna yoo fipamọ lẹẹkansi, nitori a ni idọti ni akoko keji.

Ati pe a yoo fi ipa mu aaye ayẹwo lati fipamọ ni ọpọlọpọ igba. Bawo ni awọn iṣẹ ṣiṣe laiṣe yoo wa fun u.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ṣugbọn iyẹn ko pẹ. Awọn oju-iwe jẹ kilobytes 8 ni Postgres ati 4 kilobytes ni Linux. Ati pe eto kikun_oju-iwe_write wa. O ti ṣiṣẹ nipasẹ aiyipada. Ati pe eyi jẹ deede, nitori ti a ba pa a, lẹhinna ewu wa pe idaji oju-iwe naa yoo wa ni fipamọ ti o ba ṣubu.

Iwa ti kikọ si WAL ti log iwaju jẹ iru pe nigba ti a ba ni aaye ayẹwo ati pe a yi oju-iwe pada fun igba akọkọ, gbogbo oju-iwe naa, ie, gbogbo kilobytes 8, n wọle sinu iwe-ipamọ iwaju, biotilejepe a yipada nikan ila, ti o wọn 100 baiti. Ati pe a ni lati kọ gbogbo oju-iwe naa silẹ.

Ni awọn ayipada atẹle yoo jẹ tuple kan pato, ṣugbọn fun igba akọkọ a kọ ohun gbogbo silẹ.

Ati pe, ni ibamu, ti aaye ayẹwo ba tun ṣẹlẹ, lẹhinna a ni lati bẹrẹ ohun gbogbo lati ibere lẹẹkansi ati Titari gbogbo oju-iwe naa. Pẹlu awọn aaye ayẹwo loorekoore, nigba ti a ba rin nipasẹ awọn oju-iwe kanna, full_page_writes = lori yoo jẹ diẹ sii ju bi o ti le jẹ lọ, ie a ṣe agbekalẹ WAL diẹ sii. Diẹ sii ti wa ni fifiranṣẹ si awọn ẹda, si ibi ipamọ, si disk.

Ati, ni ibamu, a ni awọn irapada meji.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ti a ba mu max_wal_size, o wa ni jade wipe a ṣe awọn ti o rọrun fun awọn mejeeji checkpoint ati wal onkqwe. Ati pe iyẹn jẹ nla.

Jẹ ki a fi terabyte sinu kan ki a gbe pẹlu rẹ. Kini buburu nipa rẹ? Eyi jẹ buburu, nitori ninu ọran ikuna, a yoo gun fun awọn wakati, nitori pe aaye ayẹwo jẹ igba pipẹ ati pe ọpọlọpọ ti yipada tẹlẹ. Ati pe a nilo lati ṣe gbogbo REDO. Ati nitorinaa a ṣe jara keji ti awọn adanwo.

A ṣe ohun isẹ ati ki o wo nigbati awọn checkpoint jẹ nipa lati pari, a ṣe pa -9 Postgres lori idi.

Ati lẹhin naa a tun bẹrẹ lẹẹkansi, ati rii bi o ṣe pẹ to lori ohun elo yii, ie iye ti yoo REDO ni ipo buburu yii.

Lẹẹmeji Emi yoo ṣe akiyesi pe ipo naa buru. Lákọ̀ọ́kọ́, a já lulẹ̀ kété kí ibi àyẹ̀wò náà tó parí, nítorí náà a ní ọ̀pọ̀lọpọ̀ láti pàdánù. Ati ni keji, a ṣe iṣẹ-abẹ nla kan. Ati pe ti awọn aaye ayẹwo ba wa ni akoko ipari, lẹhinna, o ṣeese, kere si WAL yoo jẹ ipilẹṣẹ lati ibi ayẹwo to kẹhin. Iyẹn ni, o jẹ olofo meji.

A ṣe iwọn iru ipo bẹ fun awọn titobi max_wal_size oriṣiriṣi ati loye pe ti max_wal_size ba jẹ gigabytes 64, lẹhinna ninu ọran ti o buruju meji a yoo gun fun iṣẹju mẹwa 10. Ati pe a ronu boya o baamu wa tabi rara. Eyi jẹ ibeere iṣowo kan. A nilo lati fi aworan yii han si awọn ti o ni iduro fun awọn ipinnu iṣowo ati beere, “Bawo ni o ṣe pẹ to ti a le dubulẹ ni pupọ julọ ni ọran kan? Njẹ a le dubulẹ ni ipo ti o buru julọ fun awọn iṣẹju 3-5? Ati pe o ṣe ipinnu.

Ati ki o nibi jẹ ẹya awon ojuami. A ni awọn ijabọ meji nipa Patroni ni apejọ. Ati boya o nlo. Eyi jẹ autofailover fun Postgres. GitLab ati Data Egret ti sọrọ nipa eyi.

Ati pe ti o ba ni autofailover ti o wa ni iṣẹju-aaya 30, lẹhinna boya a le dubulẹ fun iṣẹju mẹwa 10? Nitoripe a yoo yipada si ẹda nipasẹ aaye yii, ati pe ohun gbogbo yoo dara. Eleyi jẹ a moot ojuami. Emi ko mọ idahun ti o daju. Mo kan lero pe koko yii kii ṣe ni ayika imularada jamba nikan.

Ti a ba ni imularada pipẹ lẹhin ikuna, lẹhinna a yoo korọrun ni ọpọlọpọ awọn ipo miiran. Fun apẹẹrẹ, ninu awọn adanwo kanna, nigba ti a ba ṣe nkan ati nigbamiran ni lati duro fun awọn iṣẹju 10.

Emi yoo tun ko lọ jina ju, paapaa ti a ba ni autofailover. Gẹgẹbi ofin, awọn iye bii 64, 100 gigabytes jẹ awọn iye to dara. Nigba miran o paapaa tọ lati yan kere si. Ni gbogbogbo, eyi jẹ imọ-jinlẹ arekereke.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Lati ṣe awọn iterations, fun apẹẹrẹ, max_wal_size = 1, 8, o nilo lati tun iṣẹ-ṣiṣe lọpọlọpọ ni igba pupọ. O ṣe. Ati lori ipilẹ kanna o fẹ tun ṣe, ṣugbọn o ti paarẹ ohun gbogbo tẹlẹ. Kin ki nse?

Emi yoo sọrọ nigbamii nipa ojutu wa, kini a ṣe lati le sọ ni iru awọn ipo bẹẹ. Ati pe eyi ni ọna ti o tọ julọ.

Sugbon ninu apere yi, a wà orire. Ti, bi o ti sọ nibi "Bẹrẹ, PAArẹ, ROLLBACK", lẹhinna a le tun PArẹ. Iyẹn ni, ti a ba fagilee funrararẹ, lẹhinna a le tun ṣe. Ati nipa ti ara ni o data yoo dubulẹ ni ibi kanna. O ko paapaa gba bloat. O le ṣe atunṣe lori iru awọn DELETE.

PẸRẸ yii pẹlu ROLLBACK jẹ apẹrẹ fun ṣiṣatunṣe ibi ayẹwo, paapaa ti o ko ba ni awọn ile-iṣẹ data ti a fi ranṣẹ daradara.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

A ṣe awo kan pẹlu iwe kan "i". Postgres ni awọn ọwọn ohun elo. Wọn ti wa ni alaihan ayafi ti pataki beere fun. Awọn wọnyi ni: ctid, xmid, xmax.

Ctid jẹ adirẹsi ti ara. Oju-iwe odo, tuple akọkọ ninu oju-iwe naa.

O le rii pe lẹhin ROOLBACK tuple naa wa ni aaye kanna. Iyẹn ni, a le gbiyanju lẹẹkansi, yoo huwa ni ọna kanna. Eleyi jẹ akọkọ ohun.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Xmax jẹ akoko iku ti tuple. O jẹ ontẹ, ṣugbọn Postgres mọ pe idunadura naa ti yiyi pada, nitorinaa ko ṣe pataki ti o ba jẹ 0 tabi o jẹ idunadura ti yiyi pada. Eyi ni imọran pe o ṣee ṣe lati ṣe atunbere lori PA ati ṣayẹwo awọn iṣẹ lọpọlọpọ ti ihuwasi eto naa. O le ṣe awọn laabu data fun awọn talaka.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Eleyi jẹ nipa pirogirama. Nipa DBA, paapaa, wọn kọlu awọn olupilẹṣẹ nigbagbogbo fun eyi: “Kini idi ti o fi n ṣe awọn iṣẹ pipẹ ati lile bẹ?”. Eyi jẹ koko-ọrọ papẹndikula ti o yatọ patapata. Isakoso wa tẹlẹ, ati ni bayi idagbasoke yoo wa.

Ó ṣe kedere pé a kò fọ́ sí wẹ́wẹ́. O la gan an ni. Ko ṣee ṣe lati ma fọ iru PArẹ fun okiti miliọnu laini si awọn apakan. O yoo ṣee ṣe fun iṣẹju 20, ati pe ohun gbogbo yoo dubulẹ. Ṣugbọn, laanu, paapaa awọn olupilẹṣẹ ti o ni iriri ṣe awọn aṣiṣe, paapaa ni awọn ile-iṣẹ nla pupọ.

Kini idi ti o ṣe pataki lati fọ?

  • Ti a ba rii pe disiki naa le, lẹhinna jẹ ki a fa fifalẹ. Ati pe ti a ba bajẹ, lẹhinna a le ṣafikun awọn idaduro, a le fa fifalẹ throtling.

  • Ati pe a kii yoo dènà awọn miiran fun igba pipẹ. Ni awọn igba miiran ko ṣe pataki, ti o ba npa idoti gidi ti ko si ẹnikan ti o ṣiṣẹ lori, lẹhinna o ṣeese o kii yoo dènà ẹnikẹni ayafi iṣẹ-ṣiṣe autovacuum, nitori pe yoo duro fun idunadura naa lati pari. Ṣugbọn ti o ba yọ nkan ti ẹlomiran le beere, lẹhinna wọn yoo dina, iru ifasilẹ pq kan yoo wa. Awọn iṣowo gigun yẹ ki o yago fun awọn oju opo wẹẹbu ati awọn ohun elo alagbeka.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

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

Eleyi jẹ awon. Mo nigbagbogbo rii pe awọn olupilẹṣẹ beere: “Iwọn idii wo ni MO yẹ?”.

O han gbangba pe ti o tobi ju iwọn lapapo, ti o kere ju iṣowo lọ, ie, afikun afikun lati awọn iṣowo. Ṣugbọn ni akoko kanna, akoko naa pọ si fun idunadura yii.

Mo ni ofin ti o rọrun pupọ: mu bi o ti le ṣe, ṣugbọn maṣe kọja awọn iṣẹ ṣiṣe fun iṣẹju kan.

Kilode ti iṣẹju-aaya kan? Alaye naa rọrun pupọ ati oye fun gbogbo eniyan, paapaa awọn eniyan ti kii ṣe imọ-ẹrọ. A ri a lenu. Jẹ ki a gba 50 millise seconds. Ti ohun kan ba yipada, lẹhinna oju wa yoo dahun. Ti o ba kere si, lẹhinna nira sii. Ti ohunkan ba dahun lẹhin 100 milliseconds, fun apẹẹrẹ, o tẹ asin naa, o si da ọ lohùn lẹhin 100 milliseconds, o ti ni rilara idaduro diẹ yii. Iṣẹju kan ti ni akiyesi tẹlẹ bi awọn idaduro.

Ni ibamu si eyi, ti a ba fọ awọn iṣẹ ibi-aye wa sinu awọn fifun iṣẹju-aaya 10, lẹhinna a ni eewu pe a yoo di ẹnikan duro. Ati pe yoo ṣiṣẹ fun iṣẹju diẹ, ati pe eniyan yoo ti ṣe akiyesi rẹ tẹlẹ. Nitorina, Mo fẹ lati ma ṣe diẹ sii ju iṣẹju kan lọ. Ṣugbọn ni akoko kanna, maṣe fọ o ni itanran pupọ, nitori pe iṣowo iṣowo yoo jẹ akiyesi. Ipilẹ yoo jẹ lile, ati awọn iṣoro oriṣiriṣi miiran le dide.

A yan iwọn ti idii naa. Ni kọọkan nla, a le se o otooto. Le ṣe adaṣe. Ati pe a ni idaniloju ti ṣiṣe ti sisẹ ti idii kan. Iyẹn ni, a ṣe PA ti idii kan tabi imudojuiwọn.

Nipa ọna, gbogbo nkan ti Mo n sọrọ nipa rẹ kii ṣe nipa PARA nikan. Bi o ṣe gboju, iwọnyi jẹ awọn iṣẹ olopobobo eyikeyi lori data.

Ati pe a rii pe eto naa dara julọ. O le wo ọlọjẹ atọka, ọlọjẹ atọka nikan dara julọ paapaa. Ati pe a ni iye kekere ti data ti o wa. Ati pe o kere ju iṣẹju kan ṣẹ. Super.

Ati pe a tun nilo lati rii daju pe ko si ibajẹ. O ṣẹlẹ pe awọn akopọ akọkọ yarayara ṣiṣẹ, lẹhinna o buru si, buru ati buru. Ilana naa jẹ iru pe o nilo lati ṣe idanwo pupọ. Eyi jẹ deede ohun ti awọn laabu data jẹ fun.

Ati pe a tun ni lati mura nkan silẹ ki o le gba wa laaye lati tẹle eyi ni deede ni iṣelọpọ. Fun apẹẹrẹ, a le kọ akoko ni log, a le kọ ibi ti a wa ni bayi ati ẹniti a ti paarẹ bayi. Ati pe eyi yoo jẹ ki a loye ohun ti n ṣẹlẹ nigbamii. Ati pe ti nkan ba jẹ aṣiṣe, yara wa iṣoro naa.

Ti a ba nilo lati ṣayẹwo ṣiṣe ti awọn ibeere ati pe a nilo lati ṣe atunṣe ni ọpọlọpọ igba, lẹhinna iru nkan kan wa bi bot ẹlẹgbẹ. O ti ṣetan tẹlẹ. O ti wa ni lilo nipasẹ dosinni ti Difelopa ojoojumọ. Ati pe o mọ bi o ṣe le fun data data terabyte nla kan lori ibeere ni awọn aaya 30, ẹda tirẹ. Ati pe o le pa nkan rẹ kuro nibẹ ki o sọ Tuntun, ki o si parẹ lẹẹkansi. O le ṣe idanwo pẹlu rẹ ni ọna yii. Mo ri ojo iwaju fun nkan yii. Ati pe a ti n ṣe tẹlẹ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

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

Kini awọn ọgbọn ipin? Mo rii awọn ọgbọn ipin oriṣiriṣi mẹta ti awọn olupilẹṣẹ lori idii naa nlo.

Ni igba akọkọ ti o rọrun pupọ. A ni nọmba ID. Ati pe jẹ ki a ya lulẹ si awọn aaye arin oriṣiriṣi ati ṣiṣẹ pẹlu iyẹn. Awọn downside jẹ ko o. Ni apakan akọkọ, a le ni awọn ila 100 ti idoti gidi, ni awọn ila 5 keji tabi rara rara, tabi gbogbo awọn ila 1 yoo jade lati jẹ idoti. Iṣẹ aiṣedeede pupọ, ṣugbọn o rọrun lati fọ. Nwọn si mu awọn ti o pọju ID ati ki o fọ o. Eleyi jẹ a rọrun ona.

Ilana keji jẹ ọna iwọntunwọnsi. O ti lo ni Gitlab. Nwọn si mu ati ki o ṣayẹwo awọn tabili. A rii awọn aala ti awọn idii ID ki idii kọọkan ni awọn igbasilẹ deede 10. Ki o si fi wọn sinu isinyi. Ati lẹhinna a ṣe ilana. O le ṣe eyi ni ọpọ awọn okun.

Ni ilana akọkọ, paapaa, nipasẹ ọna, o le ṣe eyi ni ọpọlọpọ awọn okun. Ko ṣoro.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

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

Ṣugbọn itọju tutu ati ọna ti o dara julọ wa. Eleyi jẹ kẹta nwon.Mirza. Ati nigbati o ba ṣee ṣe, o dara lati yan. A ṣe eyi lori ipilẹ atọka pataki kan. Ni ọran yii, yoo ṣeese julọ jẹ atọka ni ibamu si ipo idoti ati ID wa. A yoo ni ID naa ki o jẹ ọlọjẹ atọka nikan ki a ma ba lọ si okiti naa.

Ni gbogbogbo, ọlọjẹ atọka nikan yiyara ju ọlọjẹ atọka lọ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ati pe a yara wa awọn ID wa ti a fẹ yọ kuro. BATCH_SIZE a yan ilosiwaju. Ati pe a ko gba wọn nikan, a gba wọn ni ọna pataki ati gige wọn lẹsẹkẹsẹ. Sugbon a tilekun ki ti won ba ti wa ni tiipa tẹlẹ, a ko tii wọn, ṣugbọn gbe siwaju ki o si mu awọn tókàn. Eleyi jẹ fun imudojuiwọn foo ni titiipa. Ẹya nla yii ti Postgres gba wa laaye lati ṣiṣẹ ni ọpọlọpọ awọn okun ti a ba fẹ. O ṣee ṣe ni ṣiṣan kan. Ati pe nibi CTE kan wa - eyi jẹ ibeere kan. Ati pe a ni piparẹ gidi kan ti n lọ ni ilẹ keji ti CTE yii - returning *. O le da id pada, ṣugbọn o dara julọ *ti o ba ti o ko ba ni Elo data lori kọọkan ila.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Kí nìdí tá a fi nílò rẹ̀? Eyi ni ohun ti a nilo lati jabo pada. A ti parẹ ọpọlọpọ awọn ila ni otitọ. Ati pe a ni awọn ala nipasẹ ID tabi nipasẹ ṣẹda_at bii eyi. O le ṣe min, max. Nkankan miran le ṣee ṣe. O le ni nkan pupọ nibi. Ati pe o rọrun pupọ fun ibojuwo.

Akọsilẹ miiran wa nipa atọka. Ti a ba pinnu pe a nilo atọka pataki fun iṣẹ yii, lẹhinna a nilo lati rii daju pe ko ṣe ikogun awọn imudojuiwọn tuples nikan. Iyẹn ni, Postgres ni iru awọn iṣiro bẹ. Eyi ni a le rii ni pg_stat_user_tables fun tabili rẹ. O le rii boya awọn imudojuiwọn gbona ba nlo tabi rara.

Awọn ipo wa nigbati atọka tuntun rẹ le ge wọn kuro nirọrun. Ati pe o ni gbogbo awọn imudojuiwọn miiran ti n ṣiṣẹ tẹlẹ, fa fifalẹ. Kii ṣe nitori pe atọka naa han (itọka kọọkan fa fifalẹ awọn imudojuiwọn diẹ, ṣugbọn diẹ), ṣugbọn nibi o tun ba a run. Ati pe ko ṣee ṣe lati ṣe iṣapeye pataki fun tabili yii. Eleyi ṣẹlẹ nigba miiran. Eleyi jẹ iru kan arekereke ti diẹ eniyan ranti. Ati pe rake yii rọrun lati tẹsiwaju. Nigba miiran o ṣẹlẹ pe o nilo lati wa ọna kan lati apa keji ati tun ṣe laisi atọka tuntun yii, tabi ṣe atọka miiran, tabi ni ọna miiran, fun apẹẹrẹ, o le lo ọna keji.

Ṣugbọn eyi ni ilana ti o dara julọ julọ, bii o ṣe le pin si awọn ipele ati titu ni awọn ipele pẹlu ibeere kan, paarẹ diẹ diẹ, ati bẹbẹ lọ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Awọn iṣowo gigun https://gitlab.com/snippets/1890447

Afọwọṣe ti dina mọ - https://gitlab.com/snippets/1889668

ọrọ idilọwọ - https://gitlab.com/snippets/1890428

Aṣiṣe #5 jẹ nla kan. Nikolai lati Okmeter sọrọ nipa ibojuwo Postgres. Iboju Postgres bojumu, laanu, ko si. Diẹ ninu awọn sunmọ, diẹ ninu awọn ti o jina. Okmeter ti sunmọ to lati jẹ pipe, ṣugbọn pupọ sonu ati pe o nilo lati ṣafikun. O nilo lati wa ni setan fun eyi.

Fun apẹẹrẹ, awọn tuple ti o ku ni a ṣe abojuto to dara julọ. Ti o ba ni ọpọlọpọ awọn ohun ti o ku ninu tabili, lẹhinna nkan kan jẹ aṣiṣe. O dara lati fesi ni bayi, bibẹẹkọ ibajẹ le wa, ati pe a le dubulẹ. O n ṣẹlẹ.

Ti IO nla ba wa, lẹhinna o han gbangba pe eyi ko dara.

Awọn iṣowo gigun paapaa. Awọn iṣowo gigun ko yẹ ki o gba laaye lori OLTP. Ati pe eyi ni ọna asopọ si snippet kan ti o fun ọ laaye lati mu snippet yii ati pe o ti ṣe diẹ ninu ipasẹ awọn iṣowo gigun.

Kini idi ti awọn iṣowo gigun jẹ buburu? Nitoripe gbogbo awọn titiipa yoo tu silẹ nikan ni ipari. Ati pe a dabaru gbogbo eniyan. Pẹlupẹlu, a ṣe idiwọ autovacuum fun gbogbo awọn tabili. Ko dara rara. Paapa ti o ba ni imurasilẹ gbona ṣiṣẹ lori ajọra, o tun buru. Ni gbogbogbo, ko si ibi ti o dara lati yago fun awọn iṣowo pipẹ.

Ti a ba ni ọpọlọpọ awọn tabili ti ko ni igbale, lẹhinna a nilo lati ni itaniji. Nibi iru ipo bẹẹ ṣee ṣe. A le ni aiṣe-taara ni ipa lori iṣẹ ti autovacuum. Eyi jẹ snippet lati Avito, eyiti Mo ni ilọsiwaju diẹ. Ati pe o yipada lati jẹ ohun elo ti o nifẹ lati rii ohun ti a ni pẹlu autovacuum. Fun apẹẹrẹ, diẹ ninu awọn tabili nduro nibẹ ati pe kii yoo duro fun akoko wọn. O tun nilo lati fi sii ni ibojuwo ati ki o ni itaniji.

Ati oran awọn bulọọki. Igbo ti Àkọsílẹ igi. Mo feran lati gba nkankan lati ẹnikan ki o si mu o. Nibi ti mo ti mu a itura recursive CTE lati Data Egret ti o fihan a igbo ti titiipa igi. Eyi jẹ irinṣẹ iwadii aisan to dara. Ati lori ipilẹ rẹ, o tun le kọ ibojuwo. Ṣugbọn eyi gbọdọ ṣee ṣe ni pẹkipẹki. O nilo lati ṣe alaye_akoko kukuru fun ararẹ. Ati lock_timeout jẹ wuni.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Nigba miiran gbogbo awọn aṣiṣe wọnyi waye ni apao.

Ni ero mi, aṣiṣe akọkọ nibi ni iṣeto. O ti wa ni leto, nitori awọn ilana ko ni fa. Eyi jẹ nọmba 2 - wọn ṣayẹwo ni aaye ti ko tọ.

A ṣayẹwo ni ibi ti ko tọ, nitori a ko ni ẹda oniye kan, eyiti o rọrun lati ṣayẹwo. Olùgbéejáde le ma ni iwọle si iṣelọpọ rara.

Ati pe a ṣayẹwo ko wa nibẹ. Ti a ba ti ṣayẹwo nibẹ, a yoo ti rii ara wa. Olùgbéejáde naa rii gbogbo rẹ paapaa laisi DBA ti o ba ṣayẹwo rẹ ni agbegbe ti o dara, nibiti iye data kanna wa ati ipo kanna. Oun iba ti ri gbogbo ibajẹ yii yoo si tiju.

Diẹ ẹ sii nipa autovacuum. Lẹhin ti a ti ṣe gbigba nla ti ọpọlọpọ awọn laini miliọnu, a tun nilo lati ṣe REPACK. Eyi ṣe pataki fun awọn atọka. Won yoo lero buburu lẹhin ti a nu ohun gbogbo nibẹ.

Ati pe ti o ba fẹ mu pada iṣẹ mimọ lojoojumọ, lẹhinna Emi yoo daba ṣe diẹ sii nigbagbogbo, ṣugbọn kere. O le jẹ lẹẹkan ni iṣẹju kan tabi paapaa diẹ sii nigbagbogbo diẹ. Ati pe o nilo lati ṣe atẹle awọn nkan meji: pe nkan yii ko ni awọn aṣiṣe ati pe ko ṣe aisun lẹhin. Ẹtan ti Mo fihan yoo kan yanju eyi.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Ohun ti a ṣe ni ṣiṣi orisun. O ti firanṣẹ lori GitLab. Ati pe a ṣe ki eniyan le ṣayẹwo paapaa laisi DBA kan. A n ṣe laabu data kan, iyẹn ni, a pe paati ipilẹ lori eyiti Joe n ṣiṣẹ lọwọlọwọ. Ati pe o le gba ẹda ti iṣelọpọ. Bayi ni imuse ti Joe fun ọlẹ, o le sọ nibẹ: “ṣalaye iru ati iru ibeere kan” ati lẹsẹkẹsẹ gba abajade fun ẹda rẹ ti data data. O le paapaa paarẹ nibẹ, ko si si ẹnikan ti yoo ṣe akiyesi rẹ.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Jẹ ká sọ pé o ni 10 terabytes, a ṣe database lab tun 10 terabytes. Ati pẹlu awọn data data terabyte 10 nigbakanna, awọn olupilẹṣẹ 10 le ṣiṣẹ ni nigbakannaa. Gbogbo eniyan le ṣe ohun ti o fẹ. Le parẹ, ju silẹ, bbl Iyẹn jẹ irokuro kan. A yoo sọrọ nipa eyi ni ọla.

Eyin PELETE. Nikolay Samokhvalov (Postgres.ai)

Eyi ni a npe ni ipese tinrin. Eyi jẹ ipese arekereke. Eyi jẹ iru irokuro kan ti o yọkuro awọn idaduro ni idagbasoke, ni idanwo ati jẹ ki agbaye jẹ aaye ti o dara julọ ni ọran yii. Iyẹn ni, o kan gba ọ laaye lati yago fun awọn iṣoro pẹlu awọn iṣẹ lọpọlọpọ.

Apeere: 5 terabyte database, gbigba ẹda kan ni kere ju 30 aaya. Ati pe ko paapaa dale lori iwọn, iyẹn ni, ko ṣe pataki iye terabytes.

Loni o le lọ si postgres.ai ki o si ma wà sinu awọn irinṣẹ wa. O le forukọsilẹ lati wo kini o wa. O le fi sori ẹrọ bot yii. Ofe ni. Kọ.

Awọn ibeere

Ni ọpọlọpọ igba ni awọn ipo gidi o han pe data ti o yẹ ki o wa ninu tabili kere pupọ ju ohun ti o nilo lati paarẹ. Iyẹn ni, ni iru ipo bẹẹ, o rọrun nigbagbogbo lati ṣe iru ọna bẹ, nigbati o rọrun lati ṣẹda ohun tuntun kan, daakọ awọn data pataki nikan nibẹ, ki o si ẹhin mọto tabili atijọ. O han gbangba pe ọna eto kan nilo fun akoko yii, lakoko ti iwọ yoo yipada. Bawo ni ọna yii?

Eyi jẹ ọna ti o dara pupọ ati iṣẹ-ṣiṣe ti o dara julọ. O jọra pupọ si ohun ti pg_repack ṣe, o jọra pupọ si ohun ti o ni lati ṣe nigbati o ba ṣe awọn ID 4 awọn baiti. Ọpọlọpọ awọn ilana ṣe eyi ni ọdun diẹ sẹhin, ati pe awọn apẹrẹ ti dagba, ati pe wọn nilo lati yipada si awọn baiti 8.

Iṣẹ yii nira pupọ. A ṣe e. Ati pe o ni lati ṣọra pupọ. Awọn titiipa wa, ati bẹbẹ lọ Ṣugbọn o n ṣe. Iyẹn ni, ọna boṣewa ni lati lọ pẹlu pg_repack. O kede iru aami kan. Ati pe ṣaaju ki o to bẹrẹ ikojọpọ data fọto fọto sinu rẹ, o tun kede awo kan ti o tọpa gbogbo awọn ayipada. Ẹtan kan wa ti o le ma ṣe atẹle diẹ ninu awọn ayipada. Awọn arekereke wa. Ati lẹhinna o yipada nipa yiyi awọn ayipada. Idaduro kukuru yoo wa nigba ti a ba pa gbogbo eniyan mọlẹ, ṣugbọn ni gbogbogbo eyi n ṣe.

Ti o ba wo pg_repack lori GitHub, lẹhinna nibẹ, nigbati iṣẹ kan wa lati yi ID ID pada lati int 4 si int 8, lẹhinna imọran wa lati lo pg_repack funrararẹ. Eyi tun ṣee ṣe, ṣugbọn o jẹ gige gige kan, ṣugbọn yoo ṣiṣẹ fun eyi paapaa. O le laja ni okunfa ti pg_repack nlo ati sọ nibẹ: "A ko nilo data yii", ie a gbe ohun ti a nilo nikan lọ. Ati lẹhinna o kan yipada ati pe iyẹn ni.

Pẹlu ọna yii, a tun gba ẹda keji ti tabili, ninu eyiti data ti wa tẹlẹ ti ṣe atọkasi ati pe o tolera pupọ pẹlu awọn atọka ẹlẹwa.

Bloat ko wa, o jẹ ọna ti o dara. Ṣugbọn Mo mọ pe awọn igbiyanju wa lati ṣe agbekalẹ adaṣe kan fun eyi, ie lati ṣe ojutu gbogbo agbaye. Mo le fi ọ ni ifọwọkan pẹlu adaṣe yii. O ti kọ ni Python, eyi ti o jẹ ohun ti o dara.

Mo wa diẹ diẹ lati agbaye MySQL, nitorinaa Mo wa lati gbọ. Ati pe a lo ọna yii.

Ṣugbọn o jẹ nikan ti a ba ni 90%. Ti a ba ni 5%, lẹhinna ko dara pupọ lati lo.

O ṣeun fun iroyin na! Ti ko ba si awọn orisun lati ṣe ẹda pipe ti prod, ṣe eyikeyi algorithm tabi agbekalẹ lati ṣe iṣiro fifuye tabi iwọn?

Ibeere to dara. Nitorinaa, a ni anfani lati wa awọn data data terabyte pupọ. Paapa ti hardware ko ba jẹ kanna, fun apẹẹrẹ, kere si iranti, kere si ero isise ati awọn disiki ko ni pato kanna, ṣugbọn sibẹ a ṣe. Ti ko ba si nibikibi, lẹhinna o nilo lati ronu. Jẹ ki n ronu titi di ọla, o wa, a yoo sọrọ, ibeere to dara ni eyi.

O ṣeun fun iroyin na! O kọkọ bẹrẹ nipa otitọ pe Postgres itura kan wa, eyiti o ni iru ati iru awọn idiwọn, ṣugbọn o dagbasoke. Ati pe gbogbo eyi jẹ crutch nipasẹ ati nla. Ṣe eyi kii ṣe gbogbo rẹ ni ilodi si idagbasoke ti Postgres funrararẹ, ninu eyiti diẹ ninu awọn idaduro DELETE yoo han tabi ohun miiran ti o yẹ ki o tọju ni ipele kekere ohun ti a n gbiyanju lati smear pẹlu diẹ ninu awọn ọna ajeji wa nibi?

Ti a ba sọ ni SQL lati paarẹ tabi ṣe imudojuiwọn ọpọlọpọ awọn igbasilẹ ni idunadura kan, lẹhinna bawo ni Postgres ṣe le pin kaakiri nibẹ? A ni opin nipa ti ara ni awọn iṣẹ ṣiṣe. A yoo tun ṣe fun igba pipẹ. Ati pe a yoo tii ni akoko yii, ati bẹbẹ lọ.

Ti ṣe pẹlu awọn atọka.

Mo le ro pe yiyi aaye ayẹwo kanna le jẹ adaṣe. Ni ọjọ kan o le jẹ. Ṣugbọn lẹhinna Emi ko loye ibeere naa gaan.

Ibeere naa ni, ṣe iru fekito ti idagbasoke ti o lọ sibi ati nibẹ, ati pe nibi tirẹ n lọ ni afiwe? Awon. Njẹ wọn ko ti ronu nipa rẹ sibẹsibẹ?

Mo ti sọrọ nipa awọn ilana ti o le ṣee lo ni bayi. bot miiran wa Nancy, pẹlu eyi o le ṣe atunṣe aaye ayẹwo aifọwọyi. Ṣe yoo wa ni ọjọ kan ni Postgres? Emi ko mọ, o ko tii ti jiroro sibẹsibẹ. A tun jinna si iyẹn. Ṣugbọn awọn onimo ijinlẹ sayensi wa ti o ṣe awọn ọna ṣiṣe tuntun. Ati pe wọn gbe wa sinu awọn atọka aifọwọyi. Awọn idagbasoke wa. Fun apẹẹrẹ, o le wo adaṣe adaṣe. O yan awọn paramita laifọwọyi. Ṣugbọn on kii yoo ṣe atunṣe aaye ayẹwo fun ọ sibẹsibẹ. Iyẹn ni, yoo gbe soke fun iṣẹ ṣiṣe, ifipamọ ikarahun, ati bẹbẹ lọ.

Ati fun ṣiṣatunṣe ibi ayẹwo, o le ṣe eyi: ti o ba ni ẹgbẹẹgbẹrun awọn iṣupọ ati ohun elo oriṣiriṣi, awọn ẹrọ foju oriṣiriṣi ninu awọsanma, o le lo bot wa. Nancy ṣe adaṣiṣẹ. Ati max_wal_size yoo yan ni ibamu si awọn eto ibi-afẹde rẹ laifọwọyi. Sugbon ki jina yi ni ko ani sunmọ ni mojuto, laanu.

E kaasan O ti sọrọ nipa awọn ewu ti awọn iṣowo pipẹ. O sọ pe autovacuum ti dinamọ ni ọran ti awọn piparẹ. Bawo ni miiran ṣe ṣe ipalara fun wa? Nitoripe a n sọrọ diẹ sii nipa gbigbe aaye laaye ati ni anfani lati lo. Kini ohun miiran ti a padanu?

Autovacuum jẹ boya kii ṣe iṣoro nla julọ nibi. Ati pe otitọ pe iṣowo gigun le tii awọn iṣowo miiran, o ṣeeṣe yii jẹ ewu diẹ sii. O le tabi ko le pade. Ti o ba pade, lẹhinna o le buru pupọ. Ati pẹlu autovacuum - eyi tun jẹ iṣoro kan. Awọn iṣoro meji wa pẹlu awọn iṣowo gigun ni OLTP: awọn titiipa ati aifọwọyi. Ati pe ti o ba ni awọn esi imurasilẹ gbigbona ṣiṣẹ lori ajọra, lẹhinna o yoo tun gba titiipa autovacuum lori oluwa, yoo de lati ajọra naa. Ṣugbọn o kere ju kii yoo si awọn titiipa. Ati pe awọn loks yoo wa. A n sọrọ nipa awọn iyipada data, nitorina awọn titiipa jẹ aaye pataki kan nibi. Ati pe ti eyi ba jẹ gbogbo fun igba pipẹ, igba pipẹ, lẹhinna siwaju ati siwaju sii awọn iṣowo ti wa ni titiipa. Wọn le ji awọn miiran. Ati awọn igi lok han. Mo pese ọna asopọ kan si snippet. Ati pe iṣoro yii di akiyesi diẹ sii ni iyara ju iṣoro pẹlu autovacuum, eyiti o le ṣajọpọ nikan.

O ṣeun fun iroyin na! O bẹrẹ ijabọ rẹ nipa sisọ pe o ṣe idanwo ti ko tọ. A tẹsiwaju ero wa pe a nilo lati mu ohun elo kanna, pẹlu ipilẹ ni ọna kanna. Jẹ ki a sọ pe a fun oludasile ni ipilẹ. Ó sì tẹ̀ lé ìbéèrè náà. Ati pe o dabi ẹni pe o dara. Ṣugbọn ko ṣayẹwo fun igbesi aye, ṣugbọn fun igbesi aye, fun apẹẹrẹ, a ni ẹru ti 60-70%. Ati paapaa ti a ba lo yiyi, ko ṣiṣẹ daradara.

Nini iwé lori ẹgbẹ ati lilo awọn amoye DBA ti o le ṣe asọtẹlẹ ohun ti yoo ṣẹlẹ pẹlu ẹru isale gidi jẹ pataki. Nigba ti a kan wakọ awọn ayipada mimọ wa, a rii aworan naa. Ṣugbọn ọna ti o ni ilọsiwaju diẹ sii, nigba ti a tun ṣe ohun kanna, ṣugbọn pẹlu fifuye ti a ṣe apẹrẹ pẹlu iṣelọpọ. O dara pupọ. Titi di igba naa, o ni lati dagba. O dabi agbalagba. A kan wo ohun ti a ni ati tun wo boya a ni awọn orisun to. Ibeere to dara niyen.

Nigba ti a ba ti n ṣe tẹlẹ idoti yan ati pe a ni, fun apẹẹrẹ, asia ti paarẹ

Eyi ni ohun ti autovacuum ṣe laifọwọyi ni Postgres.

Oh, ṣe o ṣe?

Autovacuum ni agbajo idoti.

O ṣeun!

O ṣeun fun iroyin na! Njẹ aṣayan kan wa lati ṣe apẹrẹ data lẹsẹkẹsẹ pẹlu ipin ni ọna ti gbogbo idoti yoo di idọti lati tabili akọkọ ni ibikan si ẹgbẹ?

Dajudaju ni.

Ṣe o ṣee ṣe lẹhinna lati daabobo ara wa ti a ba ti tii tabili ti ko yẹ ki o lo?

Dajudaju ni. Sugbon o dabi adie ati ẹyin ibeere. Ti gbogbo wa ba mọ ohun ti yoo ṣẹlẹ ni ojo iwaju, lẹhinna, dajudaju, a yoo ṣe ohun gbogbo dara. Ṣugbọn iṣowo n yipada, awọn ọwọn tuntun wa, awọn ibeere tuntun. Ati lẹhinna - oops, a fẹ lati yọ kuro. Ṣugbọn ipo pipe yii, ni igbesi aye o waye, ṣugbọn kii ṣe nigbagbogbo. Ṣugbọn ni gbogbogbo o jẹ imọran ti o dara. Kan truncate ati pe iyẹn ni.

orisun: www.habr.com

Fi ọrọìwòye kun