Mga transaksyon ug ang ilang mga mekanismo sa pagkontrol

Mga Transaksyon

Ang usa ka transaksyon usa ka han-ay sa mga operasyon sa datos nga adunay sinugdanan ug katapusan.

Ang usa ka transaksyon mao ang sunud-sunod nga pagpatuman sa mga operasyon sa pagbasa ug pagsulat. Ang katapusan sa usa ka transaksyon mahimong magtipig sa mga pagbag-o (commit) o ​​pagkansela sa mga pagbag-o (rollback). May kalabotan sa usa ka database, ang usa ka transaksyon naglangkob sa daghang mga hangyo nga giisip nga usa ka hangyo.

Ang mga transaksyon kinahanglan nga makatagbaw sa mga kabtangan sa ACID

Atomicity. Ang transaksyon makompleto sa hingpit o dili sa tanan.

pagkamakanunayon. Kung makompleto ang usa ka transaksyon, ang mga pagdili nga gipahamtang sa datos (pananglitan, mga pagpugong sa database) kinahanglan dili lapason. Ang pagkamakanunayon nagpasabot nga ang sistema ibalhin gikan sa usa ka husto nga estado ngadto sa lain nga husto nga estado.

Paglain. Ang mga transaksyon nga nagdagan nga managsama kinahanglan dili makaimpluwensya sa usag usa, pananglitan, usba ang datos nga gigamit sa laing transaksyon. Ang resulta sa pagpatuman sa parallel nga mga transaksyon kinahanglan nga parehas nga kung ang mga transaksyon gipatuman nga sunud-sunod.

Pagpadayon. Kung nahimo, ang mga pagbag-o kinahanglan dili mawala.

Log sa transaksyon

Ang log nagtipig sa mga pagbag-o nga gihimo sa mga transaksyon, nagsiguro sa atomicity ug kalig-on sa datos kung adunay pagkapakyas sa sistema

Ang log naglangkob sa mga kantidad nga naa sa datos sa wala pa ug pagkahuman gibag-o sa transaksyon. Ang estratehiya sa pagsulat sa unahan sa log nanginahanglan pagdugang usa ka entry sa log bahin sa miaging mga kantidad sa wala pa magsugod, ug bahin sa katapusan nga mga kantidad pagkahuman makompleto ang transaksyon. Kung adunay kalit nga paghunong sa sistema, ang database nagbasa sa log sa reverse order ug nagkansela sa mga pagbag-o nga gihimo sa mga transaksyon. Kay nakasugat ug nabalda nga transaksyon, ang database nagpatuman niini ug naghimog mga kausaban bahin niini sa log. Naa sa estado sa panahon sa kapakyasan, ang database nagbasa sa log in forward order ug gibalik ang mga pagbag-o nga gihimo sa mga transaksyon. Niining paagiha, ang kalig-on sa mga transaksyon nga nahimo na ug ang atomicity sa nabalda nga transaksyon gipreserbar.

Ang yano nga pag-re-execute sa mga napakyas nga transaksyon dili igo alang sa pagbawi.

Pananglitan. Ang user adunay $500 sa iyang account ug ang user nakahukom sa pag-withdraw niini gikan sa ATM. Duha ka transaksyon ang nagpadayon. Ang una nagbasa sa kantidad sa balanse ug kung adunay igo nga pondo sa balanse, nag-isyu kini og salapi sa tiggamit. Ang ikaduha mokuha sa gikinahanglan nga kantidad gikan sa balanse. Ingnon ta nga ang sistema nahagsa ug ang unang operasyon napakyas, apan ang ikaduha napakyas. Sa kini nga kaso, dili kami maka-isyu pag-usab sa salapi sa tiggamit nga dili ibalik ang sistema sa orihinal nga kahimtang niini nga adunay positibo nga balanse.

Mga lebel sa pagbulag

Read Committed

Ang problema sa Dirty Read mao nga ang usa ka transaksyon makabasa sa intermediate nga resulta sa laing transaksyon.

Pananglitan. Ang inisyal nga kantidad sa balanse mao ang $0. Ang T1 nagdugang og $50 sa imong balanse. Gibasa sa T2 ang kantidad sa balanse ($50). Gisalikway sa T1 ang mga pagbag-o ug paggawas. Ang T2 nagpadayon sa pagpatuman nga adunay dili husto nga datos sa balanse.

Ang solusyon mao ang pagbasa sa fixed data (Read Committed), nga nagdili sa pagbasa sa datos nga giusab sa transaksyon. Kung ang transaksyon A nagbag-o sa usa ka piho nga set sa datos, nan ang transaksyon B, sa pag-access niini nga datos, mapugos sa paghulat sa transaksyon A aron makompleto.

Balik-balik nga Pagbasa

Problema sa Nawala nga Update. Gitipigan sa T1 ang mga pagbag-o sa ibabaw sa mga pagbag-o sa T2.

Pananglitan. Ang inisyal nga kantidad sa balanse mao ang $0 ug duha ka transaksyon ang dungan nga nagpuno sa balanse. Gibasa sa T1 ug T2 ang balanse nga $0. Ang T2 unya midugang og $200 ngadto sa $0 ug i-save ang resulta. Ang T1 midugang og $100 ngadto sa $0 ug magtipig sa resulta. Ang katapusan nga resulta mao ang $100 imbes nga $300.

Dili mabalikbalik nga problema sa pagbasa. Ang pagbasa sa parehas nga datos nga gibalikbalik nagbalik sa lainlaing mga kantidad.

Pananglitan. Ang T1 nagbasa sa balanse nga kantidad nga $0. Ang T2 unya midugang og $50 sa balanse ug matapos. Gibasa pag-usab sa T1 ang datos ug nakit-an ang kalainan sa miaging resulta.

Ang Repeable Read nagsiguro nga ang ikaduhang pagbasa magbalik sa parehas nga resulta. Ang datos nga gibasa sa usa ka transaksyon dili mausab sa uban hangtod mahuman ang transaksyon. Kung ang transaksyon A nakabasa sa usa ka piho nga set sa datos, nan ang transaksyon B, sa pag-access niini nga datos, mapugos sa paghulat sa transaksyon A aron makompleto.

Gi-order nga pagbasa (Serializable)

Problema sa Phantom Reads. Duha ka pangutana nga nagpili sa datos base sa usa ka kondisyon nga nagbalik sa lainlaing mga kantidad.

Pananglitan. Gihangyo sa T1 ang gidaghanon sa tanang tiggamit kansang balanse mas dako pa sa $0 apan ubos sa $100. Gikuha sa T2 ang $1 gikan sa usa ka tiggamit nga adunay balanse nga $101. Gi-isyu pag-usab sa T1 ang hangyo.

Gi-order nga pagbasa (Serializable). Ang mga transaksyon gipatuman ingon nga hingpit nga sunud-sunod. Gidili ang pag-update o pagdugang sa mga rekord nga nahisakop sa mga termino sa hangyo. Kung ang transaksyon A nangayo ug datos gikan sa tibuok lamesa, unya ang tibuok lamesa ma-freeze para sa ubang mga transaksyon hangtod makompleto ang transaksyon A.

scheduler

Nagtakda sa han-ay kung diin ang mga operasyon kinahanglan himuon sa parehas nga mga transaksyon.

Naghatag usa ka piho nga lebel sa pagkahimulag. Kung ang resulta sa mga operasyon wala magdepende sa ilang order, nan ang maong mga operasyon kay commutative (Permutable). Ang mga operasyon sa pagbasa ug mga operasyon sa lainlaing mga datos kay commutative. Ang mga operasyon sa pagbasa-pagsulat ug pagsulat-pagsulat dili commutative. Ang buluhaton sa scheduler mao ang pag-interleave sa mga operasyon nga gihimo sa parallel nga mga transaksyon aron ang resulta sa pagpatuman katumbas sa sequential execution sa mga transaksyon.

Mga mekanismo sa pagkontrol sa parallel nga mga trabaho (Concurrency Control)

Ang pagkamalaumon gibase sa pag-ila ug pagsulbad sa mga panagbangi, ang pesimistiko gibase sa pagpugong sa mga panagbangi nga motumaw.

Sa kamalaumon nga pamaagi, daghang mga tiggamit adunay mga kopya sa datos nga ilang magamit. Ang una nga tawo nga makakompleto sa pag-edit nagtipig sa mga pagbag-o, samtang ang uban kinahanglan nga maghiusa sa mga pagbag-o. Ang usa ka malaumon nga algorithm nagtugot sa panagbangi nga mahitabo, apan ang sistema kinahanglan nga maulian gikan sa panagbangi.

Uban sa usa ka pessimistic nga pamaagi, ang una nga tiggamit nga nakakuha sa datos nagpugong sa uban nga makadawat sa datos. Kung panagsa ra ang panagbangi, maalamon nga pilion ang malaumon nga estratehiya, tungod kay naghatag kini usa ka mas taas nga lebel sa panagsama.

Pag-lock

Kung ang usa ka transaksyon adunay naka-lock nga datos, nan ang ubang mga transaksyon kinahanglan maghulat hangtod kini ma-unlock kung ma-access ang datos.

Ang usa ka block mahimong ma-overlay sa usa ka database, lamesa, laray, o attribute. Ang Shared Lock mahimong ipahamtang sa parehas nga datos sa daghang mga transaksyon, gitugotan ang tanan nga mga transaksyon (lakip ang nagpahamtang niini) nga mabasa, gidid-an ang pagbag-o ug eksklusibo nga pagdakop. Ang Eksklusibo nga Lock mahimong ipahamtang sa usa lamang ka transaksyon, gitugotan ang bisan unsang aksyon sa nagpahamtang nga transaksyon, gidid-an ang bisan unsang aksyon sa uban.

Ang deadlock usa ka sitwasyon diin ang mga transaksyon matapos sa usa ka pending nga kahimtang nga molungtad hangtod sa hangtod.

Pananglitan. Ang una nga transaksyon naghulat alang sa datos nga nakuha sa ikaduha nga ipagawas, samtang ang ikaduha naghulat alang sa datos nga nakuha sa una nga ipagawas.

Ang usa ka malaumon nga solusyon sa problema sa deadlock nagtugot sa deadlock nga mahitabo, apan unya mabawi ang sistema pinaagi sa pag-roll back sa usa sa mga transaksyon nga nalambigit sa deadlock.

Ang mga deadlock gipangita sa pipila ka mga agwat. Usa sa mga pamaagi sa pag-ila mao ang oras, nga mao, hunahunaa nga adunay usa ka deadlock nga nahitabo kung ang transaksyon dugay kaayo aron makompleto. Kung makit-an ang deadlock, ang usa sa mga transaksyon ibalik, nga gitugotan ang ubang mga transaksyon nga nalambigit sa deadlock nga makompleto. Ang pagpili sa biktima mahimong ibase sa bili sa mga transaksyon o sa ilang senioridad (Wait-Die ug Wound-wait schemes).

Matag transaksyon T usa ka timestamp ang gi-assign TS naglangkob sa oras sa pagsugod sa transaksyon.

Maghulat-Mamatay.

kon TS(Ti) < TS(Tj), dayon Ti naghulat, kung dili Ti mibalik ug magsugod pag-usab sa samang timestamp.

Kung ang usa ka batan-on nga transaksyon nakakuha usa ka kapanguhaan ug ang usa ka tigulang nga transaksyon nangayo sa parehas nga kapanguhaan, nan ang tigulang nga transaksyon gitugotan nga maghulat. Kung ang usa ka tigulang nga transaksyon nakakuha usa ka kapanguhaan, nan ang mas bata nga transaksyon nga naghangyo sa kana nga kapanguhaan ibalik.

Samad-paghulat.

kon TS(Ti) < TS(Tj), dayon Tj mibalik ug magsugod pag-usab sa samang timestamp, kon dili Ti naghulat

Kung ang usa ka mas bata nga transaksyon nakakuha usa ka kapanguhaan ug ang usa ka tigulang nga transaksyon nangayo sa parehas nga kapanguhaan, nan ang mas bata nga transaksyon ibalik. Kung ang usa ka tigulang nga transaksyon nakakuha usa ka kapanguhaan, nan ang mas bata nga transaksyon nga naghangyo sa kana nga kapanguhaan gitugotan nga maghulat. Ang pagpili sa biktima nga gibase sa pag-una nagpugong sa mga deadlock, apan gibalikbalik ang mga transaksyon nga wala ma-deadlock. Ang problema kay ang mga transaksyon mahimong i-roll back sa makadaghang higayon tungod kay... ang usa ka tigulang nga transaksyon mahimong maghupot sa kapanguhaan sa dugay nga panahon.

Ang usa ka pesimistiko nga solusyon sa problema sa deadlock wala magtugot sa usa ka transaksyon nga magsugod sa pagpatuman kung adunay peligro sa usa ka deadlock.

Aron mahibal-an ang usa ka deadlock, usa ka graph ang gihimo (naghulat nga graph, wait-for-graph), ang mga vertices niini mga transaksyon, ug ang mga kilid gitumong gikan sa mga transaksyon nga naghulat sa pagpagawas sa datos ngadto sa transaksyon nga nakuha niini nga datos. Ang deadlock giisip nga nahitabo kung ang graph adunay loop. Ang pagtukod og wait graph, ilabina sa gipang-apod-apod nga mga database, usa ka mahal nga pamaagi.

Duha ka hugna nga pag-lock - pagpugong sa mga deadlock pinaagi sa pag-ilog sa tanan nga mga kapanguhaan nga gigamit sa usa ka transaksyon sa pagsugod sa transaksyon ug buhian kini sa katapusan

Ang tanan nga mga operasyon sa pag-block kinahanglan mag-una sa una nga pag-unlock. Kini adunay duha ka hugna - Growing Phase, diin ang mga grip natipon, ug Shrinking Phase, diin ang mga grips gipagawas. Kung imposible nga makuha ang usa sa mga kapanguhaan, magsugod ang transaksyon. Posible nga ang usa ka transaksyon dili makakuha sa gikinahanglan nga mga kapanguhaan, pananglitan, kung daghang mga transaksyon ang makigkompetensya alang sa parehas nga mga kapanguhaan.

Ang duha ka hugna nga commit nagsiguro nga ang commit gipatuman sa tanan nga mga replika sa database

Ang matag database mosulod sa impormasyon mahitungod sa datos nga usbon ngadto sa log ug motubag sa coordinator OK (Voting Phase). Human ang tanan makatubag og OK, ang coordinator magpadala og signal nga nag-obligar sa tanan sa pagpasalig. Human sa commit, ang mga server motubag og OK; kon ang usa dili motubag og OK, nan ang coordinator magpadala og signal aron kanselahon ang mga kausaban sa tanang mga server (Completion Phase).

Pamaagi sa timestamp

Ang mas karaan nga transaksyon ibalik sa dihang mosulay sa pag-access sa datos nga nalangkit sa mas bata nga transaksyon

Ang matag transaksyon gihatagan og timestamp TS katumbas sa oras sa pagsugod sa pagpatuman. Kung Ti mas tigulang Tj, dayon TS(Ti) < TS(Tj).

Kung ang usa ka transaksyon ibalik, kini gi-assign sa usa ka bag-ong timestamp. Ang matag butang nga datos Q nalambigit sa transaksyon gimarkahan og duha ka label. W-TS(Q) β€” timestamp sa pinakabata nga transaksyon nga malampusong nakakompleto sa usa ka rekord Q. R-TS(Q) β€” timestamp sa pinakabata nga transaksyon nga naghimo ug read record sa Q.

Sa diha nga ang transaksyon T hangyo sa pagbasa sa datos Q Adunay duha ka kapilian.

kon TS(T) < W-TS(Q), nga mao, ang datos gi-update sa usa ka mas bata nga transaksyon, dayon ang transaksyon T mibalik.

kon TS(T) >= W-TS(Q), dayon ang pagbasa gihimo ug R-TS(Q) mahimo MAX(R-TS(Q), TS(T)).

Sa diha nga ang transaksyon T nangayo ug mga pagbag-o sa datos Q Adunay duha ka kapilian.

kon TS(T) < R-TS(Q), nga mao, ang datos nabasa na sa usa ka mas batan-on nga transaksyon ug kung ang usa ka pagbag-o mahimo, usa ka panagbangi ang motumaw. Transaksyon T mibalik.

kon TS(T) < W-TS(Q), nga mao, ang transaksyon misulay sa pag-overwrite sa usa ka mas bag-ong bili, ang transaksyon T giligid balik. Sa ubang mga kaso, ang pagbag-o gihimo ug W-TS(Q) mahimong managsama TS(T).

Wala'y gikinahanglan nga mahal nga paghulat nga graph nga pagtukod. Ang mga daan nga transaksyon nagdepende sa mga bag-o, busa wala’y mga siklo sa graph sa paghulat. Walay deadlocks tungod kay ang mga transaksyon wala maghulat apan gibalik dayon. Posible ang mga pag-rollback sa Cascading. Kung Ti giligid ug Tj Gibasa nako ang datos nga akong giusab Ti, dayon Tj kinahanglan usab nga roll back. Kung sa samang higayon Tj nahimo na, unya adunay usa ka paglapas sa prinsipyo sa kalig-on.

Usa sa mga solusyon sa cascading rollbacks. Ang usa ka transaksyon mokompleto sa tanan nga pagsulat nga mga operasyon sa katapusan, ug ang uban nga mga transaksyon kinahanglan nga maghulat nga ang operasyon makompleto. Ang mga transaksyon maghulat nga mabuhat sa dili pa basahon.

Thomas write rule - usa ka variation sa timestamp method diin ang data nga gi-update sa mas bata nga transaksyon gidid-an nga ma-overwrite sa usa ka tigulang.

Transaksyon T nangayo ug mga pagbag-o sa datos Q. Kon TS(T) < W-TS(Q), nga mao, ang transaksyon mosulay sa pag-overwrite sa usa ka mas bag-ong bili, ang transaksyon T dili ibalik sama sa timestamp nga pamaagi.

Source: www.habr.com

Idugang sa usa ka comment