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.
Mau oyamba
Π
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.
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.
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:
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.
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.
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:
Kugulitsa kumodzi kumawerengedwa kuchokera pamatebulo, ena kumawasintha:
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:
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:
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.
Source: www.habr.com