Tranżazzjonijiet u l-mekkaniżmi ta' kontroll tagħhom

Tranżazzjonijiet

Tranżazzjoni hija sekwenza ta' operazzjonijiet fuq data li għandha bidu u tmiem.

Tranżazzjoni hija l-eżekuzzjoni sekwenzjali ta 'operazzjonijiet ta' qari u kitba. It-tmiem ta 'tranżazzjoni jista' jkun jew issalva l-bidliet (commit) jew tikkanċella l-bidliet (rollback). Fir-rigward ta' database, tranżazzjoni tikkonsisti f'diversi talbiet li huma ttrattati bħala talba waħda.

It-tranżazzjonijiet għandhom jissodisfaw proprjetajiet ACID

Atomiċità. It-tranżazzjoni jew titlesta kompletament jew xejn.

Konsistenza. Meta titlesta tranżazzjoni, ir-restrizzjonijiet imposti fuq id-dejta (pereżempju, restrizzjonijiet fid-database) m'għandhomx jinkisru. Il-konsistenza timplika li s-sistema se tiġi trasferita minn stat korrett għal stat korrett ieħor.

Iżolament. Tranżazzjonijiet li jsiru b'mod parallel m'għandhomx jinfluwenzaw lil xulxin, pereżempju, jibdlu d-dejta użata minn tranżazzjoni oħra. Ir-riżultat tal-eżekuzzjoni ta' tranżazzjonijiet paralleli għandu jkun l-istess bħallikieku t-tranżazzjonijiet kienu esegwiti b'mod sekwenzjali.

Sostenibbiltà. Ladarba jiġu impenjati, il-bidliet m'għandhomx jintilfu.

Log tat-tranżazzjonijiet

Ir-reġistru jaħżen il-bidliet li saru mit-tranżazzjonijiet, jiżgura l-atomiċità u l-istabbiltà tad-dejta fil-każ ta’ ħsara fis-sistema

Ir-reġistru fih il-valuri li d-dejta kellha qabel u wara li nbidlet bit-tranżazzjoni. L-istrateġija tal-log tal-kitba bil-quddiem teħtieġ li żżid entrata tal-log dwar il-valuri preċedenti qabel il-bidu, u dwar il-valuri finali wara li titlesta t-tranżazzjoni. Fil-każ ta 'waqfien f'daqqa tas-sistema, id-database taqra l-log f'ordni inversa u tikkanċella l-bidliet magħmula mit-tranżazzjonijiet. Wara li ltaqgħet ma 'tranżazzjoni interrotta, id-database tesegwixxiha u tagħmel bidliet dwarha fir-reġistru. Billi tkun fl-istat fil-ħin tal-falliment, id-database taqra l-log f'ordni 'l quddiem u tirritorna l-bidliet magħmula mit-tranżazzjonijiet. B'dan il-mod, l-istabbiltà tat-tranżazzjonijiet li diġà ġew kommessi u l-atomiċità tat-tranżazzjoni interrotta huma ppreservati.

Sempliċement twettiq mill-ġdid ta' tranżazzjonijiet falluti mhuwiex biżżejjed għall-irkupru.

Eżempju. L-utent għandu $500 fil-kont tiegħu u l-utent jiddeċiedi li jirtirah minn ATM. Żewġ tranżazzjonijiet għaddejjin. L-ewwel wieħed jaqra l-valur tal-bilanċ u jekk ikun hemm biżżejjed fondi fuq il-bilanċ, joħroġ flus lill-utent. It-tieni jnaqqas l-ammont meħtieġ mill-bilanċ. Ejja ngħidu li s-sistema ġġarraf u l-ewwel operazzjoni falliet, iżda t-tieni għamlet. F'dan il-każ, ma nistgħux nerġgħu noħorġu flus lill-utent mingħajr ma nirritornaw is-sistema għall-istat oriġinali tagħha b'bilanċ pożittiv.

Livelli ta 'insulazzjoni

Aqra Impenjata

Il-problema Dirty Read hija li tranżazzjoni tista 'taqra r-riżultat intermedju ta' tranżazzjoni oħra.

Eżempju. Il-valur tal-bilanċ inizjali huwa $0. T1 iżid $50 mal-bilanċ tiegħek. T2 jaqra l-valur tal-bilanċ ($50). T1 jarmi l-bidliet u l-ħruġ. T2 ikompli l-eżekuzzjoni b'dejta tal-bilanċ mhux korretta.

Is-soluzzjoni hija li taqra data fissa (Read Committed), li tipprojbixxi l-qari tad-data mibdula mit-tranżazzjoni. Jekk it-tranżazzjoni A bidlet ċertu sett ta 'dejta, allura t-tranżazzjoni B, meta taċċessa din id-dejta, hija sfurzata tistenna li t-tranżazzjoni A titlesta.

Aqra Ripetibbli

Problema ta' Aġġornamenti mitlufa. T1 isalva l-bidliet fuq il-bidliet ta' T2.

Eżempju. Il-valur tal-bilanċ inizjali huwa $ 0 u żewġ tranżazzjonijiet simultanjament jimlew il-bilanċ. T1 u T2 jaqraw bilanċ ta '$0. T2 imbagħad iżid $200 għal $0 u jiffranka r-riżultat. T1 iżid $100 għal $0 u jiffranka r-riżultat. Ir-riżultat finali huwa $100 minflok $300.

Problema ta' qari mhux ripetibbli. Il-qari tal-istess dejta ripetutament jirritorna valuri differenti.

Eżempju. T1 jaqra valur tal-bilanċ ta '$0. T2 imbagħad iżid $50 mal-bilanċ u jispiċċa. T1 jerġa’ jaqra d-dejta u jsib diskrepanza mar-riżultat preċedenti.

Il-Qari Ripetibbli jiżgura li t-tieni qari jagħti l-istess riżultat. Id-dejta li tinqara minn tranżazzjoni waħda ma tistax tinbidel f'oħrajn sakemm titlesta t-tranżazzjoni. Jekk it-tranżazzjoni A qrat ċertu sett ta 'dejta, allura t-tranżazzjoni B, meta taċċessa din id-dejta, hija sfurzata tistenna li t-tranżazzjoni A titlesta.

Qari ordnat (Serializable)

Phantom Qari problema. Żewġ mistoqsijiet li jagħżlu data bbażata fuq ċerta kundizzjoni jirritornaw valuri differenti.

Eżempju. T1 jitlob in-numru tal-utenti kollha li l-bilanċ tagħhom huwa akbar minn $0 iżda inqas minn $100. T2 inaqqas $1 minn utent b'bilanċ ta' $101. T1 jerġa' joħroġ it-talba.

Qari ordnat (Serializable). It-tranżazzjonijiet huma esegwiti bħala kompletament sekwenzjali. Huwa pprojbit li jiġu aġġornati jew miżjuda rekords li jaqgħu taħt it-termini tat-talba. Jekk it-tranżazzjoni A talbet dejta mit-tabella kollha, allura t-tabella kollha tiġi ffriżata għal tranżazzjonijiet oħra sakemm titlesta t-tranżazzjoni A.

Scheduler

Jissettja l-ordni li fiha l-operazzjonijiet għandhom jitwettqu waqt tranżazzjonijiet paralleli.

Jipprovdi livell speċifikat ta 'iżolament. Jekk ir-riżultat tal-operazzjonijiet ma jiddependix fuq l-ordni tagħhom, allura tali operazzjonijiet huma kommutattivi (Permutabbli). Operazzjonijiet ta' qari u operazzjonijiet fuq data differenti huma kommutattivi. Operazzjonijiet ta' qari-kitba u kitba-kitba mhumiex kommutattivi. Il-kompitu ta 'l-iskeduler huwa li interleave operazzjonijiet imwettqa minn transazzjonijiet paralleli sabiex ir-riżultat ta' eżekuzzjoni jkun ekwivalenti għal eżekuzzjoni sekwenzjali ta 'tranżazzjonijiet.

Mekkaniżmi għall-kontroll ta' impjiegi paralleli (Kontroll tal-Konkorrenza)

Ottimistiku huwa bbażat fuq l-iskoperta u s-soluzzjoni ta 'kunflitti, pessimistiku huwa bbażat fuq il-prevenzjoni ta' kunflitti milli jinqalgħu.

Fl-approċċ ottimist, utenti multipli għandhom kopji tad-dejta għad-dispożizzjoni tagħhom. L-ewwel persuna li tlesti l-editjar issalva l-bidliet, filwaqt li l-oħrajn għandhom jingħaqdu l-bidliet. Algoritmu ottimista jippermetti li jseħħ kunflitt, iżda s-sistema trid tirkupra mill-kunflitt.

B'approċċ pessimistiku, l-ewwel utent li jaqbad id-dejta jipprevjeni lill-oħrajn milli jirċievu d-dejta. Jekk il-kunflitti huma rari, huwa għaqli li tagħżel l-istrateġija ottimista, peress li tipprovdi livell ogħla ta 'konkorrenza.

Qfil

Jekk tranżazzjoni waħda għandha data msakkra, allura tranżazzjonijiet oħra jridu jistennew sakemm tinfetaħ meta jaċċessaw id-data.

Blokk jista' jkun overlaid fuq database, tabella, ringiela, jew attribut. Shared Lock jista 'jiġi impost fuq l-istess dejta minn diversi tranżazzjonijiet, jippermetti li t-tranżazzjonijiet kollha (inkluż dak li imponietha) jinqraw, jipprojbixxi l-modifika u l-qbid esklussiv. Lock Esklussiv jista 'jiġi impost minn tranżazzjoni waħda biss, jippermetti kwalunkwe azzjoni tat-tranżazzjoni li timponi, jipprojbixxi kwalunkwe azzjoni minn oħrajn.

Deadlock hija sitwazzjoni fejn it-tranżazzjonijiet jispiċċaw fi stat pendenti li jdum indefinittivament.

Eżempju. L-ewwel tranżazzjoni tistenna li d-dejta maqbuda mit-tieni tiġi rilaxxata, filwaqt li t-tieni tistenna li d-dejta maqbuda mill-ewwel tiġi rilaxxata.

Soluzzjoni ottimista għall-problema tal-imblokk tippermetti li sseħħ l-imblokk, iżda mbagħad tirkupra s-sistema billi tirreġġa' lura waħda mit-tranżazzjonijiet involuti fl-imblokk.

Deadlocks huma mfittxija f'ċerti intervalli. Wieħed mill-metodi ta 'skoperta huwa biż-żmien, jiġifieri, ikkunsidra li jkun seħħ staġnar jekk it-tranżazzjoni tieħu wisq żmien biex titlesta. Meta jinstab staġnar, waħda mit-tranżazzjonijiet tiġi rritornata, u tippermetti li jitlestew transazzjonijiet oħra involuti fl-imblokk. L-għażla tal-vittma tista' tkun ibbażata fuq il-valur tat-tranżazzjonijiet jew l-anzjanità tagħhom (skemi Wait-Die u Wound-wait).

Kull transazzjoni T jiġi assenjat timestamp TS li jkun fih il-ħin tal-bidu tat-tranżazzjoni.

Stenna-Imutu.

Jekk TS(Ti) < TS(Tj), Imbagħad Ti jistenna, inkella Ti jmur lura u jerġa' jibda bl-istess timestamp.

Jekk tranżazzjoni żagħżugħa tkun akkwistat riżorsa u tranżazzjoni eqdem titlob l-istess riżors, allura t-tranżazzjoni l-antika titħalla tistenna. Jekk tranżazzjoni eqdem tkun akkwistat riżorsa, allura t-tranżazzjoni iżgħar li titlob dik ir-riżors tiġi rtirata lura.

Ferita-stenna.

Jekk TS(Ti) < TS(Tj), Imbagħad Tj jmur lura u jerġa' jibda bl-istess timestamp, inkella Ti stennija.

Jekk tranżazzjoni iżgħar tkun akkwistat riżors u tranżazzjoni eqdem titlob l-istess riżors, allura t-tranżazzjoni iżgħar tiġi rtirata lura. Jekk tranżazzjoni eqdem tkun akkwistat riżorsa, allura t-tranżazzjoni iżgħar li titlob dik ir-riżors titħalla tistenna. L-għażla tal-vittma bbażata fuq il-preċedenza tipprevjeni l-imblokk, iżda tirrollera tranżazzjonijiet li mhumiex imblokkati. Il-problema hija li t-tranżazzjonijiet jistgħu jiġu rtirati ħafna drabi minħabba li... tranżazzjoni eqdem tista' żżomm ir-riżors għal żmien twil.

Soluzzjoni pessimista għall-problema tal-imblokk ma tippermettix li tranżazzjoni tibda teżegwixxi jekk ikun hemm riskju ta’ staġnar.

Biex tiskopri deadlock, tinbena graff (waiting graph, wait-for-graph), li l-vertiċi tagħhom huma tranżazzjonijiet, u t-truf huma diretti minn tranżazzjonijiet li qed jistennew ir-rilaxx tad-dejta għat-tranżazzjoni li tkun qabdet din id-dejta. Deadlock jitqies li seħħ jekk il-graff ikollu loop. Il-bini ta' graff ta' stennija, speċjalment f'databases distribwiti, hija proċedura għalja.

L-illokkjar f'żewġ fażijiet - jipprevjeni l-imblokk billi jaħtaf ir-riżorsi kollha użati minn tranżazzjoni fil-bidu tat-tranżazzjoni u jerħihom fl-aħħar

L-operazzjonijiet kollha tal-imblukkar għandhom jippreċedu l-ewwel waħda tal-ftuħ. Għandu żewġ fażijiet - Growing Phase, li matulha jakkumulaw l-imqabad, u Shrinking Phase, li matulha jinħelsu l-imqabad. Jekk ikun impossibbli li tinqabad waħda mir-riżorsi, it-tranżazzjoni tibda mill-ġdid. Huwa possibbli li tranżazzjoni ma tkunx tista' takkwista r-riżorsi meħtieġa, pereżempju, jekk diversi tranżazzjonijiet jikkompetu għall-istess riżorsi.

Commit f'żewġ fażijiet jiżgura li l-kommit jiġi esegwit fuq ir-repliki tad-database kollha

Kull database ddaħħal informazzjoni dwar id-dejta li se tinbidel fil-log u twieġeb lill-koordinatur OK (Fażi tal-Votazzjoni). Wara li kulħadd ikun wieġeb OK, il-koordinatur jibgħat sinjal li jobbliga lil kulħadd jimpenja ruħu. Wara li jikkommettu, is-servers jirrispondu OK jekk mill-inqas wieħed ma jirrispondix OK, allura l-koordinatur jibgħat sinjal biex jikkanċella l-bidliet għas-servers kollha (Fażi ta 'Tlestija).

Metodu ta' timestamp

Tranżazzjoni eqdem tiġi rritornata meta tipprova taċċessa dejta involuta minn tranżazzjoni iżgħar

Kull transazzjoni hija assenjata timestamp TS li jikkorrispondi mal-ħin tal-bidu tal-eżekuzzjoni. Jekk Ti anzjani Tj, Imbagħad TS(Ti) < TS(Tj).

Meta tranżazzjoni tiġi rritornata, tiġi assenjata timestamp ġdid. Kull oġġett tad-data Q involut fit-tranżazzjoni huwa mmarkat b'żewġ tikketti. W-TS(Q) — it-timbru taż-żmien tal-iżgħar tranżazzjoni li lestiet rekord b'suċċess Q. R-TS(Q) — timestamp tal-iżgħar tranżazzjoni li wettqet rekord tal-qari fuqha Q.

Meta t-tranżazzjoni T talbiet biex taqra data Q Hemm żewġ għażliet.

Jekk TS(T) < W-TS(Q), jiġifieri, id-dejta ġiet aġġornata minn tranżazzjoni iżgħar, imbagħad it-tranżazzjoni T rollijiet lura.

Jekk TS(T) >= W-TS(Q), imbagħad isir il-qari u R-TS(Q) qed isir MAX(R-TS(Q), TS(T)).

Meta t-tranżazzjoni T jitlob bidliet fid-dejta Q Hemm żewġ għażliet.

Jekk TS(T) < R-TS(Q), jiġifieri, id-dejta diġà nqrat minn tranżazzjoni iżgħar u jekk issir bidla, jinqala' kunflitt. Transazzjoni T rollijiet lura.

Jekk TS(T) < W-TS(Q), jiġifieri, it-tranżazzjoni tipprova tissostitwixxi valur aktar ġdid, it-tranżazzjoni T tiġi rritornata. F'każijiet oħra, il-bidla titwettaq u W-TS(Q) isir ugwali TS(T).

L-ebda kostruzzjoni ta 'grafika ta' stennija għalja hija meħtieġa. Tranżazzjonijiet eqdem jiddependu fuq oħrajn ġodda, għalhekk m'hemm l-ebda ċikli fil-grafika ta 'stennija. M'hemm l-ebda deadlocks minħabba li t-tranżazzjonijiet ma jiġux stennija iżda jiġu rtirati lura immedjatament. Rollbacks kaskati huma possibbli. Jekk Ti rolled bogħod, u Tj Qrajt id-dejta li bdilt Ti, Imbagħad Tj għandu wkoll jinqaleb lura. Jekk fl-istess ħin Tj diġà ġie kommess, allura se jkun hemm ksur tal-prinċipju ta 'stabbiltà.

Waħda mis-soluzzjonijiet għal rollbacks cascading. Tranżazzjoni tlesti l-operazzjonijiet kollha tal-kitba fl-aħħar, u tranżazzjonijiet oħra jridu jistennew li dik l-operazzjoni titlesta. It-tranżazzjonijiet jistennew li jiġu kommessi qabel ma jinqraw.

Ir-regola tal-kitba ta’ Thomas - varjazzjoni tal-metodu tat-timbru taż-żmien li fih id-dejta aġġornata minn tranżazzjoni iżgħar hija pprojbita milli tinkiteb mill-ġdid minn waħda anzjani

transazzjoni T jitlob bidliet fid-dejta Q. Jekk TS(T) < W-TS(Q), jiġifieri, it-tranżazzjoni tipprova tissostitwixxi valur aktar ġdid, it-tranżazzjoni T ma tiġix irrumblata lura bħal fil-metodu tat-timestamp.

Sors: www.habr.com

Żid kumment