Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Bonjou tout moun. Vladislav Rodin an kontak. Kounye a mwen se lidè kou pou kou High Workload Architect nan OTUS epi mwen anseye kou achitekti lojisyèl tou.

Anplis de anseye, jan ou te remake, mwen ekri materyèl orijinal pou blog OTUS sou Habré e mwen vle kowenside ak atik jodi a pou kowenside ak lansman kou a. "PostgreSQL", ki ouvè pou enskripsyon kounye a.

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Entwodiksyon

В Denye fwa nou te pale sou lefèt ke tranzaksyon nan baz done sèvi yo rezoud de pwoblèm: asire tolerans fay ak aksè a done nan yon anviwònman konpetitif. Pou fè travay sa yo konplètman, tranzaksyon an dwe gen pwopriyete ACID. Jodi a nou pral pale an detay sou lèt la mwen (izolasyon) nan abrevyasyon sa a.

D '

Izolasyon rezoud pwoblèm aksè done nan yon anviwònman konpetitif, esansyèlman bay pwoteksyon kont kondisyon ras yo. Idealman, izolasyon vle di serializasyon, ki se yon pwopriyete ki asire ke rezilta a nan egzekite tranzaksyon an paralèl se menm jan ak si yo te egzekite sekans. Pwoblèm prensipal la ak pwopriyete sa a se ke li trè difisil bay teknikman epi, kòm yon rezilta, gen yon enpak siyifikatif sou pèfòmans sistèm. Se poutèt sa izolasyon souvan febli, aksepte risk ki genyen nan anomali sèten, ki pral diskite anba a. Posiblite pou sèten anomali ki rive jisteman karakterize nivo izolasyon tranzaksyon an.

Anomalies ki pi koni yo se: lekti sal, lekti ki pa repete, lekti fantom, men an reyalite gen 5 plis: ekri sal, aktyalizasyon ki pèdi kurseur, aktyalizasyon pèdi, li swi, ekri skew.

Ekri sal

Sans anomali a se ke tranzaksyon yo ka ranplase done ki pa angaje yo.

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Anomali sa a danjere non sèlman paske done yo ka konfli apre yo fin komèt tou de tranzaksyon yo (tankou nan foto a), men tou paske atomite yo vyole: depi nou pèmèt done ki pa angaje yo dwe ranplase, li pa klè ki jan yo dewoule yon tranzaksyon san yo pa afekte yon lòt. .

Anomali a ka trete byen tou senpleman: nou tache yon seri a nan dosye a anvan yo kòmanse anrejistreman an, entèdi lòt tranzaksyon yo chanje dosye a jiskaske kadna a retire.

Lekti sal

Lekti sal vle di li done ki pa angaje yo.

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Pwoblèm parèt lè aksyon oswa desizyon yo bezwen fèt dapre echantiyon an.

Pou korije anomali a, ou ka tache yon seri lekti, men sa a pral anpil enpak sou pèfòmans. Li pi senp pou w di ke pou yon ranbousman nan yon tranzaksyon, premye eta a nan done yo (anvan kòmansman anrejistreman an) dwe sove nan sistèm nan. Poukisa nou pa li de la? Li pa chè ase ke pifò baz done retire lekti sal pa default.

Pèdi aktyalizasyon

Mizajou pèdi vle di mizajou pèdi, e tradiksyon an byen reflete sans pwoblèm nan:

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

An reyalite, rezilta tranzaksyon T2 te ranvèse. Sitiyasyon sa a ka korije pa kadna ekri eksplisit oswa implicite. Sa vle di, nou swa tou senpleman mete ajou dosye a, ak Lè sa a, yon seri implicite rive, oswa nou fè chwazi pou mete ajou, sa ki lakòz yon seri lekti ak ekri rive. Tanpri sonje ke operasyon sa a se byen danjere: ak lekti "inosan" nou an, nou bloke lòt lekti. Gen kèk baz done ki ofri plis sekirite chwazi pou pataje, ki pèmèt done yo dwe li men pa modifye.

Kurseur pèdi aktyalizasyon

Pou pi rafine kontwòl, baz yo ka ofri lòt zouti, tankou yon kurseur. Yon kurseur se yon estrikti ki gen yon seri ranje epi ki pèmèt ou repete sou yo. deklare cursor_name pou select_statement. Sa ki nan kurseur yo dekri pa seleksyone.

Poukisa ou bezwen yon kurseur? Reyalite a se ke kèk baz done ofri yon seri sou tout dosye chwazi pa chwazi (li estabilite), oswa sèlman sou dosye a sou ki kurseur a sitiye kounye a (estabilite kurseur). Avèk estabilite kurseur, kout lock aplike, ki pèmèt nou redwi kantite kadna si nou repete sou yon gwo echantiyon done. Se poutèt sa, anomali nan aktyalizasyon pèdi izole separeman pou kurseur la.

Lekti ki pa repete

Lekti ki pa repete se ke pandan ekzekisyon tranzaksyon nou an, 2 lekti youn apre lòt nan menm dosye a ap mennen nan rezilta diferan, paske yon lòt tranzaksyon entèvni ant de lekti sa yo, chanje done nou yo epi li te komèt.

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Poukisa sa a se menm yon pwoblèm? Imajine ke objektif tranzaksyon T2 nan foto a se chwazi tout machandiz ki gen pri mwens pase 150 USD. Yon lòt moun mete pri a $200. Kidonk, filtè enstale a pa t travay.

Anomalies sa yo sispann fèt lè yo ajoute de faz entèlocks oswa lè yo itilize mekanis MVCC la, ki mwen ta renmen diskite apa.

Fantom li

Phantom se yon lekti done ki te ajoute pa yon lòt tranzaksyon.

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Kòm yon egzanp, nou ka obsève seleksyon an kòrèk nan pwodwi ki pi bon mache lè anomali sa a rive.

Debarase m de lekti fantom deja byen difisil. Bloke regilye pa ase, paske nou pa ka bloke yon bagay ki poko egziste. Sistèm 2PL yo sèvi ak prediksyon prediksyon, pandan y ap sistèm MVCC yo gen yon pwogramasyon tranzaksyon ki refè tranzaksyon ki ta ka deranje pa yon insert. Tou de mekanis yo premye ak dezyèm yo byen lou.

Li skew

Lekti skew rive lè nou travay ak plizyè tab, sa ki dwe chanje toujou.

Ann di nou gen tab ki reprezante pòs ak enfòmasyon meta yo:

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Yon tranzaksyon li nan tab yo, lòt la modifye yo:

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Kòm yon rezilta nan tranzaksyon T1, pòs la gen tit = Bon, ak updated_by = T2, ki se yon kalite enkonsistans.

An reyalite, sa a se yon lekti ki pa repete, men kòm yon pati nan plizyè tab.

Pou repare sa a, T1 ka mete kadna sou tout ranje ke li pral li, ki pral anpeche tranzaksyon T2 chanje enfòmasyon an. Nan ka MVCC, tranzaksyon T2 a pral anile. Pwoteksyon kont anomali sa a ka vin enpòtan si nou itilize kurseur.

Ekri skew

Anomali sa a tou pi fasil pou eksplike ak yon egzanp: sipoze ke nan sistèm nou an omwen yon doktè ta dwe nan sèvis, men tou de doktè deside anile devwa yo:

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Anomali a te vle di ke okenn nan doktè yo ta dwe nan sèvis. Poukisa sa te rive? Paske tranzaksyon an t ap tcheke yon kondisyon ki ka vyole pa yon lòt tranzaksyon, e akòz izolasyon nou pa t wè chanjman sa a.

Sa a se menm lekti a ki pa repete. Altènativman, chwazi yo ka mete kadna sou dosye sa yo.

Ekri skew ak li skew se konbinezon anomali anvan yo. Ou ka konsidere ekri skew, ki se esansyèlman yon lekti fantom. Konsidere yon tablo ki gen non anplwaye yo, salè yo, ak pwojè yo travay sou:

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Ki sa ki ka rezilta nan febli nivo izolasyon tranzaksyon an nan baz done?

Kòm rezilta, nou jwenn foto sa a: chak manadjè te panse ke chanjman yo pa t ap mennen nan depase bidjè, kidonk yo te fè chanjman pèsonèl ki ansanm te mennen nan debòde pri.

Kòz pwoblèm nan se egzakteman menm jan ak nan lekti fantom.

Jwenn

Rilaks nivo izolasyon tranzaksyon an nan baz done a se yon echanj ant sekirite ak pèfòmans; chwa nivo sa a ta dwe apwoche ki baze sou risk potansyèl yo nan biznis la si sèten anomali rive.

Aprann plis sou kou a.

Sous: www.habr.com

Add nouvo kòmantè