Trafodion a'u mecanweithiau rheoli

Trafodiad

Mae trafodiad yn ddilyniant o weithrediadau ar ddata sydd â dechrau a diwedd.

Trafodiad yw cyflawni gweithrediadau darllen ac ysgrifennu yn ddilyniannol. Gall diwedd trafodiad olygu naill ai arbed y newidiadau (ymrwymo) neu ganslo'r newidiadau (rhoi'n ôl). Mewn perthynas â chronfa ddata, mae trafodiad yn cynnwys nifer o geisiadau sy'n cael eu trin fel un cais.

Rhaid i drafodion fodloni eiddo ACID

Atomity. Mae'r trafodiad naill ai wedi'i gwblhau'n gyfan gwbl neu ddim o gwbl.

Cysondeb. Wrth gwblhau trafodiad, ni ddylid torri'r cyfyngiadau a osodir ar y data (er enghraifft, cyfyngiadau yn y gronfa ddata). Mae cysondeb yn awgrymu y bydd y system yn cael ei throsglwyddo o un cyflwr cywir i gyflwr cywir arall.

Ynysu. Ni ddylai trafodion sy'n rhedeg yn gyfochrog ddylanwadu ar ei gilydd, er enghraifft, newid data a ddefnyddir gan drafodiad arall. Dylai canlyniad cyflawni trafodion cyfochrog fod yr un fath â phe bai'r trafodion yn cael eu cyflawni'n ddilyniannol.

Cynaladwyedd. Unwaith y byddant wedi'u hymrwymo, ni ddylid colli newidiadau.

Log trafodion

Mae'r log yn storio newidiadau a wneir gan drafodion, yn sicrhau atomigedd a sefydlogrwydd data pe bai system yn methu

Mae'r log yn cynnwys y gwerthoedd a oedd gan y data cyn ac ar ôl iddo gael ei newid gan y trafodiad. Mae strategaeth log ysgrifennu ymlaen yn gofyn am ychwanegu cofnod log am werthoedd blaenorol cyn y cychwyn, ac am werthoedd terfynol ar ôl i'r trafodiad gael ei gwblhau. Os bydd y system yn dod i ben yn sydyn, mae'r gronfa ddata yn darllen y log yn y drefn wrthdroi ac yn canslo'r newidiadau a wneir gan drafodion. Ar ôl dod ar draws trafodiad y torrwyd arno, mae'r gronfa ddata yn ei weithredu ac yn gwneud newidiadau yn ei gylch i'r log. Gan ei bod yn y cyflwr ar adeg y methiant, mae'r gronfa ddata yn darllen y log ymlaen llaw ac yn dychwelyd y newidiadau a wnaed gan drafodion. Fel hyn, cedwir sefydlogrwydd trafodion sydd eisoes wedi'u hymrwymo ac atomigedd y trafodiad a amharwyd.

Yn syml, nid yw ail-weithredu trafodion a fethwyd yn ddigon ar gyfer adennill.

Enghraifft. Mae gan y defnyddiwr $500 yn ei gyfrif ac mae'r defnyddiwr yn penderfynu ei dynnu o beiriant ATM. Mae dau drafodiad ar y gweill. Mae'r un cyntaf yn darllen y gwerth balans ac os oes digon o arian ar y balans, mae'n rhoi arian i'r defnyddiwr. Mae'r ail yn tynnu'r swm gofynnol o'r balans. Dywedwch fod y system wedi damwain a methodd y llawdriniaeth gyntaf, ond fe wnaeth yr ail. Yn yr achos hwn, ni allwn ail-anfon arian i'r defnyddiwr heb ddychwelyd y system i'w gyflwr gwreiddiol gyda chydbwysedd cadarnhaol.

Lefelau inswleiddio

Darllen Wedi Ymrwymo

Y broblem Dirty Read yw y gall trafodiad ddarllen canlyniad canolraddol trafodiad arall.

Enghraifft. Y gwerth balans cychwynnol yw $0. Mae T1 yn ychwanegu $50 at eich balans. Mae T2 yn darllen y gwerth balans ($50). Mae T1 yn taflu'r newidiadau a'r allanfeydd. Mae T2 yn parhau i gael ei weithredu gyda data cydbwysedd anghywir.

Yr ateb yw darllen data sefydlog (Read Committed), sy'n gwahardd darllen data a newidiwyd gan y trafodiad. Os yw trafodiad A wedi newid set benodol o ddata, yna mae trafodiad B, wrth gyrchu'r data hwn, yn cael ei orfodi i aros i drafodiad A ei gwblhau.

Darlleniad Ailadroddadwy

Problem Diweddariadau Coll. Mae T1 yn arbed newidiadau ar ben newidiadau T2.

Enghraifft. Y gwerth balans cychwynnol yw $0 ac mae dau drafodiad yn ailgyflenwi'r balans ar yr un pryd. Mae T1 a T2 yn darllen balans o $0. Yna mae T2 yn ychwanegu $200 i $0 ac yn arbed y canlyniad. Mae T1 yn ychwanegu $100 i $0 ac yn arbed y canlyniad. Y canlyniad terfynol yw $100 yn lle $300.

Problem darllen na ellir ei hailadrodd. Mae darllen yr un data dro ar ôl tro yn dychwelyd gwerthoedd gwahanol.

Enghraifft. Mae T1 yn darllen gwerth balans o $0. Yna mae T2 yn ychwanegu $50 at y balans ac yn gorffen. Mae T1 yn darllen y data eto ac yn canfod anghysondeb gyda'r canlyniad blaenorol.

Mae Darllen Ailadroddadwy yn sicrhau y bydd ail ddarlleniad yn dychwelyd yr un canlyniad. Ni ellir newid data a ddarllenir gan un trafodiad mewn eraill nes bod y trafodiad wedi'i gwblhau. Os yw trafodiad A wedi darllen set benodol o ddata, yna mae trafodiad B, wrth gyrchu'r data hwn, yn cael ei orfodi i aros i drafodiad A ei gwblhau.

Darlleniad wedi'i archebu (Cyfresi)

Problem Phantom Reads. Mae dau ymholiad sy'n dewis data yn seiliedig ar gyflwr penodol yn dychwelyd gwerthoedd gwahanol.

Enghraifft. Mae T1 yn gofyn am nifer yr holl ddefnyddwyr y mae eu balans yn fwy na $0 ond yn llai na $100. Mae T2 yn didynnu $1 oddi wrth ddefnyddiwr gyda balans o $101. Mae T1 yn ailgyhoeddi'r cais.

Darlleniad wedi'i archebu (Serializable). Gweithredir trafodion fel rhai cwbl ddilyniannol. Gwaherddir diweddaru neu ychwanegu cofnodion sy'n dod o fewn telerau'r cais. Os yw trafodiad A wedi gofyn am ddata o'r tabl cyfan, yna caiff y tabl cyfan ei rewi ar gyfer trafodion eraill nes bod trafodiad A wedi'i gwblhau.

Trefnydd

Yn gosod y drefn y dylid cyflawni gweithrediadau yn ystod trafodion cyfochrog.

Yn darparu lefel benodol o ynysu. Os nad yw canlyniad gweithrediadau yn dibynnu ar eu trefn, yna mae gweithrediadau o'r fath yn gymudol (Permutable). Mae gweithrediadau darllen a gweithrediadau ar wahanol ddata yn gymudol. Nid yw gweithrediadau darllen-ysgrifennu ac ysgrifennu yn gymudol. Tasg y trefnydd yw rhyngddalennu gweithrediadau a gyflawnir gan drafodion cyfochrog fel bod canlyniad cyflawni yn gyfwerth â chyflawni trafodion yn ddilyniannol.

Mecanweithiau ar gyfer rheoli swyddi cyfochrog (Rheoli Arian Cyfred)

Mae optimistaidd yn seiliedig ar ganfod a datrys gwrthdaro, mae besimistaidd yn seiliedig ar atal gwrthdaro rhag codi.

Yn y dull optimistaidd, mae gan ddefnyddwyr lluosog gopïau o'r data sydd ar gael iddynt. Mae'r person cyntaf i gwblhau golygu yn arbed y newidiadau, tra bod yn rhaid i'r lleill uno'r newidiadau. Mae algorithm optimistaidd yn caniatáu i wrthdaro ddigwydd, ond rhaid i'r system adennill o'r gwrthdaro.

Gydag ymagwedd besimistaidd, mae'r defnyddiwr cyntaf i gasglu'r data yn atal eraill rhag derbyn y data. Os yw gwrthdaro yn brin, mae'n ddoeth dewis y strategaeth optimistaidd, gan ei bod yn darparu lefel uwch o arian cyfred.

Cloi

Os yw un trafodiad wedi cloi data, yna rhaid i drafodion eraill aros nes iddo gael ei ddatgloi wrth gyrchu'r data.

Gellir troshaenu bloc ar gronfa ddata, tabl, rhes, neu briodoledd. Gellir gosod Clo a Rennir ar yr un data gan nifer o drafodion, mae'n caniatáu i'r holl drafodion (gan gynnwys yr un a'i gosododd) ddarllen, yn gwahardd addasu a dal unigryw. Gall Lock Unigryw yn cael ei osod gan dim ond un trafodiad, yn caniatáu unrhyw gamau gweithredu y trafodiad gosod, yn gwahardd unrhyw gamau gweithredu gan eraill.

Mae sefyllfa ddiddatrys yn sefyllfa lle mae trafodion yn y pen draw mewn cyflwr yr arfaeth sy'n para am gyfnod amhenodol.

Enghraifft. Mae'r trafodiad cyntaf yn aros i'r data a ddaliwyd gan yr ail gael ei ryddhau, tra bod yr ail yn aros i'r data a gipiwyd gan y cyntaf gael ei ryddhau.

Mae ateb optimistaidd i'r broblem cloi yn caniatáu i'r sefyllfa ddiddatrys ddigwydd, ond yna'n adennill y system trwy rolio un o'r trafodion sy'n gysylltiedig â'r terfyn amser yn ôl.

Chwilir am gloeon cau ar adegau penodol. Un o'r dulliau canfod yw yn ôl amser, hynny yw, ystyriwch fod diffyg cloi wedi digwydd os yw'r trafodiad yn cymryd gormod o amser i'w gwblhau. Pan ddarganfyddir terfyn amser, mae un o'r trafodion yn cael ei dreiglo'n ôl, gan ganiatáu i drafodion eraill sy'n gysylltiedig â'r terfyn amser gael eu cwblhau. Gall y dewis o ddioddefwr fod yn seiliedig ar werth trafodion neu eu hynafedd (cynlluniau Wait-Die a Wound-wait).

Pob trafodiad T mae stamp amser yn cael ei neilltuo TS yn cynnwys amser cychwyn y trafodiad.

Aros-Die.

Os TS(Ti) < TS(Tj), Yna Ti aros, fel arall Ti yn rholio yn ôl ac yn dechrau eto gyda'r un stamp amser.

Os yw trafodiad ifanc wedi caffael adnodd a bod trafodiad hŷn yn gofyn am yr un adnodd, yna caniateir i'r trafodiad hŷn aros. Os yw trafodiad hŷn wedi caffael adnodd, yna bydd y trafodiad iau sy’n gofyn am yr adnodd hwnnw’n cael ei dreiglo’n ôl.

Clwyf-aros.

Os TS(Ti) < TS(Tj), Yna Tj yn rholio yn ôl ac yn dechrau eto gyda'r un stamp amser, fel arall Ti aros.

Os yw trafodiad iau wedi caffael adnodd a bod trafodiad hŷn yn gofyn am yr un adnodd, yna bydd y trafodiad iau yn cael ei dreiglo’n ôl. Os yw trafodiad hŷn wedi caffael adnodd, yna caniateir i’r trafodiad iau sy’n gofyn am yr adnodd hwnnw aros. Mae dewis dioddefwyr ar sail blaenoriaeth yn atal achosion o gloi, ond yn dychwelyd trafodion nad ydynt wedi'u cloi. Y broblem yw y gall trafodion gael eu dychwelyd droeon oherwydd... gall trafodiad hŷn ddal yr adnodd am amser hir.

Nid yw ateb pesimistaidd i'r broblem cloi yn caniatáu i drafodiad ddechrau gweithredu os oes risg o ddiffyg cloi.

Er mwyn canfod datgloi, mae graff yn cael ei adeiladu (graff aros, aros-am-graff), y mae ei fertigau yn drafodion, ac mae'r ymylon yn cael eu cyfeirio o drafodion sy'n aros am ryddhau data i'r trafodiad sydd wedi dal y data hwn. Ystyrir bod datgloi wedi digwydd os oes gan y graff ddolen. Mae llunio graff aros, yn enwedig mewn cronfeydd data dosranedig, yn weithdrefn ddrud.

Cloi dau gam - yn atal datgloi trwy atafaelu'r holl adnoddau a ddefnyddir gan drafodiad ar ddechrau'r trafodiad a'u rhyddhau ar y diwedd

Rhaid i bob gweithrediad blocio ddod o flaen yr un datgloi cyntaf. Mae ganddo ddau gam - Cyfnod Tyfu, pan fydd y gafaelion yn cronni, a'r Cyfnod Crebachu, pan fydd y gafaelion yn cael eu rhyddhau. Os yw'n amhosibl dal un o'r adnoddau, mae'r trafodiad yn dechrau drosodd. Mae’n bosibl na fydd trafodiad yn gallu caffael yr adnoddau gofynnol, er enghraifft, os bydd sawl trafodiad yn cystadlu am yr un adnoddau.

Mae ymrwymiad dau gam yn sicrhau bod yr ymrwymiad yn cael ei weithredu ar bob copi o'r gronfa ddata

Mae pob cronfa ddata yn mewnbynnu gwybodaeth am y data a fydd yn cael ei newid i'r log ac yn ymateb i'r cydlynydd OK (Cyfnod Pleidleisio). Ar ôl i bawb ymateb yn iawn, mae'r cydlynydd yn anfon neges yn gorfodi pawb i ymrwymo. Ar ôl ymrwymo, mae'r gweinyddwyr yn ymateb yn iawn; os nad yw o leiaf un yn ymateb yn iawn, yna mae'r cydlynydd yn anfon signal i ganslo'r newidiadau i bob gweinydd (Cam Cwblhau).

Dull stamp amser

Mae trafodiad hŷn yn cael ei dreiglo'n ôl wrth geisio cyrchu data sy'n gysylltiedig â thrafodiad iau

Rhoddir stamp amser i bob trafodiad TS sy'n cyfateb i'r amser cychwyn gweithredu. Os Ti Henach Tj, Yna TS(Ti) < TS(Tj).

Pan gaiff trafodiad ei rolio'n ôl, rhoddir stamp amser newydd iddo. Mae pob gwrthrych data Q cymryd rhan yn y trafodiad yn cael ei farcio gyda dau labeli. W- TS(Q) — stamp amser y trafodiad ieuengaf a gwblhaodd record drosodd yn llwyddiannus Q. R-TS(Q) — stamp amser y trafodiad ieuengaf y perfformiodd gofnod darllen arno Q.

Pan fydd y trafodiad T ceisiadau i ddarllen data Q Mae dau opsiwn.

Os TS(T) < W- TS(Q), hynny yw, diweddarwyd y data gan drafodiad iau, yna'r trafodiad T yn rholio yn ôl.

Os TS(T) >= W- TS(Q), yna perfformir y darlleniad a R-TS(Q) yn dod MAX(R-TS(Q), TS(T)).

Pan fydd y trafodiad T yn gofyn am newidiadau data Q Mae dau opsiwn.

Os TS(T) < R-TS(Q), hynny yw, mae'r data eisoes wedi'i ddarllen gan drafodiad iau ac os gwneir newid, bydd gwrthdaro yn codi. Trafodyn T yn rholio yn ôl.

Os TS(T) < W- TS(Q), hynny yw, mae'r trafodiad yn ceisio trosysgrifo gwerth mwy newydd, mae trafodiad T yn cael ei rolio'n ôl. Mewn achosion eraill, cyflawnir y newid a W- TS(Q) dod yn gyfartal TS(T).

Nid oes angen adeiladu graff aros drud. Mae trafodion hŷn yn dibynnu ar rai mwy newydd, felly nid oes unrhyw gylchoedd yn y graff aros. Nid oes unrhyw ddatgloi oherwydd nad yw trafodion yn cael eu disgwyl ond yn cael eu dychwelyd ar unwaith. Mae treigladau rhaeadru yn bosibl. Os Ti rholio i ffwrdd a Tj Darllenais y data a newidiais Ti, Yna Tj dylai rolio'n ôl hefyd. Os ar yr un pryd Tj eisoes wedi ymrwymo, yna bydd torri'r egwyddor o sefydlogrwydd.

Un o'r atebion i raeadru treigladau. Mae trafodiad yn cwblhau'r holl weithrediadau ysgrifennu ar y diwedd, a rhaid i drafodion eraill aros i'r llawdriniaeth honno gael ei chwblhau. Mae trafodion yn aros i gael eu cyflawni cyn eu darllen.

Rheol ysgrifennu Thomas - amrywiad ar y dull stamp amser lle mae data sy'n cael ei ddiweddaru gan drafodiad iau yn cael ei wahardd rhag cael ei drosysgrifennu gan un hŷn

Trafodiad T yn gofyn am newidiadau data Q. Os TS(T) < W- TS(Q), hynny yw, mae'r trafodiad yn ceisio trosysgrifo gwerth mwy newydd, nid yw trafodiad T yn cael ei rolio'n ôl fel yn y dull stamp amser.

Ffynhonnell: hab.com

Ychwanegu sylw