Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Kumusta tanan. Nakontak si Vladislav Rodin. Ako karon ang Lider sa Kurso alang sa kurso nga High Workload Architect sa OTUS ug nagtudlo usab sa mga kurso sa software architecture.

Dugang sa pagtudlo, ingon sa imong namatikdan, nagsulat ako og orihinal nga materyal alang sa OTUS blog sa HabrΓ© ug gusto ko nga motakdo sa artikulo karon nga motakdo sa paglunsad sa kurso "PostgreSQL", nga bukas para sa enrolment karon.

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Pasiuna

Π’ katapusan nga panahon naghisgot kami bahin sa kamatuoran nga ang mga transaksyon sa mga database nagsilbi aron masulbad ang duha ka mga problema: pagsiguro sa pagtugot sa sayup ug pag-access sa datos sa usa ka kompetisyon nga palibot. Aron hingpit nga mabuhat kini nga mga buluhaton, ang transaksyon kinahanglan adunay mga kabtangan sa ACID. Karon kita maghisgot sa detalye mahitungod sa sulat Ako (pag-inusara) niini nga abbreviation.

Pagbulag

Gisulbad sa pag-inusara ang problema sa pag-access sa datos sa usa ka kompetisyon nga palibot, nga hinungdanon nga naghatag proteksyon gikan sa mga kahimtang sa lumba. Sa tinuud, ang pag-inusara nagpasabut nga serialization, nga usa ka kabtangan nga nagsiguro nga ang sangputanan sa pagpatuman sa mga transaksyon nga managsama parehas nga kung kini gipatuman nga sunud-sunod. Ang nag-unang problema niini nga kabtangan mao nga lisud kaayo ang paghatag sa teknikal ug, isip resulta, adunay dakong epekto sa performance sa sistema. Mao nga ang pag-inusara kanunay nga huyang, nga gidawat ang mga peligro sa pipila nga mga anomaliya, nga hisgutan sa ubos. Ang posibilidad sa pipila ka mga anomaliya nga nahitabo tukma nga nagpaila sa lebel sa pagkahimulag sa transaksyon.

Ang labing nailhan nga mga anomaliya mao ang: hugaw nga pagbasa, dili masubli nga pagbasa, phantom read, apan sa tinuud adunay 5 pa: hugaw nga pagsulat, nawala nga pag-update sa cursor, nawala nga pag-update, pagbasa skew, pagsulat skew.

Hugaw nga pagsulat

Ang esensya sa anomaliya mao nga ang mga transaksyon mahimong ma-overwrite ang wala gitugyan nga datos.

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Kini nga anomaliya delikado dili lamang tungod kay ang datos mahimong magkasumpaki human sa pagbuhat sa duha ka mga transaksyon (sama sa hulagway), apan tungod usab kay ang atomicity gilapas: tungod kay gitugotan nato ang wala mapasalig nga datos nga ma-overwrit, kini dili klaro kung unsaon pag-roll back sa usa ka transaksyon nga dili makaapekto sa lain. .

Ang anomaliya mahimong matambalan sa yano nga paagi: nagbutang kami usa ka kandado sa rekord sa wala pa magsugod ang pagrekord, nagdili sa ubang mga transaksyon sa pagbag-o sa rekord hangtod makuha ang kandado.

Hugaw nga basahon

Ang hugaw nga pagbasa nagpasabot sa pagbasa sa wala pasalig nga datos.

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Ang mga problema motungha kung ang mga aksyon o desisyon kinahanglan himuon base sa sample.

Aron matul-id ang anomaliya, mahimo nimong i-attach ang usa ka read lock, apan kini makaapekto pag-ayo sa performance. Mas sayon ​​​​ang pag-ingon nga alang sa usa ka rollback nga transaksyon, ang inisyal nga kahimtang sa datos (sa wala pa magsugod ang pagrekord) kinahanglang i-save sa sistema. Nganong dili magbasa gikan didto? Dili kaayo mahal nga kadaghanan sa mga database nagtangtang sa hugaw nga pagbasa pinaagi sa default.

Nawala nga update

Ang nawala nga pag-update nagpasabut nga nawala nga mga update, ug ang paghubad tukma nga nagpakita sa esensya sa problema:

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Sa pagkatinuod, ang resulta sa transaksyon T2 gibali. Kini nga sitwasyon mahimong matul-id pinaagi sa tin-aw o dili hingpit nga pagsulat nga mga kandado. Kana mao, mahimo ra naton nga i-update ang rekord, ug dayon adunay usa ka dili klaro nga kandado nga mahitabo, o atong gihimo pilia para sa pag-update, hinungdan nga mahitabo ang kandado sa pagbasa ug pagsulat. Palihug timan-i nga ang ingon nga operasyon peligroso kaayo: sa among "inosente" nga pagbasa, gibabagan namon ang ubang mga pagbasa. Ang ubang mga database nagtanyag og mas luwas pilia para sa bahin, nagtugot sa datos nga mabasa apan dili usbon.

Nawala ang pag-update sa cursor

Alang sa mas maayo nga pagkontrol, ang mga base mahimong magtanyag sa ubang mga himan, sama sa cursor. Ang cursor usa ka istruktura nga adunay usa ka hugpong sa mga linya ug gitugotan ka nga magbag-o sa ibabaw niini. ideklara ang cursor_name para sa select_statement. Ang mga sulod sa cursor gihulagway pinaagi sa pagpili.

Nganong kinahanglan nimo ang usa ka cursor? Ang kamatuoran mao nga ang pipila ka mga database nagtanyag og kandado sa tanang mga rekord nga gipili pinaagi sa pagpili (basaha ang kalig-on), o lamang sa rekord diin ang cursor anaa karon (cursor stability). Uban ang kalig-on sa cursor, gipatuman ang mubo nga kandado, nga nagtugot kanamo nga makunhuran ang gidaghanon sa mga kandado kung mag-uli kami sa daghang sample sa datos. Busa, ang nawala nga anomaliya sa pag-update gilain nga gilain alang sa cursor.

Dili masubli nga pagbasa

Ang dili masubli nga pagbasa mao nga sa panahon sa pagpatuman sa among transaksyon, ang 2 ka sunod-sunod nga pagbasa sa parehas nga rekord magdala ngadto sa lain-laing mga resulta, tungod kay laing transaksyon ang nangilabot tali niining duha ka mga pagbasa, giusab ang among datos ug nahimo.

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Nganong problema man ni? Hunahunaa nga ang tumong sa transaksyon T2 sa hulagway mao ang pagpili sa tanan nga mga butang kansang presyo mao ang ubos pa kay sa 150 USD. Adunay laing tawo nga nag-update sa presyo ngadto sa $200. Sa ingon, ang gi-install nga filter wala molihok.

Kini nga mga anomaliya dili na mahitabo kung ang duha ka hugna nga mga interlock idugang o kung ang mekanismo sa MVCC gigamit, nga gusto nakong hisgutan nga gilain.

Gibasa ang phantom

Ang Phantom usa ka pagbasa sa datos nga gidugang sa laing transaksyon.

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Isip pananglitan, atong maobserbahan ang sayop nga pagpili sa pinakabarato nga produkto kung mahitabo kini nga anomaliya.

Ang pagtangtang sa phantom reads lisud na. Ang kanunay nga pag-block dili igo, tungod kay dili naton mapugngan ang usa ka butang nga wala pa. Ang mga sistema sa 2PL naggamit sa predictive locking, samtang ang mga sistema sa MVCC adunay scheduler sa transaksyon nga nag-roll back sa mga transaksyon nga mahimong mabalda sa usa ka insert. Ang una ug ikaduha nga mekanismo bug-at kaayo.

Basaha skew

Ang skew sa pagbasa mahitabo kung nagtrabaho kami sa daghang mga lamesa, ang sulud niini kinahanglan nga kanunay nga magbag-o.

Ingnon ta nga kami adunay mga lamesa nga nagrepresentar sa mga post ug ang ilang meta nga impormasyon:

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Ang usa ka transaksyon nagbasa gikan sa mga lamesa, ang lain nagbag-o niini:

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Ingon sa usa ka resulta sa transaksyon T1, ang post adunay titulo = Maayo, ug updated_by = T2, nga mao ang usa ka matang sa inconsistency.

Sa tinuud, kini usa ka dili masubli nga pagbasa, apan isip bahin sa daghang mga lamesa.

Aron ayuhon kini, ang T1 mahimong magbutang ug mga kandado sa tanang laray nga mabasa niini, nga makapugong sa transaksyon sa T2 sa pag-usab sa impormasyon. Sa kaso sa MVCC, ang T2 nga transaksyon kanselahon. Ang pagpanalipod batok sa kini nga anomaliya mahimong hinungdanon kung mogamit kita mga cursor.

Isulat skew

Kini nga anomaliya mas sayon ​​usab nga ipatin-aw uban sa usa ka pananglitan: ingnon ta nga sa atong sistema labing menos usa ka doktor ang kinahanglan nga mag-duty, apan ang duha ka doktor nakahukom nga kanselahon ang ilang katungdanan:

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Ang anomaliya nagpasabot nga walay bisan usa sa mga doktor nga mo-duty. Nganong nahitabo kini? Tungod kay ang transaksyon nagsusi sa usa ka kondisyon nga mahimong malapas sa laing transaksyon, ug tungod sa pag-inusara wala namo makita kini nga pagbag-o.

Kini mao ang sama nga dili balik-balik nga pagbasa. Sa laing bahin, ang mga pinili mahimong magbutang og mga kandado niini nga mga rekord.

Ang pagsulat skew ug read skew maoy kombinasyon sa mga nangaging anomaliya. Mahimo nimong ikonsiderar ang pagsulat nga skew, nga sa tinuud usa ka pagbasa sa phantom. Hunahunaa ang usa ka lamesa nga adunay mga ngalan sa mga empleyado, ilang sweldo, ug ang proyekto nga ilang gitrabahoan:

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Unsa ang mahimong resulta sa pagpahuyang sa lebel sa pagkahimulag sa transaksyon sa mga database?

Isip resulta, atong makuha ang mosunod nga hulagway: ang matag manedyer naghunahuna nga ang ilang pagbag-o dili mosangpot sa pagsobra sa badyet, mao nga naghimo sila og mga pagbag-o sa mga personahe nga magkauban nga misangpot sa pagsobra sa gasto.

Ang hinungdan sa problema parehas ra sa pagbasa sa phantom.

kaplag

Ang pagpahayahay sa lebel sa pagkahimulag sa transaksyon sa database usa ka trade-off tali sa seguridad ug performance; ang pagpili niini nga lebel kinahanglan nga duolon base sa posibleng mga risgo sa negosyo kung adunay mga anomaliya nga mahitabo.

Pagkat-on og dugang mahitungod sa kurso.

Source: www.habr.com

Idugang sa usa ka comment