Transactions sy ny fomba fanaraha-maso azy ireo

varotra

Ny fifampiraharahana dia filaharan'ny asa amin'ny angon-drakitra misy fiandohana sy fiafarana.

Ny fifampiraharahana dia ny fanatanterahana misesy ny asa mamaky sy manoratra. Ny fiafaran'ny fifampiraharahana dia mety ho fitahirizana ny fanovana (commit) na fanafoanana ny fanovana (rollback). Mifandray amin'ny angon-drakitra, ny fifanakalozana dia ahitana fangatahana maromaro izay raisina ho toy ny fangatahana tokana.

Ny fifanarahana dia tsy maintsy mahafeno ny fananana ACID

Atomicity. Ny fifampiraharahana dia vita tanteraka na tsia.

Consistency. Rehefa mamita ny fifampiraharahana dia tsy tokony handika ny fameperana apetraka amin'ny angon-drakitra (ohatra, teritery ao amin'ny angon-drakitra). Ny tsy fitoviana dia midika fa ny rafitra dia hafindra avy amin'ny fanjakana marina iray mankany amin'ny fanjakana marina iray hafa.

Fitokana-monina. Tsy tokony hisy fiantraikany amin'ny tsirairay ny fifampiraharahana mandeha mifanitsy, ohatra, manova ny angona ampiasain'ny fifampiraharahana hafa. Ny vokatry ny fanatanterahana ny fifampiraharahana mifanitsy dia tokony hitovy amin'ny hoe ny fifampiraharahana dia natao nisesy.

Faharetana. Rehefa vita ny fanovana dia tsy tokony ho very.

Diarin'ny fifampiraharahana

Ny log dia mitahiry ny fanovana natao tamin'ny fifampiraharahana, miantoka ny atomika sy ny fahamarinan'ny angon-drakitra raha sendra ny tsy fahombiazan'ny rafitra

Ny log dia misy ny soatoavina izay nananan'ny angon-drakitra taloha sy taorian'ny fiovan'ny fifanakalozana. Ny paikadin'ny lozisialy fanoratana mialoha dia mitaky ny fampidirana logiciel momba ny soatoavina teo aloha alohan'ny hanombohana, ary momba ny soatoavina farany rehefa vita ny fifampiraharahana. Raha misy fiatoana tampoka amin'ny rafitra, ny angon-drakitra dia mamaky ny log amin'ny filaharana mifamadika ary manafoana ny fanovana nataon'ny fifampiraharahana. Rehefa tojo fifampiraharahana tapaka, ny angon-drakitra dia manatanteraka izany ary manao fanovana momba izany amin'ny log. Ao amin'ny fanjakana amin'ny fotoanan'ny tsy fahombiazana, ny angon-drakitra dia mamaky ny log amin'ny filaharana mandroso ary mamerina ny fanovana nataon'ny fifampiraharahana. Amin'izany fomba izany dia voatahiry ny fahamarinan'ny fifampiraharahana izay efa natao sy ny atomikan'ny fifampiraharahana tapaka.

Tsy ampy ho an'ny fanarenana indray ny fampandehanan-draharaha tsy nahomby.

Ohatra. Ny mpampiasa dia manana $ 500 ao amin'ny kaontiny ary manapa-kevitra ny hanaisotra izany amin'ny ATM ny mpampiasa. Fiaraha-miasa roa no mandeha. Ny voalohany dia mamaky ny sandan'ny fifandanjana ary raha ampy ny vola amin'ny fifandanjana dia mamoaka vola ho an'ny mpampiasa izany. Ny faharoa dia manala ny vola ilaina amin'ny mizana. Andeha hatao hoe nianjera ny rafitra ary tsy nahomby ny fandidiana voalohany, fa ny faharoa dia nahomby. Amin'ity tranga ity, tsy afaka mamerina mamoaka vola amin'ny mpampiasa isika raha tsy mamerina ny rafitra amin'ny toerany voalohany miaraka amin'ny fifandanjana tsara.

ambaratonga insulation

Read Nanolo-tena

Ny olan'ny Dirty Read dia ny fahafahan'ny fifampiraharahana mamaky ny vokatra manelanelana amin'ny fifampiraharahana hafa.

Ohatra. Ny lanjany ambony indrindra an'ny $0. T1 manampy $50 amin'ny fifandanjanao. T2 mamaky ny sandan'ny fifandanjana ($50). T1 manary ny fiovana sy ny fivoahana. T2 dia manohy ny famonoana miaraka amin'ny angona fifandanjana diso.

Ny vahaolana dia ny mamaky angon-drakitra raikitra (Read Committed), izay mandrara ny famakiana angon-drakitra novain'ny fifanakalozana. Raha nanova angon-drakitra iray ny transaction A, dia voatery miandry ny fahavitan'ny transaction A ny transaction B rehefa miditra amin'ity data ity.

Mamaky azo averina

Very Updates olana. T1 dia mitahiry fiovana eo an-tampon'ny fiovan'ny T2.

Ohatra. Ny sandan'ny fifandanjana voalohany dia $0 ary ny fifampiraharahana roa miaraka dia mameno ny fifandanjana. T1 sy T2 dia namaky fifandanjana $0. T2 dia manampy $200 amin'ny $0 ary mitahiry ny valiny. T1 manampy $100 hatramin'ny $0 ary mitahiry ny valiny. Ny vokatra farany dia $100 fa tsy $300.

Olana famakiana tsy azo averina. Ny famakiana ny angona mitovy imbetsaka dia mamerina sanda samihafa.

Ohatra. T1 dia mitentina $0. T2 dia manampy $50 amin'ny fifandanjana ary mifarana. Mamaky ny angona indray ny T1 ary mahita tsy fitoviana amin'ny vokatra teo aloha.

Repeable Read dia miantoka fa ny famakiana faharoa dia hamerina ny valiny mitovy. Ny angona vakian'ny fifampiraharahana iray dia tsy azo ovaina amin'ny hafa mandra-pahavitan'ny fifampiraharahana. Raha namaky angon-drakitra iray ny transaction A, dia voatery miandry ny fahavitan'ny transaction A ny transaction B, rehefa miditra amin'ity data ity.

Famakiana voalamina (azo atao sΓ©rie)

Olana Phantom Reads. Fanontaniana roa mifantina angona mifototra amin'ny fepetra iray dia mamerina sanda hafa.

Ohatra. T1 dia mangataka ny isan'ny mpampiasa rehetra izay manana salan'isa mihoatra ny $0 nefa latsaky ny $100. T2 dia manala $1 amin'ny mpampiasa iray miaraka amin'ny fifandanjana $101. T1 dia mamerina ny fangatahana.

Mamaky baiko (Serializable). Ny fifampiraharahana dia tanterahina araka ny filaharany tanteraka. Voarara ny manavao na manampy rakitra izay tafiditra ao anatin'ny fepetran'ny fangatahana. Raha nangataka angona avy amin'ny latabatra iray manontolo ny transaction A, dia mivaingana ny latabatra manontolo ho an'ny fifanakalozana hafa mandra-pahavitan'ny transaction A.

Mpandrindra

Mametraka ny filaharan'ny asa tokony hatao mandritra ny fifampiraharahana mifanitsy.

Manome ambaratonga voafaritra manokana. Raha tsy miankina amin'ny filaharany ny vokatry ny asa, dia commutative (Permutable) ny asa toy izany. Ny asa famakiana sy ny fampandehanana amin'ny angon-drakitra samihafa dia mifamadika. Ny asa mamaky-manoratra sy manoratra-manoratra dia tsy mifamadika. Ny andraikitry ny mpandrindra dia ny fanelanelanana ny asa atao amin'ny fifampiraharahana mifanandrify mba hitovy amin'ny fanatanterahana ny fifampiraharahana ny vokatra azo.

Mekanisma mifehy ny asa mifanandrify (Concurrency Control)

Ny optimistika dia mifototra amin'ny fitadiavana sy famahana ny fifandirana, ny pessimistika dia mifototra amin'ny fisorohana ny fifandirana.

Amin'ny fomba fijery feno fanantenana, mpampiasa maro no manana dika mitovy amin'ny angon-drakitra eo am-pelatanany. Ny olona voalohany hamita ny fanovana dia mitahiry ny fanovana, fa ny hafa kosa tsy maintsy manambatra ny fanovana. Ny algorithm optimistic dia mamela ny fifandonana, fa ny rafitra dia tsy maintsy miverina amin'ny fifandonana.

Miaraka amin'ny fomba fijery pesimistika, ny mpampiasa voalohany misambotra ny angona dia manakana ny hafa tsy handray ny angona. Raha tsy fahita firy ny fifandirana, dia fahendrena ny misafidy ny paik'ady feno fanantenana, satria manome ambaratonga avo kokoa ny fifanandrinana.

Fanidiana

Raha toa ka nanidy angon-drakitra ny fifampiraharahana iray, dia tsy maintsy miandry ny fifampiraharahana hafa mandra-panokatra izany rehefa miditra amin'ny angon-drakitra.

Ny sakana iray dia azo apetaka amin'ny angon-drakitra, latabatra, laharana, na toetra. Ny Shared Lock dia azo apetraka amin'ny angon-drakitra mitovy amin'ny alΓ lan'ny fifampiraharahana maromaro, mamela ny fifampiraharahana rehetra (anisan'izany ilay nametraka azy) hamaky, mandrara ny fanovana sy ny fisamborana manokana. Ny Lock Exclusive dia azo apetraka amin'ny alΓ lan'ny fifampiraharahana iray ihany, mamela ny hetsika rehetra amin'ny fifampiraharahana manaitra, mandrara ny hetsika ataon'ny hafa.

Ny deadlock dia toe-javatra iafaran'ny fifampiraharahana amin'ny toe-javatra miandry izay maharitra mandritra ny fotoana tsy voafetra.

Ohatra. Ny fifampiraharahana voalohany dia miandry ny famoahana ny angon-drakitra voarain'ny faharoa, raha ny faharoa kosa miandry ny famoahana ny angon-drakitra voarain'ny voalohany.

Ny vahaolana tsara ho an'ny olana amin'ny fahatapahan-jiro dia mamela ny fahatapahan-jiro hitranga, fa avy eo dia mamerina ny rafitra amin'ny alΓ lan'ny famerenana indray ny iray amin'ireo fifampiraharahana tafiditra ao anatin'ny fahatapahan-jiro.

Mitadiava deadlocks amin'ny fotoana sasany. Ny iray amin'ireo fomba fizahana dia amin'ny fotoana, izany hoe, hevero fa nitranga ny fahatapahana raha ela loatra vao vita ny fifampiraharahana. Rehefa hita ny fahatapahan-jiro, dia averina ny iray amin'ireo fifampiraharahana, ahafahan'ny fifampiraharahana hafa tafiditra ao anatin'ny fahatapahan-jiro ho vita. Ny safidin'ny niharam-boina dia azo mifototra amin'ny sandan'ny fifampiraharahana na ny zokiny (tetika Andraso-Maty sy Wound-wait).

Isaky ny varotra T misy marika famantarana fotoana omena TS misy ny ora fanombohan'ny fifampiraharahana.

Miandry-Maty.

raha TS(Ti) < TS(Tj), then Ti miandry, raha tsy izany Ti mihodinkodina ary manomboka indray amin'ny mari-pamantarana mitovy.

Raha toa ka nahazo loharanom-baovao ny fifampiraharahana tanora iray ary nangataka loharanom-baovao iray ihany ny fifampiraharahana tranainy iray, dia avela hiandry ny fifampiraharahana tranainy. Raha nahazo loharanon-karena ny fifampiraharahana tranainy iray, dia haverina hiverina ilay fifampiraharahana tanora mangataka an'io loharano io.

Fery-miandry.

raha TS(Ti) < TS(Tj), then Tj mihodina miverina ary manomboka indray miaraka amin'ny mari-pamantarana mitovy, raha tsy izany Ti miandry.

Raha toa ka nahazo loharanom-pahalalana ny fifampiraharahana tanora kokoa ary ny fifampiraharahana zokiolona iray dia nangataka loharano iray ihany, dia haverina hiverina ny fifampiraharahana zandriny. Raha nahazo loharanon-karena ny fifampiraharahana tranainy iray, dia avela hiandry ny fifampiraharahana tanora mangataka an'io loharano io. Ny fifantenana ireo niharam-boina mifototra amin'ny laharam-pahamehana dia misoroka ny fahatapahan-jiro, fa mamerina indray ny fifampiraharahana izay tsy maty. Ny olana dia azo averina imbetsaka ny fifampiraharahana satria... mety hihazona ny loharanon-karena mandritra ny fotoana maharitra ny fifampiraharahana taloha.

Ny vahaolana pessimistika amin'ny olan'ny fahatapahan-jiro dia tsy mamela ny fifampiraharahana hanomboka amin'ny fanatanterahana raha misy ny loza mety hitranga.

Mba hamantarana ny fiatoana, dia amboarina ny grafika (sary miandry, kisary miandry), ny vertices amin'izany dia fifampiraharahana, ary ny sisiny dia tarihina amin'ny fifampiraharahana miandry ny famoahana ny angon-drakitra mankany amin'ny fifampiraharahana izay naka an'io data io. Heverina ho nisy ny fiatoana raha toa ka misy tadivavarana ny kisary. Ny fananganana tabilao fiandrasana, indrindra amin'ny angon-drakitra voazara, dia fomba fiasa lafo.

Fanidiana dingana roa - misoroka ny tsy fahatomombanana amin'ny alΓ lan'ny fakana ny loharano rehetra ampiasain'ny fifampiraharahana amin'ny fiandohan'ny fifampiraharahana ary ny famoahana azy ireo amin'ny farany

Ny hetsika fanakanana rehetra dia tsy maintsy alohan'ny famotsorana voalohany. Misy dingana roa izy io - Fandrosoana mitombo, izay miangona ny gripa, ary Phase Mihena, izay avoaka ny gripa. Raha tsy azo atao ny maka ny iray amin'ireo loharanon-karena, dia manomboka ny fifampiraharahana. Mety tsy ho azon'ny fifampiraharahana ny loharanon-karena ilaina, ohatra, raha misy fifampiraharahana maromaro mifaninana amin'ny loharano mitovy.

Ny commit dingana roa dia miantoka fa ny commit dia tanterahina amin'ny replica database rehetra

Ny angon-drakitra tsirairay dia miditra amin'ny fampahalalana momba ny angona izay hovana ho lozisialy ary mamaly ny mpandrindra OK (Fandatsaham-bato). Rehefa avy namaly OK ny rehetra dia mandefa famantarana manery ny rehetra hanolo-tena ny mpandrindra. Rehefa vita ny fanoloran-tena, dia mamaly OK ny mpizara raha toa ka tsy misy mamaly OK, dia mandefa famantarana ny mpandrindra hanafoana ny fanovana amin'ny lohamilina rehetra (Dingana famaranana).

Fomba fanoratana fotoana

Ny fifampiraharahana taloha dia averina rehefa manandrana miditra amin'ny angona voarohirohy amin'ny fifanakalozana tanora kokoa

Ny fifampiraharahana tsirairay dia omena mari-potoana TS mifanitsy amin'ny fotoana fanombohan'ny famonoana. RAHA Ti taona Tj, then TS(Ti) < TS(Tj).

Rehefa averina ny fifampiraharahana dia omena mari-potoana vaovao. Zavatra data tsirairay Q tafiditra ao anatin'ny fifampiraharahana dia misy marika roa. W-TS(Q) - famantaranandron'ny fifampiraharahana faran'izay kely indrindra izay nahavita ny firaketana an-tsoratra Q. R-TS(Q) - famantaranandron'ny fifampiraharahana tanora indrindra nanao firaketana famakiana Q.

Rehefa ny transaction T fangatahana hamaky angon-drakitra Q Misy safidy roa.

raha TS(T) < W-TS(Q), izany hoe, nohavaozina ny angon-drakitra tamin'ny alΓ lan'ny fifanakalozana tanora kokoa, avy eo ny fifampiraharahana T mihodina miverina.

raha TS(T) >= W-TS(Q), dia atao ny famakiana ary R-TS(Q) dia lasa MAX(R-TS(Q), TS(T)).

Rehefa ny transaction T mangataka fanovana angona Q Misy safidy roa.

raha TS(T) < R-TS(Q), izany hoe efa novakian'ny fifampiraharahana tanora kokoa ny angon-drakitra ary raha misy fiovana dia hisy fifandirana. raharaham-barotra T mihodina miverina.

raha TS(T) < W-TS(Q), izany hoe, ny fifampiraharahana dia manandrana manodina sanda vaovao kokoa, ny transaction T dia averina. Amin'ny tranga hafa, ny fanovana dia tanterahina ary W-TS(Q) lasa mitovy TS(T).

Tsy ilaina ny fanamboarana grafika fiandrasana lafo vidy. Miankina amin'ny vaovao ny fifampiraharahana taloha, ka tsy misy tsingerina ao amin'ny tabilao fiandrasana. Tsy misy fahatapahan-jiro satria tsy andrasana ny fifampiraharahana fa mihemotra avy hatrany. Azo atao ny famerenana indray ny Cascade. RAHA Ti nanakodia, ary Tj Namaky ny angon-drakitra noovako aho Ti, then Tj tokony hihemotra koa. Raha miaraka amin'izay koa Tj efa vita, dia hisy ny fanitsakitsahana ny foto-kevitry ny fitoniana.

Iray amin'ireo vahaolana amin'ny cascade rollbacks. Ny fifampiraharahana dia mamita ny asa fanoratana rehetra amin'ny farany, ary ny fifampiraharahana hafa dia tsy maintsy miandry ny fahavitan'io asa io. Andrasana ny fifampiraharahana alohan'ny hamakiana azy.

Thomas write rule - fiovaovana amin'ny fomba fitomboka fotoana izay tsy ahafahan'ny olon-dehibe hosoloina ny angona nohavaozin'ny fifanakalozana tanora kokoa.

raharaham-barotra T mangataka fanovana angona Q. raha TS(T) < W-TS(Q), izany hoe, ny fifampiraharahana dia manandrana mandika ny sanda vaovao kokoa, ny transakta T dia tsy mihemotra toy ny amin'ny fomba fanoratana fotoana.

Source: www.habr.com

Add a comment