Zochita ndi njira zawo zowongolera

Zochitika

Kuchita ndi kachitidwe kazinthu zomwe zili ndi chiyambi ndi mapeto.

Kugulitsa ndikuchita motsatizana powerenga ndi kulemba. Mapeto a malonda akhoza kukhala kusunga zosintha (kudzipereka) kapena kuletsa zosintha (kubweza). Pokhudzana ndi database, kugulitsa kumakhala ndi zopempha zingapo zomwe zimatengedwa ngati pempho limodzi.

Zochita ziyenera kukwaniritsa katundu wa ACID

Atomiki. Ntchitoyi imatha kumaliza kapena ayi.

Kusasinthasintha. Mukamaliza kuchitapo kanthu, zoletsa zomwe zimayikidwa pa data (mwachitsanzo, zopinga zomwe zili mumsungidwe) siziyenera kuphwanyidwa. Kusasinthasintha kumatanthauza kuti dongosolo lidzasamutsidwa kuchokera ku dziko lolondola kupita ku lina lolondola.

Kudzipatula. Zochita zomwe zikuyenda limodzi siziyenera kukhudza wina ndi mzake, mwachitsanzo, kusintha deta yomwe imagwiritsidwa ntchito ndi malonda ena. Zotsatira zakuchita zofananira ziyenera kukhala zofanana ngati zomwe zachitika motsatizana.

Kukhazikika. Zosintha zikachitika, siziyenera kutayika.

Lolemba yamalonda

Logi imasunga zosintha zomwe zimachitika ndi zochitika, zimatsimikizira kuti atomiki ndi kukhazikika kwa data pakagwa dongosolo.

Logi ili ndi zomwe datayo inali nayo kale komanso itatha kusinthidwa ndi malonda. Lembani-tsogole ndondomeko ya chipika imafuna kuwonjezera zolemba zamtengo wapatali zisanayambe, komanso zamtengo wapatali pambuyo pomaliza. Kuyimitsidwa kwadzidzidzi kwadongosolo, nkhokweyo imawerenga chipikacho mosinthana ndikuletsa kusintha kochitidwa ndi malonda. Pambuyo pokumana ndi kusokonezedwa, databaseyo imachita ndikusintha pa chipikacho. Pokhala m'boma panthawi ya kulephera, databaseyo imawerenga chipikacho ndikubwezeretsanso zosintha zomwe zachitika. Mwanjira iyi, kukhazikika kwazomwe zachitika kale komanso ma atomiki azomwe zasokonekera zimasungidwa.

Kungobwereza zomwe zalephera sikokwanira kuchira.

Chitsanzo. Wogwiritsa ali ndi $ 500 mu akaunti yake ndipo wogwiritsa ntchitoyo aganiza zochotsa ku ATM. Zochita ziwiri zikuchitika. Woyamba amawerenga mtengo wamtengo wapatali ndipo ngati pali ndalama zokwanira pa ndalamazo, zimapereka ndalama kwa wogwiritsa ntchito. Chachiwiri chimachotsa ndalama zomwe zikufunika pa ndalamazo. Tiyerekeze kuti dongosolo linagwa ndipo opareshoni yoyamba inalephera, koma yachiwiri inalephera. Pankhaniyi, sitingathe kuperekanso ndalama kwa wogwiritsa ntchito popanda kubwezera dongosolo ku chikhalidwe chake choyambirira ndi bwino.

Miyezo ya insulation

Werengani Kudzipereka

Vuto la Dirty Read ndikuti kugulitsa kumatha kuwerenga zotsatira zapakatikati zamalonda ena.

Chitsanzo. Mtengo woyambira ndi $0. T1 imawonjezera $50 pamlingo wanu. T2 imawerengera mtengo wokwanira ($ 50). T1 imataya zosinthazo ndikutuluka. T2 ikupitilizabe kuchita ndi data yolakwika.

Yankho lake ndikuwerenga zokhazikika (Read Committed), zomwe zimaletsa kuwerenga zomwe zasinthidwa ndikusinthidwa. Ngati transaction A yasintha seti inayake ya data, ndiye kuti kugulitsa B, mukapeza izi, kumakakamizika kudikirira kuti ntchito A ithe.

Kuwerenga Kobwerezabwereza

Zosintha Zotayika Vuto. T1 imasunga zosintha pamwamba pa zosintha za T2.

Chitsanzo. Mtengo woyambira ndi $0 ndipo zochitika ziwiri nthawi imodzi zimabwezeretsanso ndalamazo. T1 ndi T2 amawerengera ndalama zokwana $0. T2 ndiye amawonjezera $200 mpaka $0 ndikusunga zotsatira. T1 imawonjezera $100 ku $0 ndikusunga zotsatira. Chotsatira chomaliza ndi $100 m'malo mwa $300.

Vuto losabwerezabwereza lowerenga. Kuwerenga zomwezo mobwerezabwereza kumabweretsanso zikhalidwe zosiyanasiyana.

Chitsanzo. T1 imawerengera mtengo wa $0. T2 ndiye amawonjezera $50 pamlingo ndikumaliza. T1 amawerenganso deta ndikupeza kusiyana ndi zotsatira zam'mbuyo.

Kuwerenga kobwerezabwereza kumatsimikizira kuti kuwerenganso kachiwiri kumabweretsanso zotsatira zomwezo. Deta yowerengedwa ndi kugulitsa kumodzi sikungasinthidwe mwa ena mpaka ntchitoyo ithe. Ngati transaction A yawerenga deta inayake, ndiye kuti kugulitsa B, mukapeza deta iyi, kumakakamizika kuyembekezera kuti ntchito A ithe.

Kuwerenga koyitanidwa (Kusatheka)

Phantom Amawerenga vuto. Mafunso awiri omwe amasankha deta malinga ndi chikhalidwe china amabweretsanso zosiyana.

Chitsanzo. T1 imapempha kuchuluka kwa ogwiritsa ntchito omwe ndalama zawo zimaposa $0 koma zosakwana $100. T2 imachotsa $1 kwa wogwiritsa ntchito ndi ndalama zokwana $101. T1 iperekanso pempho.

Kuwerenga kolamulidwa (Kusatheka). Zochita zimachitidwa motsatizana kwathunthu. Ndizoletsedwa kukonzanso kapena kuwonjezera zolemba zomwe zili mkati mwazofunsidwa. Ngati transaction A yapempha deta patebulo lonse, ndiye kuti tebulo lonse limayimitsidwa kuti lichitike zina mpaka malonda A atha.

Wopanga dongosolo

Amakhazikitsa dongosolo lomwe ntchito ziyenera kuchitidwa panthawi yofanana.

Amapereka mlingo wodziwika wa kudzipatula. Ngati zotsatira za ntchito sizidalira kuyitanitsa kwawo, ndiye kuti ntchito zotere ndizokhazikika (Zovomerezeka). Zochita zowerengera ndi zochitika pamitundu yosiyanasiyana ndizosintha. Kuwerenga-kulemba ndi kulemba-kulemba ntchito sikusintha. Ntchito ya wokonza mapulani ndi kuphatikizira zochitika zomwe zimachitidwa ndi zochitika zofanana kuti zotsatira zake zikhale zofanana ndi zochitika zotsatizana.

Njira zowongolera ntchito zofananira (Concurrency Control)

Kukhala ndi chiyembekezo kumazikidwa pa kuzindikira ndi kuthetsa mikangano, kukayika mtima pansi kumazikidwa pa kupeΕ΅a mikangano kuti isayambike.

Mwachiyembekezo, ogwiritsa ntchito angapo ali ndi makope azomwe ali nazo. Munthu woyamba kumaliza kusintha amasunga zosinthazo, pomwe enawo ayenera kuphatikiza zosinthazo. Algorithm yoyembekezeka imalola kuti mikangano ichitike, koma dongosolo liyenera kuyambiranso kusagwirizana.

Ndi njira yopanda chiyembekezo, wogwiritsa ntchito woyamba kujambula deta amalepheretsa ena kulandira deta. Ngati mikangano ili yosowa, ndi bwino kusankha njira yabwino, chifukwa imapereka mgwirizano wapamwamba kwambiri.

Kutseka

Ngati ntchito imodzi yatseka deta, ndiye kuti zochitika zina ziyenera kuyembekezera mpaka zitatsegulidwa pamene mukupeza deta.

Chidacho chimatha kukutidwa pankhokwe, tebulo, mzere, kapena mawonekedwe. Shared Lock imatha kukhazikitsidwa pa data yomweyi ndi zochitika zingapo, imalola zochitika zonse (kuphatikiza zomwe zidapangitsa) kuti ziwerenge, zimaletsa kusinthidwa ndi kugwidwa kokha. Exclusive Lock imatha kukhazikitsidwa ndikuchita kumodzi kokha, imalola zochita zilizonse zomwe zingachitike, imaletsa chilichonse cha ena.

A deadlock ndi mkhalidwe womwe ma transaction amatha kudikirira mpaka kalekale.

Chitsanzo. Kugulitsa koyamba kumadikirira kuti deta yomwe idagwidwa ndi yachiwiri itulutsidwe, pomwe yachiwiri imadikirira kuti deta yomwe idagwidwa ndi woyambayo itulutsidwe.

Njira yabwino yothetsera vuto la deadlock imalola kuti imfa ichitike, koma kenako imabwezeretsanso dongosololo pobweza chimodzi mwazinthu zomwe zachitikapo.

Ma Deadlocks amafufuzidwa pakapita nthawi. Imodzi mwa njira zodziwira ndi nthawi, ndiko kuti, ganizirani kuti kulephera kwachitika ngati ntchitoyo itenga nthawi yayitali kuti ithe. Pamene chiwonongeko chikapezeka, chimodzi mwazochitazo chimatembenuzidwa, kulola zochitika zina zomwe zikukhudzidwa ndi deadlock kuti zithe. Kusankhidwa kwa wozunzidwa kutha kutengera mtengo wamalonda kapena ukalamba wawo (Dikirani-Die ndi Wound-wait schemes).

Kugulitsa kulikonse T chizindikiro chanthawi chapatsidwa TS zomwe zili ndi nthawi yoyambira ntchito.

Dikirani-Die.

ngati TS(Ti) < TS(Tj), ndiye Ti amadikirira, apo ayi Ti amabwerera mmbuyo ndikuyambanso ndi sitepe yanthawi yomweyo.

Ngati malonda ang'onoang'ono apeza chithandizo ndipo okalamba amapempha chithandizo chomwecho, ndiye kuti ntchito yakale imaloledwa kudikirira. Ngati bizinesi yakale idapeza zothandizira, ndiye kuti ntchito yaying'ono yomwe ikufunsayo idzabwezeredwa.

Chilonda-dikirani.

ngati TS(Ti) < TS(Tj), ndiye Tj amabwerera mmbuyo ndikuyambanso ndi sitepe yanthawi yomweyo, apo ayi Ti kuyembekezera.

Ngati bizinesi yaying'ono yapeza chothandizira ndipo wokalambayo akufuna kugwiritsa ntchito chimodzimodzi, ndiye kuti wocheperako adzabwezeredwa. Ngati ntchito yakale yapeza zothandizira, ndiye kuti ntchito yaying'ono yomwe ikupempha chithandizocho imaloledwa kudikirira. Kusankhira anthu ozunzidwa motengera zomwe zachitika kale kumalepheretsa kutha, koma kubweza zochitika zomwe sizinathe. Vuto ndiloti ma transaction amatha kubwezeredwa nthawi zambiri chifukwa ... ntchito yakale ikhoza kusunga gwero kwa nthawi yayitali.

Yankho lopanda chiyembekezo pavuto la deadlock sililola kuti malonda ayambe kuchita ngati pali chiopsezo cha kufa.

Kuti muzindikire kutsekeka, graph imapangidwa (kudikirira graph, kudikirira-graph), ma vertices omwe ndi ma transaction, ndipo m'mphepete mwake amawongoleredwa kuchokera kuzinthu zomwe zikudikirira kutulutsidwa kwa data ku malonda omwe adalanda deta iyi. Kutsekeka kumaganiziridwa kuti kwachitika ngati graph ili ndi loop. Kupanga graph yodikirira, makamaka m'malo osungidwa omwe amagawidwa, ndi njira yokwera mtengo.

Kutsekera kwa magawo awiri - kumalepheretsa kutsekeka polanda zinthu zonse zomwe zimagwiritsidwa ntchito pochita malonda kumayambiriro kwa malonda ndikuzimasula kumapeto.

Ntchito zonse zotsekereza ziyenera kutsogola kutsegulira koyamba. Ili ndi magawo awiri - Gawo Lokulirapo, pomwe ma grips amadziunjikira, ndi Shrinking Phase, pomwe ma grips amamasulidwa. Ngati sikungatheke kutenga chimodzi mwazinthuzo, ntchitoyo imayambanso. Ndizotheka kuti kugulitsako sikungathe kupeza zofunikira, mwachitsanzo, ngati zochitika zingapo zikupikisana ndi zinthu zomwezo.

Kudzipereka kwa magawo awiri kumawonetsetsa kuti ntchitoyo ikuchitika pazithunzi zonse za database

Dongosolo lililonse limalowetsa zambiri za data yomwe idzasinthidwe kukhala chipika ndikuyankha kwa wogwirizanitsa OK (Gawo Lovota). Aliyense akayankha kuti CHABWINO, wotsogolera amatumiza chizindikiro chokakamiza aliyense kuti achite. Pambuyo pochita, ma seva amayankha bwino; ngati osachepera mmodzi sayankha bwino, ndiye kuti wogwirizanitsa amatumiza chizindikiro kuti aletse kusintha kwa ma seva onse (Gawo Lomaliza).

Njira yanthawi yanthawi

Kugulitsa kwakale kumabwezeretsedwanso poyesa kupeza zomwe zakhudzidwa ndi zochitika zazing'ono

Ntchito iliyonse imapatsidwa sitampu yanthawi TS zogwirizana ndi nthawi yoyambira kuphedwa. Ngati Ti wachikulire Tj, ndiye TS(Ti) < TS(Tj).

Ntchito ikabwezeretsedwa, imapatsidwa sitampu yatsopano. Chinthu chilichonse cha data Q okhudzidwa ndi malondawo amalembedwa ndi zilembo ziwiri. W-TS(Q) - chidindo cha nthawi yocheperako yomwe idamaliza kulemba bwino Q. R-TS(Q) - chidindo cha nthawi yocheperako yomwe idawerengapo Q.

Pamene ndikugulitsa T zopempha kuwerenga deta Q Pali njira ziwiri.

ngati TS(T) < W-TS(Q), ndiko kuti, deta inasinthidwa ndi malonda ang'onoang'ono, ndiye ntchitoyo T amagudubuzika mmbuyo.

ngati TS(T) >= W-TS(Q), ndiye kuwerenga kumachitidwa ndi R-TS(Q) ikuyamba MAX(R-TS(Q), TS(T)).

Pamene ndikugulitsa T amapempha kusintha kwa data Q Pali njira ziwiri.

ngati TS(T) < R-TS(Q), ndiko kuti, deta yawerengedwa kale ndi malonda ang'onoang'ono ndipo ngati kusintha kwapangidwa, mkangano udzabuka. Kugulitsa T amagudubuzika mmbuyo.

ngati TS(T) < W-TS(Q), ndiko kuti, kugulitsako kumayesa kulemba mtengo watsopano, transaction T ibwezeredwa. Nthawi zina, kusintha kumachitika ndipo W-TS(Q) amakhala wofanana TS(T).

Palibe kupanga ma graph okwera mtengo omwe amafunikira. Zochita zakale zimadalira zatsopano, kotero palibe mikombero mu graph yodikirira. Palibe zolephera chifukwa zochitika sizimadikiridwa koma zimabwereranso nthawi yomweyo. Cascading rollbacks ndizotheka. Ngati Ti anagubuduzika ndi Tj Ndinawerenga zomwe ndasintha Ti, ndiye Tj iyeneranso kubwereranso. Ngati nthawi yomweyo Tj wapangidwa kale, ndiye kuti padzakhala kuphwanya mfundo yokhazikika.

Imodzi mwa njira zothetsera cascading rollbacks. Kugulitsa kumamaliza ntchito zonse zolembera kumapeto, ndipo zochitika zina ziyenera kudikirira kuti ntchitoyi ithe. Zochita zimadikirira kuchitidwa asanawerengedwe.

Thomas kulemba lamulo - kusiyanasiyana kwa njira yanthawi yomwe deta yosinthidwa ndi kachitidwe kakang'ono imaletsedwa kulembedwa ndi wamkulu.

Kugulitsa T amapempha kusintha kwa data Q. ngati TS(T) < W-TS(Q), ndiye kuti, kugulitsako kumayesa kulemba mtengo watsopano, transaction T siyikubwezeredwa ngati njira yachidindo chanthawi.

Source: www.habr.com

Kuwonjezera ndemanga