Tranzaksyon ak mekanis kontwòl yo

Tranzaksyon yo

Yon tranzaksyon se yon sekans operasyon sou done ki gen yon kòmansman ak yon fen.

Yon tranzaksyon se ekzekisyon an sekans nan operasyon lekti ak ekri. Fen yon tranzaksyon ka swa sove chanjman yo (komèt) oswa anile chanjman yo (rollback). An relasyon ak yon baz done, yon tranzaksyon konsiste de plizyè demann ke yo trete kòm yon sèl demann.

Tranzaksyon yo dwe satisfè pwopriyete ACID

Atomisite. Tranzaksyon an se swa konplete nèt oswa pa ditou.

Konsistans. Lè w fin ranpli yon tranzaksyon, restriksyon yo enpoze sou done yo (pa egzanp, kontrent nan baz done a) pa dwe vyole. Konsistans vle di ke sistèm lan pral transfere soti nan yon eta kòrèk nan yon lòt eta kòrèk.

An karantèn. Tranzaksyon ki fèt an paralèl pa ta dwe enfliyanse youn ak lòt, pou egzanp, chanje done yo itilize pa yon lòt tranzaksyon. Rezilta a nan egzekite tranzaksyon paralèl yo ta dwe menm jan ak si tranzaksyon yo te egzekite sekans.

Dirab. Yon fwa yo komèt, chanjman yo pa ta dwe pèdi.

Log tranzaksyon

Jounal la estoke chanjman ki fèt pa tranzaksyon yo, asire atomite ak estabilite done nan ka ta gen yon echèk sistèm.

Jounal la gen valè done yo te genyen anvan ak apre li te chanje pa tranzaksyon an. Estrateji jounal ekri davans mande pou ajoute yon antre boutèy demi lit sou valè anvan yo anvan kòmansman an, ak sou valè final yo apre tranzaksyon an fini. Nan evènman an nan yon kanpe toudenkou nan sistèm nan, baz done a li boutèy demi lit la nan lòd ranvèse epi anile chanjman ki fèt pa tranzaksyon yo. Lè w rankontre yon tranzaksyon entèwonp, baz done a egzekite li epi fè chanjman sou li nan boutèy la. Lè ou nan eta a nan moman echèk la, baz done a li boutèy demi lit la nan lòd pou pi devan epi retounen chanjman ki fèt pa tranzaksyon yo. Nan fason sa a, estabilite nan tranzaksyon ki te deja komèt ak atomite nan tranzaksyon an entèwonp yo konsève.

Senpleman re-egzekisyon tranzaksyon echwe se pa ase pou rekiperasyon.

Egzanp. Itilizatè a gen $500 nan kont li epi itilizatè a deside retire li nan yon ATM. De tranzaksyon yo an pwogrè. Premye a li valè balans lan epi si gen ase lajan sou balans lan, li bay itilizatè a lajan. Dezyèm lan soustraksyon kantite lajan ki nesesè nan balans lan. Ann di sistèm nan fè aksidan ak premye operasyon an echwe, men dezyèm lan te fè. Nan ka sa a, nou pa ka re-emèt lajan bay itilizatè a san yo pa retounen sistèm lan nan eta orijinal li ak yon balans pozitif.

Nivo izolasyon

Li Angajman

Pwoblèm Dirty Read la se ke yon tranzaksyon ka li rezilta entèmedyè yon lòt tranzaksyon.

Egzanp. Valè balans inisyal la se $0. T1 ajoute $50 nan balans ou. T2 li valè balans lan ($50). T1 jete chanjman yo epi sòti. T2 kontinye ekzekisyon ak done balans kòrèk.

Solisyon an se li done fiks (Read Committed), ki entèdi li done ki chanje pa tranzaksyon an. Si tranzaksyon A te chanje yon sèten seri done, Lè sa a, tranzaksyon B, lè w ap jwenn aksè nan done sa yo, oblije rete tann pou tranzaksyon A fini.

Lekti ki repete

Pwoblèm Mizajou pèdi. T1 sove chanjman yo anlè chanjman T2 yo.

Egzanp. Valè balans inisyal la se $0 ak de tranzaksyon ansanm ranpli balans lan. T1 ak T2 li yon balans $0. Lè sa a, T2 ajoute $200 a $0 epi li sove rezilta a. T1 ajoute $100 a $0 epi sove rezilta a. Rezilta final la se $100 olye de $300.

Pwoblèm lekti ki pa repete. Lekti menm done yo repete retounen diferan valè.

Egzanp. T1 li yon valè balans $0. Lè sa a, T2 ajoute $50 nan balans lan epi li fini. T1 li done yo ankò epi li jwenn yon diferans ak rezilta anvan an.

Lekti repete asire ke yon dezyèm lekti ap retounen menm rezilta a. Done li pa yon tranzaksyon pa ka chanje nan lòt moun jiskaske tranzaksyon an fini. Si tranzaksyon A te li yon seri sèten done, Lè sa a, tranzaksyon B, lè w ap jwenn aksè nan done sa yo, oblije rete tann pou tranzaksyon A fini.

Lekti kòmande (serializabl)

Phantom Reads pwoblèm. De demann ki chwazi done ki baze sou yon sèten kondisyon retounen valè diferan.

Egzanp. T1 mande kantite tout itilizatè ki gen balans ki pi gran pase $0 men mwens pase $100. T2 dedwi $1 nan men yon itilizatè ki gen yon balans $101. T1 refè demann lan.

Lekti òdone (serializabl). Tranzaksyon yo egzekite kòm konplètman sekans. Li entèdi pou mete ajou oswa ajoute dosye ki nan kondisyon demann lan. Si tranzaksyon A te mande done nan tout tab la, lè sa a tout tab la jele pou lòt tranzaksyon jiskaske tranzaksyon A fini.

Orè

Mete lòd nan ki operasyon yo ta dwe fèt pandan tranzaksyon paralèl yo.

Bay yon nivo espesifik nan izolasyon. Si rezilta a nan operasyon pa depann de lòd yo, Lè sa a, operasyon sa yo se komitatif (Permutable). Operasyon lekti ak operasyon sou done diferan yo komutatif. Operasyon lekti-ekri ak ekri-ekri yo pa komitatif. Travay planifikatè a se entèle operasyon ki fèt pa tranzaksyon paralèl pou ke rezilta ekzekisyon an ekivalan a ekzekisyon sekans tranzaksyon yo.

Mekanis pou kontwole travay paralèl (Kontwòl konkou)

Optimis la baze sou detekte ak rezoud konfli, pesimism baze sou anpeche konfli leve.

Nan apwòch optimis la, plizyè itilizatè yo gen kopi done yo a dispozisyon yo. Premye moun ki fini koreksyon sove chanjman yo, pandan ke lòt yo dwe rantre chanjman yo. Yon algorithm optimis pèmèt konfli rive, men sistèm nan dwe retabli de konfli a.

Avèk yon apwòch pesimis, premye itilizatè ki pran done yo anpeche lòt moun resevwa done yo. Si konfli yo ra, li bon pou chwazi estrateji optimis la, paske li bay yon nivo ki pi wo nan konkourans.

Bloke

Si yon sèl tranzaksyon gen done fèmen, Lè sa a, lòt tranzaksyon yo dwe rete tann jiskaske li debloke lè yo jwenn aksè nan done yo.

Yon blòk ka kouvri sou yon baz done, tab, ranje, oswa atribi. Shared Lock ka enpoze sou menm done yo pa plizyè tranzaksyon, pèmèt tout tranzaksyon (ki gen ladan youn ki enpoze li) li, entèdi modifikasyon ak kaptire eksklizif. Se sèlman yon sèl tranzaksyon enpoze Lock Eksklizif, pèmèt nenpòt aksyon nan tranzaksyon an enpoze, entèdi nenpòt aksyon lòt moun.

Yon enpas se yon sitiyasyon kote tranzaksyon yo fini nan yon eta annatant ki dire endefiniman.

Egzanp. Premye tranzaksyon an ap tann pou done yo te kaptire pa dezyèm lan yo dwe lage, pandan y ap dezyèm nan tann pou done yo te kaptire pa premye a yo dwe lage.

Yon solisyon optimis nan pwoblèm enpas la pèmèt enpas la rive, men Lè sa a, refè sistèm nan pa woule tounen youn nan tranzaksyon ki enplike nan enpas la.

Yo chèche enpas nan sèten entèval. Youn nan metòd deteksyon yo se pa tan, se sa ki, konsidere ke yon enpas te fèt si tranzaksyon an pran twò lontan pou konplete. Lè yo jwenn yon enpas, youn nan tranzaksyon yo woule tounen, sa ki pèmèt lòt tranzaksyon ki enplike nan enpas la fini. Chwa viktim yo ka baze sou valè tranzaksyon yo oswa ansyènte yo (Wait-Die ak Wound-wait schemes).

Chak tranzaksyon T yo bay yon timestamp TS ki gen tan kòmanse tranzaksyon an.

Tann-Mouri.

Si TS(Ti) < TS(Tj), Lè sa a, Ti tann, sinon Ti woule tounen epi rekòmanse ak menm timestamp la.

Si yon tranzaksyon jèn te akeri yon resous epi yon tranzaksyon ki pi gran mande menm resous la, Lè sa a, tranzaksyon ki pi gran an gen dwa tann. Si yon tranzaksyon ki pi gran te akeri yon resous, Lè sa a, tranzaksyon ki pi piti a mande resous sa a pral woule tounen.

Blesi-tann.

Si TS(Ti) < TS(Tj), Lè sa a, Tj woule tounen epi kòmanse ankò ak timestamp la menm, otreman Ti ap tann.

Si yon tranzaksyon ki pi piti te akeri yon resous ak yon tranzaksyon ki pi gran mande menm resous la, Lè sa a, tranzaksyon ki pi piti a pral dewoule. Si yon tranzaksyon ki pi gran te akeri yon resous, Lè sa a, tranzaksyon ki pi piti a mande resous sa a gen dwa tann. Seleksyon viktim ki baze sou pridans yo anpeche enpas, men anile tranzaksyon ki pa enpas yo. Pwoblèm lan se ke tranzaksyon yo ka woule tounen anpil fwa paske... yon tranzaksyon ki pi gran ka kenbe resous la pou yon tan long.

Yon solisyon pesimis nan pwoblèm enpas la pa pèmèt yon tranzaksyon kòmanse egzekite si gen yon risk pou yon enpas.

Pou detekte yon enpas, yo konstwi yon graf (waiting graph, wait-for-graph), somè yo se tranzaksyon, ak bor yo dirije soti nan tranzaksyon k ap tann pou divilgasyon done nan tranzaksyon an ki te kaptire done sa yo. Yo konsidere yon enpas ki te fèt si graf la gen yon bouk. Konstwi yon graf tann, espesyalman nan baz done distribye, se yon pwosedi chè.

De-faz bloke - anpeche enpas pa sezi tout resous yo itilize pa yon tranzaksyon nan kòmansman tranzaksyon an epi lage yo nan fen an.

Tout operasyon bloke yo dwe anvan premye deblokaj la. Li gen de faz - Faz grandi, pandan ki grip yo akimile, ak faz Réduction, pandan ki grip yo lage. Si li enposib pran youn nan resous yo, tranzaksyon an kòmanse sou. Li posib ke yon tranzaksyon pa pral kapab jwenn resous ki nesesè yo, pou egzanp, si plizyè tranzaksyon konpetisyon pou menm resous yo.

Yon komite de-faz asire ke komèt la egzekite sou tout kopi baz done

Chak baz done antre enfòmasyon sou done yo pral chanje nan jounal la epi li reponn kowòdonatè a OK (Faz Vòt). Apre tout moun fin reponn OK, kowòdonatè a voye yon siyal pou tout moun oblije pran angajman. Apre komèt, sèvè yo reponn OK si omwen youn pa reponn OK, Lè sa a, kowòdonatè a voye yon siyal pou anile chanjman yo nan tout sèvè (Faz Fini).

Metòd timestamp

Yon tranzaksyon ki pi gran yo anile lè w ap eseye jwenn aksè nan done ki enplike nan yon tranzaksyon ki pi piti

Yo bay chak tranzaksyon yon timestamp TS ki koresponn ak tan an kòmanse nan ekzekisyon. Si Ti pi gran Tj, Lè sa a, TS(Ti) < TS(Tj).

Lè yon tranzaksyon woule tounen, yo asiyen li yon nouvo timestamp. Chak objè done Q patisipe nan tranzaksyon an make ak de etikèt. W-TS(Q) — timestamp nan pi piti tranzaksyon an ki konplete avèk siksè yon dosye sou Q. R-TS(Q) — timestamp nan tranzaksyon ki pi piti a ki te fè yon dosye li sou li Q.

Lè tranzaksyon an T demann pou li done yo Q Gen de opsyon.

Si TS(T) < W-TS(Q), se sa ki, done yo te mete ajou pa yon tranzaksyon ki pi piti, Lè sa a, tranzaksyon an T woule tounen.

Si TS(T) >= W-TS(Q), Lè sa a, lekti a fèt ak R-TS(Q) vin MAX(R-TS(Q), TS(T)).

Lè tranzaksyon an T mande chanjman done yo Q Gen de opsyon.

Si TS(T) < R-TS(Q), se sa ki, done yo te deja li pa yon tranzaksyon ki pi piti epi si yo fè yon chanjman, yon konfli ap leve. Tranzaksyon T woule tounen.

Si TS(T) < W-TS(Q), se sa ki, tranzaksyon an ap eseye ranplase yon valè ki pi nouvo, tranzaksyon T ap woule tounen. Nan lòt ka, se chanjman an te pote soti ak W-TS(Q) vin egal TS(T).

Pa gen konstriksyon chè graf datant ki nesesè. Tranzaksyon ki pi gran yo depann de tranzaksyon ki pi nouvo yo, kidonk pa gen okenn sik nan graf tann lan. Pa gen enpas paske tranzaksyon yo pa tann men yo retounen imedyatman. Cascading rollbacks posib. Si Ti woule ale epi Tj Mwen li done mwen chanje Ti, Lè sa a, Tj ta dwe tou woule tounen. Si an menm tan Tj te deja komèt, Lè sa a, pral gen yon vyolasyon prensip la nan estabilite.

Youn nan solisyon yo nan kaskad rollbacks. Yon tranzaksyon konplete tout operasyon ekri nan fen, epi lòt tranzaksyon yo dwe tann pou operasyon sa a fini. Tranzaksyon yo tann pou yo komèt anvan yo li.

Règ Thomas ekri - yon varyasyon metòd timestamp kote done ki mete ajou pa yon tranzaksyon ki pi piti entèdi pou yo ranplase pa yon lòt ki pi gran.

Tranzaksyon T mande chanjman done yo Q. Si TS(T) < W-TS(Q), se sa ki, tranzaksyon an ap eseye ranplase yon valè ki pi nouvo, tranzaksyon T pa woule tounen tankou nan metòd la timestamp.

Sous: www.habr.com

Add nouvo kòmantè