Iintengiselwano kunye neendlela zabo zokulawula

Intengiselwano

Intengiselwano lulandelelwano lwemisebenzi kwidatha enesiqalo kunye nesiphelo.

Intengiselwano kukwenziwa okulandelelanayo kokufunda nokubhala imisebenzi. Ukuphela kwentengiselwano kukugcina utshintsho (ukuzinikela) okanye ukurhoxisa utshintsho (ukubuyisela umva). Ngokunxulumene nesiseko sedatha, intengiselwano iqulathe izicelo ezininzi ezithathwa njengesicelo esinye.

Iintengiselwano kufuneka zanelise iipropati ze-ACID

Iatomicity. Intengiselwano igqitywe ngokupheleleyo okanye hayi kwaphela.

Ukungqinelana. Xa ugqiba ukuthengiselana, izithintelo ezibekwe kwidatha (umzekelo, izithintelo kwiziko ledatha) akufanele ziphulwa. Ukungaguquguquki kuthetha ukuba inkqubo iya kudluliselwa ukusuka kwisimo esichanekileyo ukuya kwesinye esichanekileyo.

Ukubekwa wedwa. Ukuthengiselana okuhamba ngokuhambelanayo akufuneki kuchaphazele omnye nomnye, umzekelo, ukutshintsha idatha esetyenziswe yenye intengiselwano. Isiphumo sokwenziwa kweetransekshini ezihambelanayo kufuneka zifane nokuba iitransekshini zenziwe ngokulandelelanayo.

Uzinzo. Nje ukuba kwenziwe, utshintsho kufuneka lungalahleki.

Ilog yentengiselwano

Ilog igcina utshintsho olwenziwa yintengiselwano, iqinisekisa i-atomicity kunye nokuzinza kwedatha kwimeko yokungaphumeleli kwenkqubo.

Ilog iqulathe amaxabiso awayenawo idatha ngaphambili nasemva kokuba itshintshiwe yintengiselwano. Ukubhala kwangaphambili isicwangciso sokungena sifuna ukongeza ukungena kwelogi malunga namaxabiso angaphambili ngaphambi kokuqala, kunye namaxabiso okugqibela emva kokuba intengiselwano igqityiwe. Kwimeko yokuyeka ngokukhawuleza kwenkqubo, i-database ifunda i-log kwi-reverse order kwaye ikhansele utshintsho olwenziwe ngokuthengiselana. Emva kokuba udibane nentengiselwano ephazamisekileyo, i-database iyayenza kwaye yenza utshintsho malunga nayo kwilog. Ukuba kwimeko ngexesha lokungaphumeleli, i-database ifunda ilogi ngokulandelelana kwangaphambili kwaye ibuyisela utshintsho olwenziwe ngokuthengiselana. Ngale ndlela, ukuzinza kweentengiselwano esele zenziwe kwaye i-atomicity yentengiselwano ephazamisekileyo iyagcinwa.

Ukwenza nje iitransekshini ezisileleyo akwanelanga ukubuyisela.

Umzekelo. Umsebenzisi une-$ 500 kwi-akhawunti yakhe kwaye umsebenzisi unquma ukuyirhoxisa kwi-ATM. Iintengiselwano ezimbini ziyaqhubeka. Eyokuqala ifunda ixabiso lebhalansi kwaye ukuba kukho imali eyaneleyo kwi-balance, ikhupha imali kumsebenzisi. Owesibini uthabatha imali efunekayo kwibhalansi. Masithi inkqubo yantlitheka kwaye utyando lokuqala lwasilela, kodwa lwenzeka okwesibini. Kule meko, asikwazi ukuphinda sikhuphe imali kumsebenzisi ngaphandle kokubuyisela inkqubo kwisimo sayo sokuqala kunye nebhalansi efanelekileyo.

Amanqanaba e-insulation

Funda Uzibophelele

Ingxaki ye-Dirty Read kukuba intengiselwano inokufunda umphumo ophakathi wenye intengiselwano.

Umzekelo. Ixabiso lokuqala lebhalansi yi-$0. I-T1 yongeza i-$ 50 kwibhalansi yakho. I-T2 ifunda ixabiso lebhalansi (i-$ 50). I-T1 ilahla utshintsho kwaye iphume. I-T2 iyaqhubeka nokuphunyezwa kunye nedatha engachanekanga yebhalansi.

Isisombululo kukufunda idatha esisigxina (Funda uZibophelele), evimbela ukufunda idatha etshintshiweyo yintengiselwano. Ukuba i-transaction A itshintshile isethi ethile yedatha, ngoko-ke ukuthengiselana B, xa ufikelela kule datha, unyanzelekile ukuba ulinde ukuthengiselana A ukugqiba.

Funda kwakhona

Ingxaki yoHlaziyo olulahlekileyo. I-T1 igcina utshintsho ngaphezulu kweenguqu ze-T2.

Umzekelo. Ixabiso lokuqala lebhalansi yi-$0 kunye neentengiselwano ezimbini ngaxeshanye zizalise ibhalansi. I-T1 kunye ne-T2 zifunde ibhalansi ye-0 yeedola. T2 ke wongeza $200 ukuba $0 kwaye ugcine isiphumo. I-T1 yongeza i-$ 100 ukuya kwi-$0 kwaye igcina umphumo. Isiphumo sokugqibela yi-100 yeedola endaweni ye-300 yeedola.

Ingxaki yokufunda engenakuphinda. Ukufunda idatha efanayo ngokuphindaphindiweyo kubuyisela amaxabiso ahlukeneyo.

Umzekelo. I-T1 ifunde ibhalansi yexabiso le-$0. I-T2 ngoko yongeza i-$ 50 kwibhalansi kwaye iphele. U-T1 ufunda idatha kwakhona kwaye ufumana ukungafani nesiphumo sangaphambili.

Ukufunda okuphindaphindwayo kuqinisekisa ukuba ufundo lwesibini luya kubuya nesiphumo esifanayo. Idatha efundwe yintengiselwano enye ayinakuguqulwa kwabanye de kube kugqitywe ukuthengiselana. Ukuba i-transaction A ifunde isethi ethile yedatha, ke ukuthengiselana B, xa ufikelela kule datha, unyanzelekile ukuba ulinde ukuthengiselana A ukugqiba.

Ukufundwa okuodolweyo (kuSerializable)

Phantom Ifunda ingxaki. Imibuzo emibini ekhetha idatha esekelwe kwimeko ethile ibuyisela amaxabiso ahlukeneyo.

Umzekelo. I-T1 icela inani labo bonke abasebenzisi ababhalansi yabo ingaphezulu kwe-$0 kodwa ingaphantsi kwe-$100. I-T2 itsala i-$1 kumsebenzisi onebhalansi ye-101 yeedola. I-T1 iphinda ikhuphe isicelo.

Ukufundwa okuodolweyo (kuSerializable). Iintengiselwano zenziwa ngokulandelelana ngokupheleleyo. Akuvumelekanga ukuhlaziya okanye ukongeza iirekhodi eziwela phantsi kwemiqathango yesicelo. Ukuba intengiselwano A icele idata kwitheyibhile iyonke, itheyibhile iyonke iyamiswa ukwenzela ezinye iitransekshini de kugqitywe intengiselwano A.

Umcwangcisi

Iseta ulandelelwano ekufuneka lwenziwe ngalo imisebenzi ngexesha lentengiselwano ehambelanayo.

Ibonelela ngenqanaba elichaziweyo lokuzihlukanisa. Ukuba umphumo wemisebenzi awuxhomekeke kumyalelo wabo, ngoko ke imisebenzi enjalo iyatshintsha (Ivumelekile). Ukufunda imisebenzi kunye nokusebenza kwiidatha ezahlukeneyo kuyatshintsha. Imisebenzi yokufunda bhala kwaye bhala-bhala ayiguquki. Umsebenzi womcwangcisi kukudibanisa imisebenzi eyenziwa ziitransekshini ezinxuseneyo ukuze isiphumo sokwenziwa silingane nokwenziwa ngokulandelelana kweetransekshini.

Iindlela zokulawula imisebenzi enxuseneyo (Concurrency Control)

Ukuba nethemba kusekelwe ekuboneni nasekusombululeni iingxabano, ukungabi nathemba kusekelwe ekuthinteleni ukuvela kweengxabano.

Ngendlela enethemba, abasebenzisi abaninzi baneekopi zedatha abanayo. Umntu wokuqala ukugqiba ukuhlela ugcina utshintsho, ngelixa abanye kufuneka badibanise utshintsho. I-algorithm enethemba ivumela ungquzulwano ukuba lwenzeke, kodwa inkqubo kufuneka ibuyiselwe kungquzulwano.

Ngendlela yokuphelelwa ithemba, umsebenzisi wokuqala ukubamba idatha uthintela abanye ukuba bafumane idatha. Ukuba iingxabano zinqabile, kububulumko ukukhetha isicwangciso esinethemba, kuba sibonelela ngenqanaba eliphezulu lokuhambelana.

Ukutshixa

Ukuba enye intengiselwano ivaliwe idatha, ngoko ke ezinye iintengiselwano kufuneka zilinde de ivulwe xa ifikelela kwidatha.

Ibhloko inokugqunywa kwisiseko sedatha, itafile, umqolo, okanye uphawu. I-Lock ekwabelwana ngayo inokunyanzeliswa kwidatha efanayo ngeentengiselwano ezininzi, ivumela zonke iintengiselwano (kubandakanywa naloo nto ibekiweyo) ukuba ifunde, iyakwalela ukuguqulwa kunye nokubamba okukodwa. Isitshixo esiKhethekileyo sinokumiselwa yintengiselwano enye kuphela, ivumela naziphi na iintshukumo zentengiselwano ebekiweyo, ithintela naziphi na izenzo zabanye.

I-deadlock yimeko apho iintengiselwano ziphelela kwimeko elindileyo ehlala ingenasiphelo.

Umzekelo. I-transaction yokuqala ilindele ukuba idatha ebanjwe ngowesibini ikhutshwe, ngelixa okwesibini ilindele ukuba idatha efakwe kuqala ikhutshwe.

Isisombululo esinethemba kwingxaki ye-deadlock sivumela ukuba ideadlock yenzeke, kodwa emva koko ibuyise inkqubo ngokubuyisela umva enye yeentengiselwano ezibandakanyekayo kwi-deadlock.

Iideadlocks zikhangelwa ngamaxesha athile. Enye yeendlela zokufumanisa lixesha, oko kukuthi, cinga ukuba ukuvalwa kwenzekile ukuba intengiselwano ithatha ixesha elide ukuba igqitywe. Xa kuthe kwafunyaniswa ukuba ideadlock, enye yeentengiselwano ibuyiselwa umva, ivumela ezinye iitransekshini ezibandakanyekayo kwideadlock ukuba zigqitywe. Ukhetho lwexhoba lunokusekelwe kwixabiso leentengiselwano okanye ukuphakama kwabo (Linda-Die kunye ne-Wound-wait schemes).

Yonke intengiselwano T isitampu sexesha sabelwe TS equlathe ixesha lokuqala lentengiselwano.

Yima-Fa.

ukuba TS(Ti) < TS(Tj), ngoko Ti uyalinda, kungenjalo Ti iqengqeleka umva kwaye iqale kwakhona ngesitampu sexesha esifanayo.

Ukuba intengiselwano encinci ifumene isibonelelo kwaye intengiselwano endala icela isibonelelo esifanayo, ke intengiselwano endala ivunyelwe ukulinda. Ukuba intengiselwano endala ifumene isibonelelo, ke intengiselwano encinci ecela eso sibonelelo iya kubuyiselwa umva.

Inxeba-linda.

ukuba TS(Ti) < TS(Tj), ngoko Tj iqengqeleka umva kwaye iqale kwakhona ngesitampu sexesha esifanayo, kungenjalo Ti ukulinda.

Ukuba intengiselwano encinci ifumene isibonelelo kwaye intengiselwano endala icela isibonelelo esifanayo, intengiselwano encinci iya kubuyiselwa umva. Ukuba intengiselwano endala ifumene isibonelelo, ke intengiselwano encinci ecela loo vimba ivunyelwe ukuba ilinde. Ukukhetha ixhoba okusekwe ngaphambili kuthintela ukuvala, kodwa kubuyisela umva intengiselwano engakhange ivalwe. Ingxaki kukuba iintengiselwano zinokubuyiselwa umva amaxesha amaninzi kuba... intengiselwano endala inokubamba uvimba ixesha elide.

Isisombululo esingenathemba kwingxaki ye-deadlock asivumeli intengiselwano ukuba iqalise ukwenzeka ukuba kukho umngcipheko we-deadlock.

Ukubona i-deadlock, igrafu iyakhiwa (igrafu yokulinda, i-wait-for-graph), ii-vertices zazo ziyi-transactions, kwaye imida iqondiswe kwiintengiselwano ezilindele ukukhutshwa kwedatha kwi-transaction ethathe le datha. I-deadlock ithathwa ngokuba yenzekile ukuba igrafu ine-loop. Ukwakha igrafu yokulinda, ngakumbi kwiinkcukacha ezisasaziweyo, yinkqubo ebiza imali eninzi.

Ukutshixa kwamanqanaba amabini - kuthintela ukuvalwa ngokuthatha zonke izixhobo ezisetyenziswa yintengiselwano ekuqaleni kwentengiselwano kwaye uzikhulule ekugqibeleni.

Yonke imisebenzi yokuvala kufuneka yandulele eyokuqala yokuvula. Inezigaba ezibini - iSigaba sokuKhula, ngexesha apho ii-grips ziqokelelana, kunye neSigaba sokuHlukana, ngexesha apho ii-grips zikhululwa. Ukuba akunakwenzeka ukubamba enye yezibonelelo, intengiselwano iqala phantsi. Kunokwenzeka ukuba intengiselwano ayiyi kukwazi ukufumana izibonelelo ezifunekayo, umzekelo, ukuba iintengiselwano ezininzi zikhuphisana ngezibonelelo ezifanayo.

Isibophelelo sezigaba ezibini siqinisekisa ukuba ukuzibophelela kuyenziwa kuzo zonke iikopi zedatha

I-database nganye ifaka ulwazi malunga nedatha eya kutshintshwa kwilogi kwaye iphendule kumququzeleli OK (iSigaba sokuvota). Emva kokuba wonke umntu ephendule ngokuthi Kulungile, umnxibelelanisi uthumela umqondiso obophelela wonke umntu ukuba azibophelele. Emva kokwenza, abancedisi baphendula ngokuthi Kulungile, ukuba ubuncinane omnye akaphenduli Kulungile, ngoko umnxibelelanisi uthumela umqondiso ukurhoxisa utshintsho kuzo zonke iiseva (iSigaba sokuQeda).

Indlela yesitampu sexesha

Intengiselwano endala ibuyiselwa umva xa uzama ukufikelela kwidatha ebandakanyekayo kwintengiselwano encinci

Intengiselwano nganye inikwe isitampu sexesha TS ehambelana nexesha lokuqala lokuphumeza. Ukuba Ti mdala Tj, ngoko TS(Ti) < TS(Tj).

Xa intengiselwano ibuyiselwa umva, inikwa isitampu sexesha esitsha. Into nganye yedatha Q obandakanyekayo kwintengiselwano iphawulwe ngeeleyibhile ezimbini. I-W-TS(Q) - isitampu sexesha sentengiselwano encinci egqibe ngempumelelo irekhodi ngaphezulu Q. R-TS(Q) β€” isitampu sexesha yeyona ntengiselwano incinci eyenza irekhodi efundiweyo Q.

Xa intengiselwano T izicelo zokufunda idatha Q Zimbini iinketho.

ukuba TS(T) < I-W-TS(Q), oko kukuthi, idatha yahlaziywa yi-transaction encinci, emva koko i-transaction T iqengqeleka umva.

ukuba TS(T) >= I-W-TS(Q), emva koko ufundo lwenziwe kwaye R-TS(Q) iya kuba MAX(R-TS(Q), TS(T)).

Xa intengiselwano T icela utshintsho lwedatha Q Zimbini iinketho.

ukuba TS(T) < R-TS(Q), oko kukuthi, idatha sele ifundwe yintengiselwano encinci kwaye ukuba utshintsho lwenziwe, ingxabano iya kuvela. Intengiselwano T iqengqeleka umva.

ukuba TS(T) < I-W-TS(Q), oko kukuthi, intengiselwano izama ukubhala ngaphezulu ixabiso elitsha, intengiselwano T ibuyiselwe umva. Kwezinye iimeko, utshintsho lwenziwa kwaye I-W-TS(Q) iyalingana TS(T).

Akukho kwakhiwa kwegrafu yokulinda ebiza imali eninzi efunekayo. Iintengiselwano ezindala zixhomekeke kwintsha, ngoko akukho mijikelo kwigrafu yokulinda. Akukho zidekile ngoba intengiselwano ayilindwa kodwa ibuyiselwe umva kwangoko. I-Cascading rollbacks inokwenzeka. Ukuba Ti yaqengqeleka, kwaye Tj Ndafunda idata endiyitshintshileyo Ti, ngoko Tj kufuneka kwakhona ubuye umva. Ukuba ngaxeshanye Tj sele yenziwe, ngoko kuya kubakho ukuphulwa komgaqo wozinzo.

Esinye sezisombululo kwi-cascading rollbacks. Itransekshini igqibezela yonke imisebenzi yokubhala ekupheleni, kwaye ezinye iitransekshini kufuneka zilinde ukuba umsebenzi ugqitywe. Iintengiselwano zilinda ukwenziwa ngaphambi kokuba zifundwe.

UTomas ubhala umthetho-ukwahluka kwendlela yesitampu sexesha apho idatha ehlaziywayo yintengiselwano encinci ithintelwe ukuba ingabhalwa ngaphezulu ngumntu omdala.

Intengiselwano T icela utshintsho lwedatha Q. ukuba TS(T) < I-W-TS(Q), oko kukuthi, intengiselwano izama ukubhala ngaphezulu ixabiso elitsha, intengiselwano T ayibuyiselwa umva njengendlela yesitampu sexesha.

umthombo: www.habr.com

Yongeza izimvo