Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Moni nonse. Vladislav Rodin akugwirizana. Panopa ndine Mtsogoleri wa Course for High Workload Architect course ku OTUS komanso ndimaphunzitsa maphunziro a zomangamanga.

Kuphatikiza pa kuphunzitsa, monga momwe mwawonera, ndikulemba zolemba zoyambirira za OTUS blog pa HabrΓ© ndipo ndikufuna kuti zigwirizane ndi zomwe zalembedwa lero kuti zigwirizane ndi kukhazikitsidwa kwa maphunzirowa. "PostgreSQL", yomwe ili yotsegulidwa kulembetsa pakali pano.

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Mau oyamba

Π’ nthawi yotsiriza tidalankhula zakuti kugulitsa m'ma database kumathetsa mavuto awiri: kuwonetsetsa kulolerana kolakwa ndikupeza deta pamalo opikisana. Kuti muchite izi mokwanira, malondawo ayenera kukhala ndi katundu wa ACID. Lero tikambirana mwatsatanetsatane za kalatayo Ine (kudzipatula) mu chidule ichi.

Kutsegula

Kudzipatula kumathetsa vuto lopeza deta pamalo opikisana, makamaka kupereka chitetezo ku mikhalidwe yamtundu. Momwemo, kudzipatula kumatanthauza kutsatizana, yomwe ndi katundu yemwe amatsimikizira kuti zotsatira za kuchita zinthu motsatirana ndizofanana ndi zomwe zidachitidwa motsatizana. Vuto lalikulu ndi katunduyu ndizovuta kwambiri kupereka mwaukadaulo ndipo, chifukwa chake, zimakhudza kwambiri magwiridwe antchito. Ndicho chifukwa chake kudzipatula nthawi zambiri kumafooka, kuvomereza kuopsa kwa zovuta zina, zomwe zidzakambidwe pansipa. Kuthekera kwa zovuta zina zomwe zimachitika ndendende zimawonetsa kuchuluka kwa kudzipatula kwa malonda.

Zosokoneza zodziwika bwino ndi izi: kuwerenga kodetsedwa, kuwerenga kosabwerezabwereza, kuwerenga kwaphantom, koma kwenikweni pali zina 5: zolemba zonyansa, cholozera chotayika, kusintha kotayika, kuwerenga skew, kulemba skew.

Zodetsa kulemba

Chomwe chimakhala chododometsa ndichakuti kuchitapo kanthu kumatha kuchotseratu zomwe simunachite.

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Kusokoneza uku ndikowopsa osati chifukwa deta imatha kutsutsana pambuyo pochita zonse ziwiri (monga momwe zilili pachithunzichi), komanso chifukwa chakuti atomiki imaphwanyidwa: popeza timalola kuti deta yosavomerezeka ilembedwe, sizikuwonekeratu momwe tingabwezerere malonda amodzi popanda kukhudza wina. .

Zosokoneza zimatha kuthandizidwa mophweka: timayika loko ku cholembera tisanayambe kujambula, kuletsa zochitika zina kuti zisinthe rekodi mpaka loko itachotsedwa.

Zodetsa kuwerenga

Kuwerenga kodetsa kumatanthauza kuwerenga zomwe simunachite.

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Mavuto amadza pamene zochita kapena zisankho ziyenera kupangidwa potengera chitsanzo.

Kuti mukonze zolakwika, mutha kulumikiza loko yowerengera, koma izi zimakhudza kwambiri magwiridwe antchito. Ndizosavuta kunena kuti pakubweza ndalama, gawo loyambirira la data (isanayambe kujambula) liyenera kusungidwa mudongosolo. Bwanji osawerenga kuchokera pamenepo? Ndizotsika mtengo kwambiri kotero kuti ma database ambiri amachotsa zodetsa zowerengedwa mwachisawawa.

Kusintha kotayika

Kusintha kotayika kumatanthauza zosintha zomwe zatayika, ndipo zomasulirazo zikuwonetsa bwino lomwe vutolo:

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

M'malo mwake, zotsatira za transaction T2 zidasinthidwa. Izi zitha kuwongoleredwa ndi maloko owonekera kapena osamveka bwino. Ndiko kuti, mwina timangosintha zolembazo, ndiyeno loko kumangochitika, kapena timachita sankhani zosintha, kupangitsa loko yowerengera ndi kulemba kuchitika. Chonde dziwani kuti opaleshoni yotereyi ndiyowopsa: ndi kuwerenga kwathu "osalakwa", timaletsa kuwerenga kwina. Ma database ena amapereka otetezeka kwambiri sankhani kuti mugawane, kulola kuti deta iwerengedwe koma osasinthidwa.

Cholozera chatayika pomwe

Kuti muwongolere bwino, maziko atha kukhala ndi zida zina, monga cholozera. Cholozera ndi kamangidwe kamene kali ndi mizere yambiri ndipo imakupatsani mwayi wobwerezabwereza. lengezani cursor_name kwa select_statement. Zomwe zili mu cholozera zimafotokozedwa ndi kusankha.

Chifukwa chiyani mukufuna cholozera? Chowonadi ndi chakuti ma database ena amapereka loko pa zolemba zonse zosankhidwa ndi kusankha (kuwerenga kukhazikika), kapena kokha pa zolemba zomwe cholozera chilipo (chosakhazikika). Ndi kukhazikika kwa cholozera, loko lalifupi limakhazikitsidwa, lomwe limatithandiza kuchepetsa kuchuluka kwa maloko ngati tibwereza zambiri za data. Chifukwa chake, kutayika kosinthika kosinthika kumasiyanitsidwa padera kwa cholozera.

Kuwerenga kosabwerezabwereza

Kuwerenga kosabwerezabwereza ndikuti pakuchita ntchito yathu, 2 motsatizana kuwerenga zolemba zomwezo zidzabweretsa zotsatira zosiyana, chifukwa chochita china chinalowerera pakati pa mawerengedwe awiriwa, kusintha deta yathu ndikudzipereka.

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Chifukwa chiyani ili ngakhale vuto? Tangoganizani kuti cholinga cha transaction T2 pachithunzichi ndikusankha zinthu zonse zomwe mtengo wake ndi wosakwana 150 USD. Winawake adasintha mtengo kukhala $200. Chifukwa chake, fyuluta yoyikayo sinagwire ntchito.

Zosokoneza izi zimasiya kuchitika pamene ma interlocks awiri akuwonjezeredwa kapena pamene njira ya MVCC ikugwiritsidwa ntchito, zomwe ndikufuna kukambirana mosiyana.

Phantom werengani

Phantom ndi kuwerenga kwa deta yomwe idawonjezedwa ndi kugulitsa kwina.

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Mwachitsanzo, titha kuwona kusankhidwa kolakwika kwa chinthu chotsika mtengo kwambiri pakachitika zovuta izi.

Kuchotsa zowerengera za phantom ndizovuta kale. Kutsekereza nthawi zonse sikokwanira, chifukwa sitingathe kuletsa chinthu chomwe sichinakhalepo. Machitidwe a 2PL amagwiritsa ntchito kutseka kodziwikiratu, pamene machitidwe a MVCC ali ndi ndondomeko yoyendetsera ntchito yomwe imayendetsa zochitika zomwe zingasokonezedwe ndi choyikapo. Njira zonse zoyamba ndi zachiwiri ndizolemera kwambiri.

Werengani skew

Kuwerenga skew kumachitika tikamagwira ntchito ndi matebulo angapo, zomwe zili mkati mwake ziyenera kusintha mosasintha.

Tiyerekeze kuti tili ndi matebulo oyimira zolemba ndi zambiri zawo meta:

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Kugulitsa kumodzi kumawerengedwa kuchokera pamatebulo, ena kumawasintha:

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Chifukwa cha transaction T1, positiyo ili ndi mutu = Zabwino, ndi kusinthidwa_by = T2, zomwe ndi zosagwirizana.

M'malo mwake, uku ndikuwerenga kosabwerezabwereza, koma monga gawo la matebulo angapo.

Kuti akonze izi, T1 ikhoza kuyika maloko pamizere yonse yomwe idzawerenge, zomwe zidzalepheretsa transaction T2 kusintha zambiri. Pankhani ya MVCC, ntchito ya T2 idzathetsedwa. Chitetezo ku zovuta izi zitha kukhala zofunika ngati tigwiritsa ntchito zolozera.

Lembani skew

Kusokoneza uku ndikosavuta kufotokoza ndi chitsanzo: tiyerekeze kuti m'dongosolo lathu dokotala mmodzi ayenera kukhala pantchito, koma madokotala onse adaganiza zosiya ntchito yawo:

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Kusokonezekaku kunatanthauza kuti palibe dokotala aliyense amene adzakhala pa ntchito. N’chifukwa chiyani zimenezi zinachitika? Chifukwa ntchitoyo inali kuyang'ana mkhalidwe womwe ukhoza kuphwanyidwa ndi ntchito ina, ndipo chifukwa cha kudzipatula sitinawone kusintha kumeneku.

Uku ndi kuwerengedwa komweko kosabwerezabwereza. Kapenanso, osankhidwa akhoza kuyika maloko pa zolemba izi.

Lembani skew ndikuwerenga skew ndi kuphatikiza kwa zolakwika zam'mbuyomu. Mutha kulingalira kulemba skew, komwe kumawerengedwa modabwitsa. Ganizirani za tebulo lomwe lili ndi mayina a antchito, malipiro awo, ndi ntchito yomwe amagwira:

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Kodi chingachitike ndi chiyani chifukwa chofooketsa mulingo wodzipatula wamalonda m'malo osungira?

Zotsatira zake, timapeza chithunzi chotsatirachi: woyang'anira aliyense ankaganiza kuti kusintha kwawo sikungapitirire kupitirira bajeti, kotero adapanga kusintha kwa ogwira ntchito zomwe zinapangitsa kuti ndalama ziwonjezeke.

Zomwe zimayambitsa vutoli ndizofanana ndi kuwerenga kwa phantom.

anapezazo

Kupumula mulingo wodzipatula muzosungirako ndikusinthanitsa pakati pa chitetezo ndi magwiridwe antchito; kusankha kwa mulingo uwu kuyenera kutsatiridwa potengera zoopsa zomwe zingachitike kubizinesi ngati zosokoneza zina zichitika.

Dziwani zambiri za maphunzirowa.

Source: www.habr.com

Kuwonjezera ndemanga