Transactions uye maitiro avo ekutonga

Transactions

Kutengeserana kutevedzana kwemashandiro pane data rine mavambo nemagumo.

A transaction ndiko kutevedzana kwekuita kwekuverenga nekunyora mashandiro. Kupera kwekutengeserana kunogona kuve kuchengetedza shanduko (kuita) kana kudzima shanduko (kudzoreredza). Panyaya yedatabase, kutengeserana kunosanganisira zvikumbiro zvakati wandei zvinobatwa sechikumbiro chimwe chete.

Transactions inofanirwa kugutsa ACID zvivakwa

Atomicity. The transaction inopedzwa zvachose kana kuti kwete zvachose.

Kuenderana. Paunenge uchipedza kutengeserana, zvirambidzo zvakaiswa pane data (semuenzaniso, zvipingaidzo mudhatabhesi) hazvifanirwe kutyorwa. Consistency inoreva kuti sisitimu inotamiswa kubva kune imwe nyika kuenda kune imwe chaiyo.

Kuiswa kwemurwere kwake ega. Transactions inomhanya mukuwirirana haifanire kufurirana, semuenzaniso, shandura data rinoshandiswa neimwe kutengeserana. Mhedzisiro yekuita kutengeserana kwakafanana kunofanirwa kunge kwakafanana sekunge kutengeserana kwakaitwa zvakatevedzana.

Sustainability. Kana yaitwa, shanduko haifanire kurasika.

Transaction log

Iyo log inochengetedza shanduko dzakaitwa nekutengeserana, inova nechokwadi chekuti atomicity uye kugadzikana kwedata kana pakatadza system.

Iyo logi ine maitiro ayo data raive risati rave uye mushure mekushandurwa nekutengeserana. Nyora-mberi logi zano rinoda kuwedzera yekupinda yerogi nezve yakapfuura kukosha isati yatanga, uye nezve yekupedzisira kukosha mushure mekunge kutengeserana kwapera. Muchiitiko chekumira kamwe kamwe kweiyo system, dhatabhesi inoverenga irogi mune reverse order uye inodzima shanduko dzakaitwa nekutengesa. Mushure mekusangana nekukanganisika kwekutengeserana, dhatabhesi inozviita uye inoita shanduko nezvayo kune irogi. Kuve muhurumende panguva yekukundikana, dhatabhesi inoverenga logi muhurongwa hwepamberi uye inodzorera shanduko dzakaitwa nekutengeserana. Nenzira iyi, kugadzikana kwekutengeserana kwakatoitwa uye atomicity yekukanganiswa kwekutengeserana inochengetedzwa.

Kungoita zvakare kutengeserana kwakakundikana hakuna kukwana kudzoreredza.

Muenzaniso. Mushandisi ane madhora mazana mashanu muakaundi yake uye mushandisi anofunga kuibvisa kubva kuATM. Mabhindauko maviri ari kuitika. Yekutanga inoverenga kukosha kwechiyero uye kana paine mari yakakwana pasara, inopa mari kumushandisi. Yechipiri inobvisa mari inodiwa kubva pasara. Ngatitii system yakadonha uye oparesheni yekutanga yakatadza, asi yechipiri yakatadza. Muchiitiko ichi, hatigoni kudzorerazve mari kumushandisi pasina kudzorera hurongwa kumamiriro ayo ekutanga nechiyero chakanaka.

Insulation mazinga

Read Committed

The Dirty Read dambudziko nderekuti kutengeserana kunogona kuverenga mhedzisiro yeimwe transaction.

Muenzaniso. Mari yekutanga i $0. T1 inowedzera madhora makumi mashanu kumari yako. T50 inoverenga kukosha kwechiyero ($2). T50 inorasa shanduko uye kubuda. T1 inoenderera mberi nekuita nedata risiri iro.

Mhinduro ndeyekuverenga yakatarwa data (Read Committed), iyo inorambidza kuverenga data yakashandurwa nekutengeserana. Kana kutengeserana A kwakashandura imwe seti yedata, ipapo kutengeserana B, kana uchinge wawana iyi data, inomanikidzwa kumirira kuti kutengeserana A kupedze.

Inodzokororwa Kuverenga

Yakarasika Updates dambudziko. T1 inochengetedza shanduko pamusoro pekuchinja kweT2.

Muenzaniso. Yekutanga chiyero kukosha i $ 0 uye maviri ekutengeserana panguva imwe chete anozadza chiyero. T1 uye T2 inoverenga chikamu che $0. T2 yobva yawedzera madhora mazana maviri kusvika kumadhora 200 uye inochengeta mhedzisiro. T0 inowedzera $1 kusvika $100 uye inochengeta mhedzisiro. Mhedzisiro yekupedzisira ndeye $0 pane $100.

Dambudziko rekuverenga risingadzokororwe. Kuverenga iyo data yakafanana kudzokorodza kudzoka kwakasiyana kwakasiyana.

Muenzaniso. T1 inoverenga chiyero che $0. T2 yobva yawedzera madhora makumi mashanu pachiyero uye inopera. T50 inoverenga data zvakare uye inowana mutsauko nemhedzisiro yapfuura.

Inodzokororwa Kuverenga inova nechokwadi chekuti kuverenga kwechipiri kunodzosera zvakafanana. Dhata yakaverengwa neimwe kutengeserana haigoni kuchinjwa mune vamwe kusvikira kutengeserana kwapera. Kana kutengeserana A kwaverenga imwe seti yedata, saka kutengeserana B, kana uchinge wawana iyi data, inomanikidzwa kumirira kuti kutengeserana A kupedze.

Yakarairwa kuverenga (Serializable)

Phantom Inoverenga dambudziko. Mibvunzo miviri inosarudza data zvichibva pane imwe mamiriro inodzosa maitiro akasiyana.

Muenzaniso. T1 inokumbira nhamba yevashandisi vese vane chiyero chinodarika $0 asi isingasviki $100. T2 inobvisa $1 kubva kumushandisi ane sare ye$101. T1 inoburitsazve chikumbiro.

Yakarairwa kuverenga (Serializable). Transactions dzinoitwa sekutevedzana kwakazara. Izvo zvinorambidzwa kugadzirisa kana kuwedzera zvinyorwa zvinowira mukati memashoko ekukumbira. Kana transaction A yakumbira data kubva patafura yese, saka tafura yese inoomeswa kune mamwe matransaction kusvika kutengeserana A kwapera.

scheduler

Inoisa kurongeka kunofanirwa kuitwa panguva yekutengeserana kwakafanana.

Inopa mwero wakatarwa wekuzviparadzanisa nevamwe. Kana mhedzisiro yekushanda isingaenderane nekurongeka kwavo, saka mashandiro akadaro ari commutative (Permutable). Kuverenga mashandiro uye mashandiro pane akasiyana data ari commutative. Verenga-nyora uye nyora-nyora maitiro haasi ekuchinja. Basa remugadziri nderekupindirana maoperation anoitwa neparallel transactions kuitira kuti mhedzisiro yekuuraya ifanane nekutevedzana kwekuita kwekutengeserana.

Matanho ekudzora mabasa akafanana (Concurrency Control)

Tarisiro inobva pakuona nekugadzirisa kusawirirana, kusava netariro kunobva pakudzivirira kusawirirana kusamuka.

Mune maitiro ane tariro, vashandisi vakawanda vane makopi e data ravanazvo. Munhu wekutanga kupedzisa kugadzirisa anochengetedza shanduko, nepo vamwe vachifanira kubatanidza shanduko. Algorithm ine tariro inobvumira kupokana kuti kuitike, asi sisitimu inofanirwa kupora kubva mukukonana.

Nemaitiro asina tariro, mushandisi wekutanga kutora data anodzivirira vamwe kubva kugamuchira iyo data. Kana kukakavara kusingawanzo, kuchenjera kusarudza nzira ine tariro, sezvo inopa huwandu hwepamusoro hwekubvumirana.

Kukiya

Kana imwe transaction yakakiya data, saka mamwe ma transaction anofanira kumirira kusvika avhurwa kana awana iyo data.

Chivharo chinogona kufukidzwa pane dhatabhesi, tafura, mutsara, kana hunhu. Yakagovaniswa Lock inogona kuisirwa pane imwecheteyo data neakati wandei kutengeserana, inobvumira zvese kutengeserana (kusanganisira iyo yaakazvimanikidza) kuverenga, inorambidza gadziriso uye yakasarudzika kubatwa. Exclusive Lock inogona kuiswa nekutengeserana kumwe chete, inobvumira chero zviito zvekutengesa, inorambidza chero zviito zvevamwe.

A deadlock imamiriro ezvinhu apo kutengeserana kunoguma kwakamira kunogara nekusingaperi.

Muenzaniso. Yekutanga kutengeserana inomirira kuti data yakatorwa neyechipiri ibudiswe, nepo yechipiri inomirira iyo data yakatorwa neyekutanga kuburitswa.

Mhinduro ine tarisiro kudambudziko rekufa inobvumira kuti kufa kwekufa kuitike, asi yobva yadzoreredza sisitimu nekudzosera kumashure imwe yekutengeserana inobatanidzwa mukufa.

Madeadlocks anotsvagwa pane dzimwe nguva. Imwe yenzira dzekuona ndeye nguva, ndiko kuti, funga kuti kufa kwakaitika kana kutengeserana kuchitora nguva yakareba kuti kupedze. Kana dhizaini yawanikwa, imwe yekutengeserana inodzoserwa kumashure, ichibvumira mamwe matransaction anobatanidzwa mudeadlock kuti apedze. Sarudzo yemunhu akabatwa inogona kuenderana nekukosha kwekutengeserana kana hukuru hwavo (Mirira-Kufa uye Kukuvara-kumirira zvirongwa).

Kwese kutengeserana T chitambi chenguva chakapihwa TS ine nguva yekutanga kwekutengeserana.

Wait-Die.

kana TS(Ti) < TS(Tj), ipapo Ti anomirira, zvimwe Ti inotenderera kumashure uye inotanga zvakare nechitambi chenguva chimwe chete.

Kana mudiki wekutengesa wawana sosi uye chekare chekutengesa chinokumbira chishandiso chimwe chete, saka kutengeserana kwekare kunobvumirwa kumirira. Kana kutengeserana kwechikuru kwakawana sosi, saka mudiki kutengeserana uchikumbira iyo sosi inodzoserwa kumashure.

Ronda-kumirira.

kana TS(Ti) < TS(Tj), ipapo Tj inotenderedza kumashure uye inotanga zvakare nechitambi chenguva chimwe chete, kana zvisina kudaro Ti kumirira.

Kana mudiki wekutengesa awana sosi uye chekare chekutengesa chikumbira chishandiso chimwe chete, ipapo mudiki kutengeserana kunodzoserwa kumashure. Kana kutengeserana kwechikuru kwakawana sosi, saka mudiki kutengeserana uchikumbira kuti sosi inotenderwa kumirira. Precedence-based victim selection inodzivirira deadlocks, asi inodzosera kumashure matransaction ayo asina kuvharwa. Dambudziko nderekuti matransaction anogona kudzoserwa kumashure kakawanda nekuti... kutengeserana kwekare kunogona kubata sosi kwenguva yakareba.

Mhinduro isina tariro yedambudziko rekufa haitenderi kutengeserana kutanga kuita kana paine njodzi yekusamira.

Kuti uone kupera, girafu inogadzirwa (kumirira girafu, kumirira-girafu), vertices ayo ari kutengeserana, uye mipendero inotungamirwa kubva mukutengeserana kumirira kuburitswa kwedata kune kutengeserana kwakatora iyi data. A deadlock inoonekwa seyakaitika kana girafu iine loop. Kugadzira girafu rekumirira, kunyanya mumadhatabhesi akagoverwa, inzira inodhura.

Kukiya-chikamu-kukiya - kunodzivirira kufa nekutora zviwanikwa zvese zvinoshandiswa nekutengeserana pakutanga kwekutengeserana uye kuzvisunungura pakupera.

Zvese zvekuvharira mabasa zvinofanirwa kutangira kuvhura kwekutanga. Iyo ine zvikamu zviviri - Kukura Phase, panguva iyo grips inounganidza, uye Shrinking Phase, panguva iyo kubata kunoburitswa. Kana zvisingabviri kutora chimwe chezviwanikwa, kutengeserana kunotanga. Zvinogoneka kuti kutengeserana hakuzokwanisi kuwana zviwanikwa zvinodiwa, semuenzaniso, kana kutengeserana kwakawanda kukwikwidzana kune imwechete zviwanikwa.

Kuzvipira kwezvikamu zviviri kunovimbisa kuti kuzvipira kwaitwa pane ese dhatabhesi replicas

Imwe neimwe dhatabhesi inopinda ruzivo nezve data iyo inozochinjirwa murogi uye inopindura murongi OK (Kuvhota Phase). Mushure mekunge munhu wese apindura zvakanaka, murongi anotumira chiratidzo chinosungira munhu wese kuti aite. Mushure mekuita, maseva anopindura zvakanaka; kana imwe isingapindure ZVAKAITIKA, ipapo murongi anotumira chiratidzo kudzima shanduko kumaseva ese (Kupedzisa Phase).

Timetamp nzira

Kutengeserana kwekare kunodzoserwa kumashure kana uchiedza kuwana data inobatanidzwa nediki kutengeserana

Kutengeserana kwega kwega kunopihwa chitambi chenguva TS zvinoenderana nenguva yekutanga kuuraya. Kana Ti mukuru Tj, ipapo TS(Ti) < TS(Tj).

Kana kutengeserana kwadzoserwa kumashure, kunopihwa chitambi chitsva chenguva. Chimwe nechimwe chinhu che data Q inobatanidzwa mukutengeserana inotarwa nemavara maviri. W-TS(Q) - chidhindo chenguva chechinhu chidiki chekutengeserana chakapedza rekodhi Q. R-TS(Q) - timestamp yechidiki chekutengeserana chakaita rekodhi yekuverenga pa Q.

Kana kutengeserana T zvikumbiro zvekuverenga data Q Pane zvingasarudzwa zviviri.

kana TS(T) < W-TS(Q), ndiko kuti, iyo data yakagadziridzwa nemudiki wekutengesa, ipapo kutengeserana T rolls back.

kana TS(T) >= W-TS(Q), ipapo kuverenga kunoitwa uye R-TS(Q) kuri kuitika MAX(R-TS(Q), TS(T)).

Kana kutengeserana T inokumbira shanduko yedata Q Pane zvingasarudzwa zviviri.

kana TS(T) < R-TS(Q), ndiko kuti, iyo data yakatoverengwa nekutengeserana kwechidiki uye kana shanduko ikaitwa, kukakavara kuchamuka. Transaction T rolls back.

kana TS(T) < W-TS(Q), kureva kuti, kutengeserana kunoedza kunyora kukosha kutsva, kutengeserana T kunodzoserwa kumashure. Mune zvimwe zviitiko, shanduko inoitwa uye W-TS(Q) anova akaenzana TS(T).

Hapana inodhura yekumirira girafu kuvaka inodiwa. Kutengeserana kwechikuru kunoenderana nevatsva, saka hapana matenderedzwa mugirafu yekumirira. Iko hakuna deadlocks nekuti matransaction haana kumirirwa asi anodzoserwa kumashure nekukasika. Cascading rollbacks zvinogoneka. Kana Ti akakunguruka uye Tj Ndakaverenga data randakachinja Ti, ipapo Tj inofanirawo kudzokera shure. Kana panguva imwe chete Tj yakatoitwa, ipapo pachava nekuputsika kwenheyo yekugadzikana.

Imwe yemhinduro kune cascading rollbacks. Kutengeserana kunopedza mabasa ese ekunyora pakupera, uye mamwe matransaction anofanira kumirira kuti oparesheni ipere. Transactions inomirira kuitwa isati yaverengwa.

Thomas kunyora mutemo - musiyano weiyo timestamp nzira iyo data yakagadziridzwa nemudiki transaction inorambidzwa kunyorwa nemukuru.

Transaction T inokumbira shanduko yedata Q. kana TS(T) < W-TS(Q), kureva kuti, kutengeserana kunoedza kunyora kukosha kutsva, transaction T haina kudzoserwa kumashure senzira yetimestamp.

Source: www.habr.com

Voeg