Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Kaixo guztioi. Vladislav Rodin harremanetan dago. Gaur egun, OTUSeko High Workload Architect ikastaroaren Ikastaro-burua naiz eta software-arkitektura ikastaroak ere ematen ditut.

Irakaskuntzaz gain, ohartuko zinetenez, OTUS blogerako jatorrizko materiala idazten ari naiz HabrΓ©-n eta gaurko artikuluarekin bat egin nahi dut kurtsoaren hasierarekin batera. "PostgreSQL", oraintxe bertan izena emateko zabalik dago.

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Sarrera

Π’ Azken aldiz datu-baseetako transakzioek bi arazo konpontzeko balio dutela hitz egin dugu: akatsen tolerantzia bermatzea eta datuetara sarbidea ingurune lehiakor batean. Zeregin horiek guztiz betetzeko, transakzioak ACID propietateak izan behar ditu. Gaur gutunari buruz zehatz-mehatz hitz egingo dugu I (isolamendua) laburdura honetan.

Isolamendua

Isolamenduak konpontzen du ingurune lehiakor batean datuak atzitzeko arazoa, funtsean lasterketa-baldintzetatik babestea eskainiz. Egokiena, isolamenduak serializazioa esan nahi du, hau da, transakzioak paraleloan exekutatzeko emaitza sekuentzialki exekutatu balira bezala bermatzen duen propietatea. Propietate honen arazo nagusia da teknikoki ematea oso zaila dela eta, ondorioz, sistemaren errendimenduan eragin handia duela. Horregatik isolamendua ahuldu egiten da sarritan, zenbait anomalien arriskuak onartuz, jarraian aztertuko direnak. Zenbait anomalia gertatzeko aukerak transakzioen isolamendu maila bereizten du.

Anomalia ezagunenak hauek dira: irakurketa zikina, irakurketa ez-errepikagarria, irakurketa fantasma, baina egia esan beste 5 dira: idazketa zikina, kurtsorea galdutako eguneratzea, eguneratzea galdua, irakurketa okertua, idazketa okertua.

Idazkera zikina

Anomaliaren funtsa transakzioek konprometitu gabeko datuak gainidatzi ditzaketela da.

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Anomalia hau arriskutsua da, ez bakarrik datuek bi transakzioak egin ondoren (argazkian bezala) gatazkak izan ditzaketelako, baizik eta atomotasuna urratzen delako: konprometitu gabeko datuak gainidaztea ahalbidetzen dugunez, ez dago argi nola atzera egin transakzio bat beste bati eragin gabe. .

Anomalia nahiko erraz trata daiteke: erregistroari blokeo bat eransten diogu grabazioari ekin aurretik, beste transakzioek erregistroa aldatzea debekatuz blokeoa kendu arte.

Irakurketa zikina

Irakurketa zikinak konprometitu gabeko datuak irakurtzea esan nahi du.

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Laginaren arabera ekintzak edo erabakiak hartu behar direnean sortzen dira arazoak.

Anomalia zuzentzeko, irakurtzeko blokeoa erantsi dezakezu, baina horrek eragin handia izango du errendimenduan. Askoz errazagoa da esatea atzera egiteko transakzio baterako datuen hasierako egoera (grabazioa hasi aurretik) sisteman gorde behar dela. Zergatik ez irakurri hortik? Nahikoa merkea da datu-base gehienek irakurketa zikina lehenespenez kentzea.

Galdutako eguneratzea

Galdutako eguneratzeak esan nahi du galdutako eguneratzeak, eta itzulpenak nahiko zehatz-mehatz islatzen du arazoaren funtsa:

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Izan ere, T2 transakzioaren emaitza alderantzikatu egin zen. Egoera hau idatzizko blokeo esplizitu edo inplizituen bidez zuzendu daiteke. Hau da, erregistroa eguneratzen dugu, eta gero blokeo inplizitua gertatzen da, edo egiten dugu hautatu eguneratzeko, irakurtzeko eta idazteko blokeoa gertatzea eraginez. Kontuan izan eragiketa hori nahiko arriskutsua dela: gure irakurketa β€œerrugabearekin” beste irakurketa batzuk blokeatzen ditugu. Datu-base batzuek seguruagoa eskaintzen dute hautatu partekatzeko, datuak irakurtzeko baina aldatzeko aukera emanez.

Kurtsoreak eguneratzea galdu du

Kontrol finagorako, oinarriek beste tresna batzuk eskain ditzakete, kurtsorea adibidez. Kurtsorea errenkada multzo bat daukan eta horien gainean errepikatzeko aukera ematen duen egitura da. deklaratu kurtsore_izena hautatu_adierazpenerako. Kurtsorearen edukia hautatuz deskribatzen da.

Zergatik behar duzu kurtsorea? Kontua da datu-base batzuek aukerak hautatutako erregistro guztietan blokeoa eskaintzen dutela (irakurtzeko egonkortasuna), edo soilik une honetan kurtsorea dagoen erregistroan (kurtsorearen egonkortasuna). Kurtsorea egonkortasunarekin, blokeo laburra ezartzen da, eta horrek blokeo kopurua murrizteko aukera ematen digu datu lagin handi baten gainean errepikatzen badugu. Hori dela eta, galdutako eguneratze-anomalia bereizita isolatzen da kurtsorearentzat.

Irakurketa errepikaezina

Irakurketa errepikaezina da gure transakzioa gauzatzean, erregistro bereko 2 irakurketa jarraian emaitza desberdinak ekarriko dituela, bi irakurketa horien artean beste transakzio batek esku hartu duelako, gure datuak aldatu eta konprometitu egin direlako.

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Zergatik da hau ere arazo bat? Imajinatu irudiko T2 transakzioaren helburua prezioa 150 USD baino txikiagoa duten ondasun guztiak hautatzea dela. Beste norbaitek eguneratu du prezioa 200 $-ra. Beraz, instalatutako iragazkiak ez zuen funtzionatu.

Anomalia hauek bi faseko interblokeoak gehitzen direnean edo MVCC mekanismoa erabiltzen denean gertatzeari uzten diote, bereiziki eztabaidatu nahiko nuke.

Phantom irakurketa

Phantom beste transakzio batek gehitutako datuen irakurketa da.

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Adibide gisa, anomalia hori gertatzen denean produktu merkeenaren hautaketa okerra dela ikus dezakegu.

Irakurketa fantastikoak kentzea nahiko zaila da dagoeneko. Ohiko blokeatzea ez da nahikoa, ezin dugulako blokeatu oraindik existitzen ez den zerbait. 2PL sistemek blokeo prediktiboa erabiltzen dute, eta MVCC sistemek, berriz, transakzio-planifikatzaile bat dute, txertatze batek eten ditzaketen transakzioak atzera egiten dituena. Lehen eta bigarren mekanismoak nahiko astunak dira.

Irakurri okerra

Irakurketa okerra gertatzen da hainbat taularekin lan egiten dugunean, eta horien edukia etengabe aldatu behar da.

Demagun mezuak eta haien meta informazioa adierazten duten taulak ditugula:

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Transakzio batek tauletatik irakurtzen du, besteak aldatzen ditu:

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

T1 transakzioaren ondorioz, mezuak title = Good du eta updated_by = T2, hau da, nolabaiteko inkoherentzia bat da.

Izan ere, errepikaezina den irakurketa da, baina hainbat taulen zati gisa.

Hori konpontzeko, T1-ek blokeoak jar ditzake irakurriko dituen errenkada guztietan, eta horrek eragotziko du T2 transakzioa informazioa aldatzea. MVCCren kasuan, T2 transakzioa bertan behera geratuko da. Anomalia honen aurkako babesa garrantzitsua izan daiteke kurtsoreak erabiltzen baditugu.

Idatzi okerra

Anomalia hori ere errazagoa da adibide batekin azaltzea: demagun gure sisteman gutxienez mediku batek egon behar duela guardian, baina bi medikuek euren betebeharra bertan behera uztea erabaki zuten:

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Anomalia horrek esan nahi zuen medikuetako bat ere ez zela guardian egongo. Zergatik gertatu da hau? Transakzioa beste transakzio batek urratu zezakeen baldintza bat egiaztatzen zuelako, eta isolamenduaren ondorioz ez genuen aldaketa hori ikusi.

Irakurketa errepikaezina bera da. Bestela, hautatzaileek blokeoak jar ditzakete erregistro horietan.

Idatzi okerra eta okerra irakurri aurreko anomalien konbinazioak dira. Idazketa oker har dezakezu, funtsean irakurketa fantasma bat dena. Demagun taula bat langileen izenak, soldatak eta lan egiten duten proiektua biltzen dituena:

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Zer eragin dezake datu-baseetan transakzioen isolamendu maila ahultzeak?

Ondorioz, argazki hau lortzen dugu: zuzendari bakoitzak uste zuen bere aldaketak ez zuela aurrekontua gainditzea ekarriko, beraz, langileen aldaketak egin zituzten, eta elkarrekin kostuak gainditzea ekarri zuten.

Arazoaren kausa irakurketa fantasmakoaren berdina da.

Findings

Datu-basean transakzioen isolamendu-maila lasaitzea segurtasunaren eta errendimenduaren arteko truke bat da; maila hau aukeratzea negozioak izan ditzakeen arriskuen arabera egin behar da zenbait anomalia gertatzen badira.

Ikastaroari buruzko informazio gehiago.

Iturria: www.habr.com

Gehitu iruzkin berria