Shughuli na taratibu zao za udhibiti

Shughuli

Muamala ni msururu wa shughuli kwenye data ambayo ina mwanzo na mwisho.

Muamala ni utekelezaji unaofuatana wa shughuli za kusoma na kuandika. Mwisho wa muamala unaweza kuwa kuhifadhi mabadiliko (kujitolea) au kughairi mabadiliko (kurudisha nyuma). Kuhusiana na hifadhidata, muamala unajumuisha maombi kadhaa ambayo yanachukuliwa kama ombi moja.

Ni lazima miamala itimize sifa za ACID

Atomiki. Muamala unakamilika kabisa au haujakamilika kabisa.

Uthabiti. Wakati wa kukamilisha muamala, vizuizi vilivyowekwa kwenye data (kwa mfano, vikwazo katika hifadhidata) lazima visikiuke. Uthabiti unamaanisha kuwa mfumo utahamishwa kutoka hali moja sahihi hadi hali nyingine sahihi.

Kujitenga. Miamala inayoendeshwa sambamba haipaswi kuathiriana, kwa mfano, kubadilisha data inayotumiwa na muamala mwingine. Matokeo ya kutekeleza miamala sawia yanapaswa kuwa sawa na ikiwa miamala hiyo ilitekelezwa kwa kufuatana.

Uendelevu. Mara baada ya kujitolea, mabadiliko hayapaswi kupotea.

Kumbukumbu ya shughuli

Logi huhifadhi mabadiliko yaliyofanywa na shughuli, inahakikisha atomiki na utulivu wa data katika tukio la kushindwa kwa mfumo.

Logi ina maadili ambayo data ilikuwa nayo kabla na baada ya kubadilishwa na muamala. Mkakati wa kumbukumbu wa kuandika-mbele unahitaji kuongeza ingizo la kumbukumbu kuhusu thamani za awali kabla ya kuanza, na kuhusu thamani za mwisho baada ya shughuli kukamilika. Katika tukio la kusimamishwa kwa ghafla kwa mfumo, hifadhidata inasoma logi kwa mpangilio wa nyuma na kughairi mabadiliko yaliyofanywa na shughuli. Baada ya kukutana na shughuli iliyokatizwa, hifadhidata huitekeleza na kufanya mabadiliko kuihusu kwenye logi. Kuwa katika hali wakati wa kushindwa, hifadhidata inasoma logi kwa mpangilio wa mbele na inarudisha mabadiliko yaliyofanywa na shughuli. Kwa njia hii, utulivu wa shughuli ambazo tayari zimefanyika na atomicity ya shughuli iliyoingiliwa huhifadhiwa.

Kutekeleza tena shughuli zilizofeli hakutoshi kwa urejeshaji.

Mfano. Mtumiaji ana $500 kwenye akaunti yake na mtumiaji anaamua kuitoa kutoka kwa ATM. Shughuli mbili za malipo zinaendelea. Ya kwanza inasoma thamani ya salio na ikiwa kuna pesa za kutosha kwenye salio, inatoa pesa kwa mtumiaji. Ya pili hupunguza kiasi kinachohitajika kutoka kwa usawa. Wacha tuseme mfumo ulianguka na operesheni ya kwanza ilishindwa, lakini ya pili ilifanya. Katika kesi hii, hatuwezi kutoa tena pesa kwa mtumiaji bila kurudisha mfumo katika hali yake ya asili na salio chanya.

Viwango vya insulation

Soma Umejitolea

Tatizo la Dirty Read ni kwamba muamala unaweza kusoma matokeo ya kati ya muamala mwingine.

Mfano. Thamani ya awali ya salio ni $0. T1 inaongeza $50 kwenye salio lako. T2 inasoma thamani ya salio ($50). T1 hutupa mabadiliko na kuondoka. T2 inaendelea kutekeleza na data isiyo sahihi ya usawa.

Suluhisho ni kusoma data fasta (Read Committed), ambayo inakataza usomaji wa data iliyobadilishwa na muamala. Ikiwa shughuli A imebadilisha seti fulani ya data, basi shughuli B, wakati wa kufikia data hii, inalazimika kusubiri shughuli A ili kukamilisha.

Inayoweza Kusomwa

Tatizo la Sasisho Zilizopotea. T1 huhifadhi mabadiliko juu ya mabadiliko ya T2.

Mfano. Thamani ya awali ya salio ni $0 na miamala miwili kwa wakati mmoja hujaza salio. T1 na T2 zilisoma salio la $0. T2 kisha inaongeza $200 hadi $0 na kuhifadhi matokeo. T1 inaongeza $100 hadi $0 na kuokoa matokeo. Matokeo ya mwisho ni $100 badala ya $300.

Tatizo lisiloweza kurudiwa la kusoma. Kusoma data sawa kurudia kurudia maadili tofauti.

Mfano. T1 inasoma thamani ya salio ya $0. T2 kisha inaongeza $50 kwenye salio na kuishia. T1 inasoma data tena na kupata tofauti na matokeo ya awali.

Usomaji unaorudiwa huhakikisha kuwa usomaji wa pili utarudisha matokeo sawa. Data iliyosomwa na muamala mmoja haiwezi kubadilishwa katika nyingine hadi muamala ukamilike. Ikiwa shughuli A imesoma seti fulani ya data, basi shughuli B, wakati wa kufikia data hii, inalazimika kusubiri shughuli A ili kukamilisha.

Usomaji ulioagizwa (Unaweza kuhaririwa)

Tatizo la Phantom linasoma. Hoja mbili zinazochagua data kulingana na hali fulani hurejesha thamani tofauti.

Mfano. T1 inaomba idadi ya watumiaji wote ambao salio ni kubwa kuliko $0 lakini chini ya $100. T2 inakata $1 kutoka kwa mtumiaji aliye na salio la $101. T1 inatoa tena ombi.

Usomaji ulioamuru (Inawezekana). Shughuli za malipo hutekelezwa kama mfuatano kamili. Ni marufuku kusasisha au kuongeza rekodi ambazo ziko chini ya masharti ya ombi. Iwapo muamala A umeomba data kutoka kwa jedwali zima, basi jedwali lote limegandishwa kwa miamala mingine hadi muamala A ukamilike.

Mratibu

Huweka mpangilio ambao shughuli zinapaswa kufanywa wakati wa shughuli zinazolingana.

Hutoa kiwango maalum cha kutengwa. Ikiwa matokeo ya shughuli hayategemei agizo lao, basi shughuli kama hizo ni za kubadilika (Inawezekana). Shughuli za kusoma na uendeshaji kwenye data tofauti ni za kubadilisha. Shughuli za kusoma-kuandika na kuandika sio za kubadilisha. Kazi ya kipanga ratiba ni kuingilia shughuli zinazofanywa na miamala sawia ili matokeo ya utekelezaji yawe sawa na utekelezaji mfuatano wa miamala.

Mbinu za kudhibiti kazi sambamba (Concurrency Control)

Matumaini yanategemea kugundua na kutatua migogoro, kukata tamaa kunatokana na kuzuia migogoro kutokea.

Katika mtazamo wa matumaini, watumiaji wengi wana nakala za data wanazo. Mtu wa kwanza kukamilisha kuhariri huhifadhi mabadiliko, huku wengine lazima waunganishe mabadiliko. Kanuni ya matumaini huruhusu mzozo kutokea, lakini ni lazima mfumo urudi kutoka kwa mzozo.

Kwa mbinu ya kukata tamaa, mtumiaji wa kwanza kunasa data huzuia wengine kupokea data. Ikiwa migogoro ni nadra, ni busara kuchagua mkakati wa matumaini, kwa kuwa hutoa kiwango cha juu cha concurrency.

Kufunga

Ikiwa muamala mmoja umefunga data, basi miamala mingine lazima isubiri hadi ifunguliwe wakati wa kufikia data.

Kizuizi kinaweza kuwekwa kwenye hifadhidata, jedwali, safu mlalo au sifa. Kufuli Kushiriki kunaweza kuwekwa kwenye data sawa na miamala kadhaa, inaruhusu shughuli zote (pamoja na ile iliyoiweka) kusoma, inakataza urekebishaji na ukamataji wa kipekee. Kufuli ya Kipekee inaweza kuwekwa na shughuli moja tu, inaruhusu vitendo vyovyote vya muamala uliowekwa, inakataza vitendo vyovyote na wengine.

Mkwamo ni hali ambapo miamala huishia katika hali ya kusubiri ambayo hudumu kwa muda usiojulikana.

Mfano. Shughuli ya kwanza inasubiri data iliyonaswa na ya pili kutolewa, huku ya pili ikisubiri data iliyonaswa na wa kwanza kutolewa.

Suluhisho la matumaini kwa tatizo la msuguano huruhusu mkwamo kutokea, lakini kisha kurejesha mfumo kwa kurejesha moja ya shughuli zinazohusika katika mkwamo.

Vizuizi hutafutwa kwa vipindi fulani. Mojawapo ya mbinu za kugundua ni kwa wakati, yaani, zingatia kwamba mkwamo umetokea ikiwa shughuli itachukua muda mrefu kukamilika. Wakati mkwamo unapopatikana, moja ya miamala hiyo inarejeshwa nyuma, na kuruhusu miamala mingine inayohusika katika mkwamo huo kukamilika. Chaguo la mwathirika linaweza kutegemea thamani ya miamala au ukubwa wao (Mipango ya Kusubiri-Kufa na Kusubiri Jeraha).

Kila shughuli T muhuri wa muda umepewa TS iliyo na muda wa kuanza kwa muamala.

Ngoja-Kufa.

Kama TS(Ti) < TS(Tj), Basi Ti kusubiri, vinginevyo Ti inarudi nyuma na kuanza tena kwa muhuri sawa wa wakati.

Ikiwa muamala mchanga umepata rasilimali na shughuli ya zamani inaomba rasilimali sawa, basi shughuli ya zamani inaruhusiwa kusubiri. Ikiwa muamala wa zamani umepata rasilimali, basi muamala mdogo unaoomba rasilimali hiyo utarejeshwa.

Jeraha-kusubiri.

Kama TS(Ti) < TS(Tj), Basi Tj inarudi nyuma na kuanza tena na muhuri wa muda sawa, vinginevyo Ti kusubiri.

Ikiwa muamala mdogo umepata nyenzo na muamala wa zamani ukaomba rasilimali sawa, basi muamala mdogo utarejeshwa. Ikiwa muamala wa zamani umepata rasilimali, basi muamala mdogo unaoomba rasilimali hiyo unaruhusiwa kusubiri. Uteuzi wa mwathiriwa unaotegemea utangulizi huzuia mikwamo, lakini hurejesha nyuma miamala ambayo haijakamilishwa. Shida ni kwamba shughuli zinaweza kurudishwa mara nyingi kwa sababu ... shughuli ya zamani inaweza kushikilia rasilimali kwa muda mrefu.

Suluhisho la kukata tamaa kwa tatizo la msuguano haliruhusu shughuli kuanza kutekelezwa ikiwa kuna hatari ya mkwamo.

Ili kugundua kizuizi, grafu inaundwa (grafu ya kusubiri, grafu ya kusubiri), wima ambazo ni miamala, na kingo zinaelekezwa kutoka kwa shughuli zinazosubiri kutolewa kwa data hadi kwa shughuli ambayo imenasa data hii. Kizuizi kinazingatiwa kuwa kimetokea ikiwa grafu ina kitanzi. Kuunda grafu ya kusubiri, hasa katika hifadhidata zilizosambazwa, ni utaratibu wa gharama kubwa.

Kufunga kwa awamu mbili - huzuia vikwazo kwa kukamata rasilimali zote zinazotumiwa na shughuli mwanzoni mwa shughuli na kuziachilia mwishoni.

Shughuli zote za kuzuia lazima zitangulie ya kwanza ya kufungua. Ina awamu mbili - Awamu ya Kukua, wakati ambapo mitego hujilimbikiza, na Awamu ya Kupungua, wakati ambapo vifungo vinatolewa. Ikiwa haiwezekani kukamata moja ya rasilimali, shughuli huanza tena. Inawezekana kwamba shughuli haitaweza kupata rasilimali zinazohitajika, kwa mfano, ikiwa shughuli kadhaa zinashindana kwa rasilimali sawa.

Ahadi ya awamu mbili inahakikisha kwamba ahadi inatekelezwa kwenye nakala zote za hifadhidata

Kila hifadhidata huingiza taarifa kuhusu data ambayo itabadilishwa kuwa logi na kujibu mratibu Sawa (Awamu ya Kupiga Kura). Baada ya kila mtu kujibu SAWA, mratibu hutuma ishara kulazimisha kila mtu kujitolea. Baada ya kufanya, seva hujibu SAWA; ikiwa angalau moja haijibu sawa, basi mratibu hutuma ishara ya kughairi mabadiliko kwa seva zote (Awamu ya Kukamilisha).

Mbinu ya muhuri wa saa

Muamala wa zamani hurejeshwa wakati wa kujaribu kufikia data inayohusika na shughuli ndogo zaidi

Kila muamala umepewa muhuri wa muda TS sambamba na wakati wa kuanza kwa utekelezaji. Kama Ti juu Tj, Basi TS(Ti) < TS(Tj).

Shughuli inaporejeshwa, inapewa muhuri mpya wa muda. Kila kitu cha data Q kushiriki katika shughuli ni alama na maandiko mbili. W-TS(Q) - muhuri wa wakati wa ununuzi mdogo ambao ulikamilisha rekodi Q. R-TS(Q) - muhuri wa wakati wa ununuzi mdogo zaidi ambao ulifanya rekodi iliyosomwa Q.

Wakati shughuli T maombi ya kusoma data Q Kuna chaguzi mbili.

Kama TS(T) < W-TS(Q), yaani, data ilisasishwa na muamala mdogo, kisha muamala T inarudi nyuma.

Kama TS(T) >= W-TS(Q), basi usomaji unafanywa na R-TS(Q) inakuwa MAX(R-TS(Q), TS(T)).

Wakati shughuli T inaomba mabadiliko ya data Q Kuna chaguzi mbili.

Kama TS(T) < R-TS(Q), yaani, data tayari imesomwa na shughuli ndogo na ikiwa mabadiliko yanafanywa, mgogoro utatokea. Shughuli T inarudi nyuma.

Kama TS(T) < W-TS(Q), yaani, muamala unajaribu kubatilisha thamani mpya zaidi, muamala T unarudishwa nyuma. Katika hali nyingine, mabadiliko yanafanywa na W-TS(Q) inakuwa sawa TS(T).

Hakuna ujenzi wa grafu ya kusubiri ya gharama kubwa inahitajika. Shughuli za zamani hutegemea zile mpya zaidi, kwa hivyo hakuna mizunguko kwenye grafu ya kusubiri. Hakuna vikwazo kwa sababu miamala haingojewi bali inarudishwa nyuma mara moja. Kurudisha nyuma kunawezekana. Kama Ti akavingirisha na Tj Nilisoma data ambayo nilibadilisha Ti, Basi Tj inapaswa pia kurudi nyuma. Ikiwa wakati huo huo Tj tayari imefanywa, basi kutakuwa na ukiukwaji wa kanuni ya utulivu.

Mojawapo ya suluhisho la kurudisha nyuma. Muamala unakamilisha shughuli zote za uandishi mwishoni, na miamala mingine lazima isubiri hadi utendakazi huo ukamilike. Miamala inasubiri kufanywa kabla ya kusomwa.

Sheria ya uandishi ya Thomas - badiliko la mbinu ya muhuri wa muda ambapo data iliyosasishwa na muamala mdogo hairuhusiwi kubatilishwa na mkubwa zaidi.

Shughuli T inaomba mabadiliko ya data Q. Ikiwa TS(T) < W-TS(Q), yaani, muamala unajaribu kubatilisha thamani mpya zaidi, muamala T haurudishwi nyuma kama katika mbinu ya muhuri wa muda.

Chanzo: mapenzi.com

Kuongeza maoni