U cusboonaysii kuwa caajiska ah: sida PostgreSQL 12 u wanaajiso waxqabadka

U cusboonaysii kuwa caajiska ah: sida PostgreSQL 12 u wanaajiso waxqabadka

PostgreSQL 12, Nooca ugu dambeeyay ee "xogta laxiriirta isha furan ee ugu wanaagsan aduunka," ayaa soo baxaya dhowr toddobaad gudahood (haddii ay dhammaan u socdaan sida qorshaha). Tani waxay daba socotaa jadwalka caadiga ah ee sii deynta nooc cusub oo leh tiro badan oo astaamo cusub sanadkiiba mar, iyo si daacad ah, taasi waa mid cajiib ah. Taasi waa sababta aan xubin firfircoon uga noqday bulshada PostgreSQL.

Fikradayda, si ka duwan siidooyinkii hore, PostgreSQL 12 kuma jiraan hal ama laba astaamood oo kacaan ah (sida qaybinta ama isbarbardhigga weydiinta). Waxaan mar ku kaftamay in astaanta ugu weyn ee PostgreSQL 12 ay tahay xasillooni weyn. Taasi miyaanay ahayn waxa aad u baahan tahay marka aad maamusho xogta muhiimka ah ee ganacsigaaga?

Laakiin PostgreSQL 12 kuma eka halkaas: oo leh astaamo cusub iyo horumarin, codsiyadu waxay si fiican u qaban doonaan, iyo waxa kaliya ee aad u baahan tahay inaad sameyso waa cusbooneysiin!

(Hagaag, waxaa laga yaabaa inaad dib u dhisto tusmooyinka, laakiin sii-deyntan maaha mid cabsi leh sidii aan u baran jirnay.)

Way fiicnaan doontaa in la cusboonaysiiyo PostgreSQL oo isla markiiba ku raaxaysato horumarro la taaban karo iyada oo aan buuq loo baahnayn. Dhowr sano ka hor, waxaan dib u eegay casriyeynta PostgreSQL 9.4 ilaa PostgreSQL 10 oo waxaan arkay sida codsigu u kiciyay mahadsanid isbarbardhigga su'aalaha la hagaajiyay ee PostgreSQL 10. Iyo, tan ugu muhiimsan, ku dhawaad ​​​​waxba igama baahnayn aniga (kaliya deji jaantuska qaabeynta max_parallel_workers).

Ogow, way ku habboon tahay marka codsiyadu si fiican u shaqeeyaan isla markaaba casriyaynta ka dib. Waxaan aad isugu daynaa inaan ka farxino isticmaalayaasha, sababtoo ah PostgreSQL waxay leedahay wax badan oo ka mid ah.

Marka sidee u cusboonaysiinta fudud ee PostgreSQL 12 kuugu farxi kartaa? Hadda waan kuu sheegi doonaa.

Hagaajinta tusmaynta waaweyn

Tilmaanta la'aanteed, xog ururintu meel fog ma aadi doonto. Sidee kale oo aad dhakhso ugu heli kartaa macluumaadka? Nidaamka tusmaynta aasaasiga ah ee PostgreSQL ayaa loo yaqaan B-geed. Tusmada noocaan ah waxaa loo habeeyay nidaamyada kaydinta.

Waxaan si fudud u isticmaalnaa hawlwadeenka CREATE INDEX ON some_table (some_column), iyo PostgreSQL waxay qabataa shaqo badan si ay u ilaaliso tusaha ilaa taariikhda inta aan si joogto ah u gelineyno, cusbooneysiineyno, iyo tirtirno qiimaha. Wax waliba iskii ayay u shaqeeyaan, sida haddii sixir lagu sameeyo.

Laakiin tusmooyinka PostgreSQL waxay leeyihiin hal dhibaato - iyaga waa la buufiyay oo ay qaataan meel disk ah oo dheeraad ah oo ay yareeyaan waxqabadka soo celinta xogta iyo cusboonaysiinta. "Baro" waxaan ula jeedaa si aan waxtar lahayn oo loo ilaaliyo qaab-dhismeedka tusaha. Tani waxay noqon kartaa - ama ma noqon karto - inay la xiriirto tuubooyinka qashinka ee ay soo saarto VACUUM (Waad ku mahadsan tahay Peter Gaghan macluumaadka)Peter Geoghegan)). Bararka tusmada ayaa si gaar ah loogu arki karaa culeysyada shaqada halkaasoo tusaha uu si firfircoon isu beddelayo.

PostgreSQL 12 waxay si weyn u wanaajisaa waxqabadka tusmooyinka B-geedka, iyo tijaabooyinka bartilmaameedyada sida TPC-C waxay muujiyeen in celcelis ahaan 40% boos yar hadda la isticmaalo. Hadda waxaan ku bixinaa waqti yar ma aha oo kaliya ilaalinta tusmooyinka B-geedka (taas oo ah, hawlgallada qorista), laakiin sidoo kale dib u soo celinta xogta, sababtoo ah tusmooyinka ayaa aad uga yar.

Codsiyada si firfircoon u cusbooneysiiya miisaskooda - sida caadiga ah codsiyada OLTP (habaynta wax kala iibsiga waqtiga-dhabta ah) - wuxuu isticmaali doonaa diskka wuxuuna u habayn doonaa codsiyada si hufan. Inta badan booska diskka, waa in badan oo meel bannaan oo xog-ururin ah waa in ay koraan iyada oo aan la cusboonaysiin kaabayaasha.

Xeeladaha cusboonaysiinta qaarkood waxay u baahan yihiin dib-u-dhisidda tusmooyinka geedka-B-ga si looga faa'iidaysto faa'iidooyinkan (tusaale. pg_kor u qaadid si toos ah uma dhisi doono tusmooyinka). Noocyadii hore ee PostgreSQL, dib-u-dhiska tusmooyinka waaweyn ee miisaska ayaa keentay waqti hoos u dhac weyn sababtoo ah isbeddellada lama samayn karo inta lagu jiro wakhtigaas. Laakiin PostgreSQL 12 waxay leedahay muuqaal kale oo wanaagsan: hadda waxaad dib u dhisi kartaa tusmooyinka barbar socda amarka REINDEX OO ISKU DHAQANsi aad si buuxda uga fogaato wakhtiga dhimista.

Waxa jira horumarino kale oo lagu sameeyay kaabayaasha tusmaynta ee PostgreSQL 12. Wax kale oo ay jirtay sixir- qori-hor-qorista, aka WAL (qoraal hore u sii qor). Log-qori hore waxa uu diiwaangeliyaa wax kala iibsi kasta oo ku jira PostgreSQL haddii ay dhacdo guuldarro iyo ku celcelin. Codsiyada waxay u isticmaalaan kaydinta iyo soo kabashada waqtiga-dhibcaha. Dabcan, log-ka-hor-qorista waxaa lagu qoraa disk-ka, taas oo saameyn karta waxqabadka.

PostgreSQL 12 waxay hoos u dhigtay dulsaarka diiwaannada WAL ee ay abuureen tusmooyinka GiST, GIN, iyo SP-GiST inta lagu jiro dhismaha tusmada. Tani waxay ku siinaysaa faa'iidooyin badan oo la taaban karo: Diiwaanada WAL waxay qaadanayaan boos yar oo saxan ah, xogtana si dhakhso leh ayaa loogu soo celiyaa, sida inta lagu jiro soo kabashada musiibada ama soo kabashada wakhtiga-dhibcaha. Haddii aad ku isticmaasho tusmooyinkan codsiyadaada (tusaale, PostGIS-ku salaysan codsiyada juqraafiyeed waxay isticmaalaan tusmada GiST in badan), tani waa sifo kale oo si weyn u wanaajin doonta khibrada adiga oo aan wax dadaal ah ka samayn dhinacaaga.

Qaybinta - ka weyn, ka wanaagsan, dhaqso

PostgreSQL 10 ayaa la soo bandhigay kala qaybin ku dhawaaqid. Gudaha PostgreSQL 11 aad bay u fududahay in la isticmaalo. Gudaha PostgreSQL 12 waxaad bedeli kartaa miisaanka qaybaha.

Gudaha PostgreSQL 12, waxqabadka nidaamka qaybinta ayaa si weyn u fiicnaaday, gaar ahaan haddii ay jiraan kumanaan qaybood oo miiska ah. Tusaale ahaan, haddii su'aaluhu ay saameeyaan qaybo yar oo ka mid ah miis ay ku jiraan kumanaan ka mid ah, waxay u fulin doontaa si dhakhso ah. Waxqabadka kaliya laguma hagaajiyo noocyadan weydiimaha ah. Waxa kale oo aad ogaan doontaa sida ugu dhakhsaha badan ee hawlgallada INSERT ay ugu jiraan miisaska qaybo badan.

Duubista xogta iyadoo la isticmaalayo NUQUL - by habka, tani waa hab weyn xogta bulk download waana kan tusaale helaya JSON - miisaska kala qaybsan ee PostgreSQL 12 ayaa iyaguna noqday kuwo aad waxtar u leh. COPY-ga wax walbaa waxay ahaayeen kuwo degdeg ah, laakiin gudaha PostgreSQL 12 gabi ahaanba waa duulaa.

Waad ku mahadsan tahay faa'iidooyinkan, PostgreSQL waxay kuu ogolaaneysaa inaad kaydiso xitaa xog badan oo aad u fududayso soo celinta. Wax dadaal ah oo dhankaaga ah ma jiraan. Haddii codsigu leeyahay qaybo badan, sida duubista xogta taxanaha wakhtiga, casriyaynta fudud ayaa si weyn u wanaajin doonta waxqabadkeeda.

Inkastoo tani aysan ahayn "kor u qaadida oo ku raaxayso" hagaajinta, PostgreSQL 12 waxay kuu ogolaaneysaa inaad abuurto furayaal shisheeye kuwaas oo tixraacaya miisaska la qaybiyay, taasoo ka dhigaysa qaybinta farxad la shaqeynta.

Su'aalaha ayaa hadda aad u fiicnaaday

Goorma balastar ayaa lagu dabaqay tibaaxaha miiska guud ee ku dhex dhisan (loo yaqaan CTE, aka WITH weydiimaha), ma sugi karin inaan maqaal ka qoro sida ay ugu faraxsanaayeen horumarinta codsiyada PostgreSQL. Tani waa mid ka mid ah sifooyinka soo dedejin doona codsiga. Ilaa, dabcan, aad isticmaasho CTE.

Waxaan inta badan ogaadaa in kuwa ku cusub SQL ay jecel yihiin isticmaalka CTE-yada; haddii aad u qorto si gaar ah, runtii waxay dareemeysaa inaad qorayso barnaamij muhiim ah. Shakhsi ahaan, waxaan jeclaa inaan dib u qoro weydiimahan si aan ugu wareego iyada oo aan CTE oo kordhiya wax soo saarka. Hadda wax walba waa ka duwan yihiin.

PostgreSQL 12 waxay kuu ogolaanaysaa inaad khad ka geliso nooc gaar ah oo CTE ah iyada oo aan wax saameyn ah lahayn (SELECT), kaas oo la isticmaalo hal mar oo keliya meel u dhow dhammaadka codsiga. Haddii aan la socdo weydiimaha CTE ee aan dib u qoray, intooda badan waxay ku dhici doonaan qaybtan. Tani waxay ka caawinaysaa horumariyayaashu inay qoraan kood cad oo hadda waliba si dhakhso leh u shaqeeya.

Intaa waxaa dheer, PostgreSQL 12 waxay wanaajisaa fulinta SQL lafteeda, adigoon waxba samayn. In kasta oo ay u badan tahay in aanan u baahnayn in aan wanaajiyo weydiimahan oo kale, waa wax aad u wanaagsan in PostgreSQL ay sii waddo ka shaqaynta hagaajinta weydiinta.

Just-in-Time (JIT) - hadda waa default

On PostgreSQL 12 nidaamyada oo taageero leh LLVM Isku-dubbarididda JIT si toos ah ayaa loo dajiyay. Marka hore, waxaad helaysaa taageero JIT Qaar ka mid ah hawlgallada gudaha, iyo marka labaad, weydiimaha odhaahyada leh (tusaalaha ugu fudud waa x + y) ee liisaska xulashada (kuwaas oo aad haysato SELECT ka dib), isku-darka, tibaaxaha leh WHERE clauses iyo kuwa kale waxay isticmaali karaan JIT si ay u horumariyaan waxqabadka.

Maadaama JIT ay si caadi ah ugu shaqeyso PostgreSQL 12, waxqabadka ayaa iskii u fiicnaan doona, laakiin waxaan ku talinayaa in lagu tijaabiyo arjiga PostgreSQL 11, kaas oo soo bandhigay JIT, si loo cabbiro waxqabadka weydiinta oo arag haddii aad u baahan tahay inaad wax hagaajiso.

Ka waran inta kale ee sifooyinka cusub ee PostgreSQL 12?

PostgreSQL 12 waxay leedahay astaamo cusub oo cusub, laga bilaabo awooda lagu baadho xogta JSON iyadoo la adeegsanayo tibaaxaha marinka SQL/JSON ee caadiga ah ilaa xaqiijinta arrimo badan oo leh halbeeg clientcert=verify-full, tiirar la sameeyay iyo qaar kaloo badan. Ku filan boos gaar ah.

Sida PostgreSQL 10, PostgreSQL 12 waxay hagaajin doontaa waxqabadka guud isla markiiba ka dib hagaajinta. Adiga, dabcan, waxaad yeelan kartaa dariiqaaga - tijaabi codsiga xaaladaha la midka ah ee nidaamka wax soo saarka ka hor inta aadan awood u siin hagaajinta, sida aan ku sameeyay PostgreSQL 10. Xitaa haddii PostgreSQL 12 ay horeyba uga xasilloon tahay sidii aan filayay, ha ku caajisin imtixaanka. Codsiyada si fiican, ka hor inta aan lagu sii dayn wax soo saarka.

Source: www.habr.com

Add a comment