PA152Notes 091 CS 245: Database System Principles Notes 09: Concurrency Control Hector Garcia-Molina Pavel Rychlý
PA152Notes 092 Řízení souběžného zpracování T1T2…Tn DB (omezení na konzistenci)
PA152Notes 093 Příklad: T1:Read(A)T2:Read(A) A A+100A A 2Write(A)Read(B) B B+100B B 2Write(B) Constraint: A=B
PA152Notes 094 Rozvrh A T1T2 Read(A); A A+100 Write(A); Read(B); B B+100; Write(B); Read(A);A A 2; Write(A); Read(B);B B 2; Write(B); AB
PA152Notes 095 Rozvrh B T1T2 Read(A);A A 2; Write(A); Read(B);B B 2; Write(B); Read(A); A A+100 Write(A); Read(B); B B+100; Write(B); AB
PA152Notes 096 Rozvrh C T1T2 Read(A); A A+100 Write(A); Read(A);A A 2; Write(A); Read(B); B B+100; Write(B); Read(B);B B 2; Write(B); AB
PA152Notes 097 Rozvrh D: T1T2 Read(A); A A+100 Write(A); Read(A);A A 2; Write(A); Read(B);B B 2; Write(B); Read(B); B B+100; Write(B); AB
PA152Notes 098 Rozvrh E T1T2’ Read(A); A A+100 Write(A); Read(A);A A 1; Write(A); Read(B);B B 1; Write(B); Read(B); B B+100; Write(B); AB Stené jako D kromě T2’ místo T1
PA152Notes 099 Jaké rozvrhy jsou „dobré“ bez ohledu na –původní stav –význam transakcí Díváme se pouze na pořadí čtení a zápisu Příklad: Sc=r 1 (A)w 1 (A)r 2 (A)w 2 (A)r 1 (B)w 1 (B)r 2 (B)w 2 (B)
PA152Notes 0910 Sc’=r 1 (A)w 1 (A) r 1 (B)w 1 (B)r 2 (A)w 2 (A)r 2 (B)w 2 (B) T 1 T 2 Příklad: Sc=r 1 (A)w 1 (A)r 2 (A)w 2 (A)r 1 (B)w 1 (B)r 2 (B)w 2 (B)
PA152Notes 0911 Jenomže, pro Sd: Sd=r 1 (A)w 1 (A)r 2 (A)w 2 (A) r 2 (B)w 2 (B)r 1 (B)w 1 (B) zde musí platit: T 2 musí předcházet T 1 v libovolném ekvivalentním rozvrhu tj., T 2 T 1
PA152Notes 0912 T 1 T 2 Sd nelze přetransformovat do ekvivalentního rozvrhu Sd není “ekvivalentní” žádnému sériovému rozvrhu Sd is “špatný” T 2 T 1 a zároveň, T 1 T 2
PA152Notes 0913 Zpět k Sc Sc=r 1 (A)w 1 (A)r 2 (A)w 2 (A)r 1 (B)w 1 (B)r 2 (B)w 2 (B) T 1 T 2 T 1 T 2 bez cyklů Sc je “ekvivalentí” sériovému rozvrhu (v tomto případě T 1,T 2 )
PA152Notes 0914 Pojmy Transakce: posloupnost akcí r i (x), w i (x) Konfliktní akce: r 1(A) w 2(A) w 1(A) w 2(A) r 1(A) w 2(A) Rozvrh: reprezentuje chronologické upspořádání, ve kterém mají být akce vyhodnoceny Sériový rozvrh: bez prolínání akcí transakcí
PA152Notes 0915 A co souběžné akce? Ti voláSystémInput(X) t x read(x,t)voládokončeno input(x) čas T2 volá write(B,S) System volá input(B) dokončeno B S Systém volá output(B) dokončeno
PA152Notes 0916 Tedy reálný efekt je buď S=…r 1 (x)…w 2 (b)… nebo S=…w 2 (B)…r 1 (x)…
PA152Notes 0917 Předpokládáme ekvivalenci k r 1 (A) w 2 (A) nebow 2 (A) r 1 (A) synchronizace na nižší úrovni Předpokládáme “atomické akce” A co souběžné konfliktní akce na jednom objektu? start r 1 (A)end r 1 (A) start w 2 (A) end w 2 (A) time
PA152Notes 0918 Definice S 1, S 2 jsou konfliktně ekvivalentní rozvrhy pokud lze S 1 transformovat do S 2 pomocí posloupnosti výměn nekonfliktních akcí
PA152Notes 0919 Definice Rozvrh je konfliktně serializovatelný pokud je konfliktně ekvivalentní nějakému sériovému rozvrhu.
PA152Notes 0920 Uzly: transakce v rozvrhu S Hrany: Ti Tj pokud - p i (A), q j (A) jsou akce v S - p i (A) < S q j (A) - minimálně jedna z p i, q j je zápis Závislostní graf P(S)
PA152Notes 0921 Cvičení: Nakreslete graf P(S) pro S = w 3 (A) w 2 (C) r 1 (A) w 1 (B) r 1 (C) w 2 (A) r 4 (A) w 4 (D) Je S serializovatelný?
PA152Notes 0922 Lemma S 1, S 2 konfliktně ekvivalentní P(S 1 )=P(S 2 ) Důkaz: Předpokl. P(S 1 ) P(S 2 ) T i : T i T j v S 1 a není v S 2 S 1 = …p i (A)... q j (A)… p i, q j S 2 = …q j (A)…p i (A)... konflikt S 1, S 2 nejsou konfliktně ekvivalentní
PA152Notes 0923 Pozn.: P(S 1 )=P(S 2 ) S 1, S 2 konfliktně ekvivalentní Protipříklad: S 1 =w 1 (A) r 2 (A) w 2 (B) r 1 (B) S 2 =r 2 (A) w 1 (A) r 1 (B) w 2 (B)
PA152Notes 0924 Věta P(S 1 ) acyklický S 1 konfliktně serializovatelný ( ) Předp. S 1 je konfliktně serializovatelný S s : S s, S 1 konfliktně ekvivalentní P(S s ) = P(S 1 ) P(S 1 ) acyklický, protože P(S s ) je acyklický
PA152Notes 0925 ( ) Přepd. P(S 1 ) acyklický Transformujme S 1 následovně: (1) Zvolme transakci T 1 do které nevede žádná hrana (2) Přesuneme všechny akce T 1 na začátek S 1 = ……. q j (A)……. p 1 (A)….. (3) nyní máme S 1 = (4) opakujme (1)—(3) pro zbytek! T 1 T 2 T 3 T 4 Věta P(S 1 ) acyklikcký S 1 konfliktně serializovatelný
PA152Notes 0926 Jak zajistit serializovatelnost rozvrhů? 1. možnost: necháme běžet systém, zaznamenáváme P(S) na konci dne kontrolujeme P(S) na cykly a určíme, jestli byl výpočet správný
PA152Notes možnost: zajistíme, aby cykly v P(S) nevznikaly T 1 T 2 …..T n Scheduler DB Jak zajistit serializovatelnost rozvrhů?
PA152Notes 0928 Protokol zámků Dvě nové akce: lock (exclusive):l i (A) unlock:u i (A) scheduler T 1 T 2 lock table
PA152Notes 0929 Pravidlo #1: dobře utvořené transakce T i : … l i (A) … p i (A) … u i (A)...
PA152Notes 0930 Pravidlo #2 Korektní rozvrh S = …….. l i (A) ………... u i (A) ……... žádný l j (A)
PA152Notes 0931 Jaké rozvrhy jsou korektní? Jaké transakce jsou dobře utvořené? S1 = l 1 (A)l 1 (B)r 1 (A)w 1 (B)l 2 (B)u 1 (A)u 1 (B) r 2 (B)w 2 (B)u 2 (B)l 3 (B)r 3 (B)u 3 (B) S2 = l 1 (A)r 1 (A)w 1 (B)u 1 (A)u 1 (B) l 2 (B)r 2 (B)w 2 (B)l 3 (B)r 3 (B)u 3 (B) S3 = l 1 (A)r 1 (A)u 1 (A)l 1 (B)w 1 (B)u 1 (B) l 2 (B)r 2 (B)w 2 (B)u 2 (B)l 3 (B)r 3 (B)u 3 (B) Cvičení:
PA152Notes 0932 Jaké rozvrhy jsou korektní? Jaké transakce jsou dobře utvořené? S1 = l 1 (A)l 1 (B)r 1 (A)w 1 (B)l 2 (B)u 1 (A)u 1 (B) r 2 (B)w 2 (B)u 2 (B)l 3 (B)r 3 (B)u 3 (B) S2 = l 1 (A)r 1 (A)w 1 (B)u 1 (A)u 1 (B) l 2 (B)r 2 (B)w 2 (B)l 3 (B)r 3 (B)u 3 (B) S3 = l 1 (A)r 1 (A)u 1 (A)l 1 (B)w 1 (B)u 1 (B) l 2 (B)r 2 (B)w 2 (B)u 2 (B)l 3 (B)r 3 (B)u 3 (B) Cvičení:
PA152Notes 0933 Rozvrh F T1 T2 l 1 (A);Read(A) A A+100;Write(A);u 1 (A) l 2 (A);Read(A) A Ax2;Write(A);u 2 (A) l 2 (B);Read(B) B Bx2;Write(B);u 2 (B) l 1 (B);Read(B) B B+100;Write(B);u 1 (B)
PA152Notes 0934 Rozvrh F T1 T l 1 (A);Read(A) A A+100;Write(A);u 1 (A) 125 l 2 (A);Read(A) A Ax2;Write(A);u 2 (A) 250 l 2 (B);Read(B) B Bx2;Write(B);u 2 (B) 50 l 1 (B);Read(B) B B+100;Write(B);u 1 (B) A B
PA152Notes 0935 Pravidlo #3 Two phase locking (2PL) Dvoufázové zamykání pro trasakce T i = ……. l i (A) ………... u i (A) ……... no unlocks no locks
PA152Notes 0936 # zámků držených Ti čas Rostoucí Klesající fáze fáze
PA152Notes 0937 Rozvrh G pozastaveno
PA152Notes 0938 Rozvrh G pozastaveno
PA152Notes 0939 Rozvrh G pozastaveno
PA152Notes 0940 Rozvrh H (T 2 obráceně) pozastaveno
PA152Notes 0941 Uvázlé transakce jsou odmítnuty (roll back) –Nemají žádný efekt –Neobjeví se v rozvrhu Tj., Rozvrh H = Toto místo je záměrně prázdné!
PA152Notes 0942 Další krok: Ukážeme, že pravidla #1,2,3 zajišťují konfliktní serializovatelnost rozvrhů
PA152Notes 0943 Konfliktní pravidla pro l i (A), u i (A): l i (A), l j (A) konflikt l i (A), u j (A) konflikt Pozn.: konflikt není,,...
PA152Notes 0944 Věta Pravidla #1,2,3 serializovatelný (2PL) rozvrh Definice Shrink(Ti) = SH(Ti) = první akce unlock v Ti
PA152Notes 0945 Lemma Ti Tj in S SH(Ti) < S SH(Tj) Důkaz: Ti Tj znamená S = … p i (A) … q j (A) …; p,q konflikt Z pravidel 1,2: S = … p i (A) … u i (A) … l j (A)... q j (A) … Z prav. 3: SH(Ti) SH(Tj) tedy SH(Ti) < S SH(Tj)
PA152Notes 0946 Důkaz: (1) Předp. P(S) obsahuje T 1 T 2 …. T n T 1 (2) Z lemmatu: SH(T 1 ) < SH(T 2 ) <... < SH(T 1 ) (3) To je nemožné, tedy P(S) je acyklický (4) S je konfliktně serializovatelný Věta Rules #1,2,3 konfliktně (2PL) serializovatelný rozvrh
PA152Notes 0947 Následující vylepšení jednoduchého protokolu dvoufázového zamykání pouze zvyšují výkon a paralelismus…. –sdílené zámky –různá granularita –vznik fantómů při operacích insert, delete –jiné typy řízení přístupu
PA152Notes 0948 Sdílené zámky Dosud: S =...l 1 (A) r 1 (A) u 1 (A) … l 2 (A) r 2 (A) u 2 (A) … Není konflikt Místo toho: S=... ls 1 (A) r 1 (A) ls 2 (A) r 2 (A) …. us 1 (A) us 2 (A)
PA152Notes 0949 Akce zamknutí l-t i (A): zamkne A v módu t (t je S nebo X) u-t i (A): odemkne A v módu t (t je S nebo X) Zkráceně: u i (A): odemkne A v libovolném módu T i má zamčené A
PA152Notes 0950 Pravidlo #1 Dobře utvořené transakce T i =... l-S 1 (A) … r 1 (A) … u 1 (A) … T i =... l-X 1 (A) … w 1 (A) … u 1 (A) …
PA152Notes 0951 Co s transakcemi, které čtou i zapisují stejný objekt? Možnost 1: Žádá exkluzivní zámek T i =...l-X 1 (A) … r 1 (A)... w 1 (A)... u(A) …
PA152Notes 0952 Možnost 2: Povýšení (Tj. potřebuje číst a neví, jestli bude zapisovat…) T i =... l-S 1 (A) … r 1 (A)... l-X 1 (A) …w 1 (A)...u(A)… Bereme jako: - 2. zámek na A, nebo - uvolni S, dej zámek X Co s transakcemi, které čtou i zapisují stejný objekt?
PA152Notes 0953 Pravidlo #2 Korektní plán S =....l-S i (A) … … u i (A) … žádné l-X j (A) S =... l-X i (A) … … u i (A) … žádné l-X j (A) žádné l-S j (A)
PA152Notes 0954 Způsob souhrnu Pravidla #2 Matice kompatibility Comp S X S true false Xfalse false
PA152Notes 0955 Pravidlo # 3 2PL transakcí Kromě povýšení beze změny: (I) Pokud povýšení dává další zámek (tj., S {S, X}) beze změny! (II) Pokud povýšení uvolňuje (sdílený) zámek (tj., S X) - povolujeme v rostoucí fázi
PA152Notes 0956 Důkaz: podobný důkazu pro zámky X Detail: l-t i (A), l-r j (A) nejsou v konfliktu pokud comp(t,r) l-t i (A), u-r j (A) nejsou v konfliktu pokud comp(t,r) Věta Pravidla 1,2,3 . Konfliktně serializovatelný rozvrh pro zámky S/X
PA152Notes 0957 Jiné typy zámků kromě S/X Příklady: (1) přičítací zámek (incremental) (2) povyšovaný zámek (update)
PA152Notes 0958 Příklad (1): přičítací zámek Atomická akce přičtení: IN i (A) {Read(A); A A+k; Write(A)} IN i (A), IN j (A) nejsou v konfliktu! A=7 A=5A=17 A=15 IN i (A) +2 IN j (A) +10 IN j (A) +2 IN i (A)
PA152Notes 0959 CompSXI S X I
PA152Notes 0960 CompSXI STFF XFFF IFFT
PA152Notes 0961 Update locks
PA152Notes 0962 Řešení Pokud chce T i číst A a ví, že by později mohla chtít do A i zapisovat, žádá povyšovaný zámek (ne sdílený)
PA152Notes 0963 CompSXU S X U Nová žádost Již držené zámky
PA152Notes 0964 CompSXU STFT XFFF U T/F FF -> symetrická tabulka? Nová žádost Již držené zámky
PA152Notes 0965 Poznámka: objekt A může být ve stejném čase zamčený zámky různých typů... S 1 =...l-S 1 (A)…l-S 2 (A)…l-U 3 (A)… l-S 4 (A)…? l-U 4 (A)…? Abychom udělili zámek typu t, musí být kompatibilní se všemi v té době drženými zámky na objektu A
PA152Notes 0966 Jak pracuje zamykání v praxi? Každý systém je jiný (Tj., nemusí ani dokonce zajišťovat KONFLIKTNí-SERIALIZOVATELNOST) Ale existuje jeden (zjednodušený) způsob...
PA152Notes 0967 (1) Nevěř transakcím jejich žádosti o zamčení či odemčení. (2) Drž všechny zámky až do commitu Počet zámků čas Jednoduchý systém zamykání:
PA152Notes 0968 Ti Read(A),Write(B) l(A),Read(A),l(B),Write(B)… Read(A),Write(B) Scheduler, part I Scheduler, part II DB tabulka zámků
PA152Notes 0969 Tabulka zámků princip A B C ... Lock info for B Lock info for C null znamená odemčeno pro každý objekt
PA152Notes 0970 Ale používáme hašovací tabulku: A Pokud objekt není v tabulce, je odemčen. Lock info for A A... H
PA152Notes 0971 Lock info for A - příklad tran mode wait? Nxt T_link Object:A Group mode:U Waiting:yes List: T1 S no T2 U no T3X yes To other T3 records
PA152Notes 0972 Jaké objekty zamykáme? ? Relation A Relation B... Tuple A Tuple B Tuple C... Disk block A Disk block B... DB
PA152Notes 0973 Zamykání funguje ve všech případech, ale jsou lepší větší nebo menší objekty? zamykání větších objektů (tj. relace) –potřebujeme méně zámků –menší souběh zamykání menších objektů (tj., záznamy, položky) –více zámků –větší souběh
PA152Notes 0974 Příklad: větší i menší R1 t1t1 t2t2 t3t3 t4t4 T 1 (IS) T 1 (S), T 2 (S)
PA152Notes 0975 Příklad: větší i menší R1 t1t1 t2t2 t3t3 t4t4 T 1 (IS) T 1 (S), T 2 (IX) T 2 (IX)
PA152Notes 0976 Násobná granularita Compžadatel IS IX S SIX X IS držitel IX S SIX X
PA152Notes 0977 Násobná granularita Compžadatel IS IX S SIX X IS držitel IX S SIX X TTTTF F F F FFFFF FFFT FTFT FFTT
PA152Notes 0978 ParentChild can belocked in IS IX S SIX X P C
PA152Notes 0979 zámekpřípustný zámek rodičepotomka IS IX S SIX X R P IS, S IS, S, IX, X, SIX [S, IS] ne nutně X, IX, [SIX] žádný
PA152Notes 0980 Pravidla (1) Dodržuj funkci comp pro násobnou granularitu (2) Zamykání vždy začíná od kořene (3) Ti může zamknout uzel Q zámkem S nebo IS, pokud má zamčeno parent(Q) zám. IX nebo IS (4) Ti může zamknout uzel Q zámkem X,SIX,IX pokud má zamčeno parent(Q) zám. IX,SIX (5) Ti je dvoufázová (6) Ti může odemknout uzel Q, pokud nemá zamčeného žádného potomka Q
PA152Notes 0981 Cvičení: Může T 2 přistupovat k objektu f 2.2 v módu X? O jaké zámky bude T 2 žádat? R1 t1t1 t2t2 t3t3 t4t4 T 1 (IX) f 2.1 f 2.2 f 3.1 f 3.2 T 1 (IX) T 1 (X)
PA152Notes 0982 Cvičení: Může T 2 přistupovat k objektu f 2.2 v módu X? O jaké zámky bude T 2 žádat? R1 t1t1 t2t2 t3t3 t4t4 T 1 (X) f 2.1 f 2.2 f 3.1 f 3.2 T 1 (IX)
PA152Notes 0983 Cvičení: Může T 2 přistupovat k objektu f 3.1 v módu X? O jaké zámky bude T 2 žádat? R1 t1t1 t2t2 t3t3 t4t4 T 1 (S) f 2.1 f 2.2 f 3.1 f 3.2 T 1 (IS)
PA152Notes 0984 Cvičení: Může T 2 přistupovat k objektu f 2.2 v módu S? O jaké zámky bude T 2 žádat? R1 t1t1 t2t2 t3t3 t4t4 T 1 (IX) f 2.1 f 2.2 f 3.1 f 3.2 T 1 (SIX) T 1 (X)
PA152Notes 0985 Cvičení: Může T 2 přistupovat k objektu f 2.2 v módu X? O jaké zámky bude T 2 žádat? R1 t1t1 t2t2 t3t3 t4t4 T 1 (IX) f 2.1 f 2.2 f 3.1 f 3.2 T 1 (SIX) T 1 (X)
PA152Notes 0986 Operace insert + delete Insert A Z ...
PA152Notes 0987 Modifikace pravidel zamykání: (1) Před smazáním A zamkni A zámkem X (2) Při vložení A zamkni A zámkem X
PA152Notes 0988 Fantóm Problém zůstává: Fantóm Příklad: relace R (E#,name,…) omezení: E# je klíč použijeme zamykání záznamů RE#Name…. o155Smith o275Jones
PA152Notes 0989 T 1 : Insert into R T 2 : Insert into R T 1 T 2 S 1 (o 1 ) S 2 (o 1 ) S 1 (o 2 ) S 2 (o 2 ) Check Constraint Insert o 3 [99,Gore,..] Insert o 4 [99,Bush,..]...
PA152Notes 0990 Řešení Použijeme strom s násobnou granularitou Před vložením uzlu Q zamkneme parent(Q) zámkem X R1 t1t1 t2t2 t3t3
PA152Notes 0991 Příklad T 1 : Insert T 2 : Insert T 1 T 2 X 1 (R) Check constraint Insert U(R) X 2 (R) Check constraint Oops! e# = 99 already in R! pozastaveno
PA152Notes 0992 Místo R můžeme použít index na R: Příklad: R Index 0<E#<100 Index 100<E#<200 E#=2E#=5 E#=107 E#=109...
PA152Notes 0993 Následuje: Tree-based concurrency control Stromové řízení souběžného zpracování Validation concurrency control Řízení souběžného zpracování kontrolami
PA152Notes 0994 Příklad A B C D EF všechny objekty jsou přístupné z kořene následováním ukazatelů zámek T 1 můžeme uvolnit zámek na A, pokud už A nebudeme potřebovat?
PA152Notes 0995 Idea: průchod “Monkey Bars” A B C D EF zámek T1
PA152Notes 0996 Proč to funguje? Všechny T i začínají z kořene; zámek X T i T j T i zamkne kořen před T j Funguje, i když nezačínáme vždy z kořene Root Q T i T j
PA152Notes 0997 Pravidla stromového protokolu (exkluzivní zámky) (1) První zámek může T i dát na libovolný uzel (2) Potom může Ti zamknout Q, pokud má zamčeno parent(Q) (3) Uzly je možné odemykat kdykoliv (4) Pokud T i odemkne Q, nemůže Q zamknout znovu
PA152Notes 0998 Stromové protokoly zamykání jsou používány pro přístupy k B-stromům Tj. během vkládání odemkneme rodiče, pokud se potomek již nemůže rozdělit Root
PA152Notes 0999 Kontroly (Validation) Transakce mají 3 fáze: (1) Read –čtení všech potřebných hodnot z DB –zápis do dočasných oblastí –bez zamykání (2) Validate –kontrola jestli je rozvrh serializovatelný (3) Write –zápis do DB
PA152Notes Klíčová idea Kontrola je atomická operace Pokud jsou T 1, T 2, T 3, … upořádány podle času kontroly, výsledný rozvrh bude konfliktně ekvivalentní rozvrhu S s = T 1 T 2 T 3...
PA152Notes Implementace vyžaduje udržování dvou množin : FIN = transakce, které ukončily 3. fázi (dokončené transakce) VAL = transakce, které ukončily 2. fázi (kontrolu) a pro každou transakci Ti ignore(Ti) RS(Ti), WS(Ti)
PA152Notes Příklad 1 (co se nesmí stát): RS(T 2 )={B} RS(T 3 )={A,B} WS(T 2 )={B,D} WS(T 3 )={C} time T 2 start T 2 validated T 3 validated T 3 start =
PA152Notes Příklad 2 (co se nesmí stát): RS(T 2 )={A} RS(T 3 )={A,B} WS(T 2 )={D,E} WS(T 3 )={C,D} time T 2 validated T 3 validated finish T 2 BAD: w 3 (D) w 2 (D)
PA152Notes Pravidla kontroly pro T j : (1) Jakmile T j začne fázi 1: ignore(T j ) FIN (2) kontrola T j : if check (T j ) then [ VAL VAL U {T j }; do write phase; FIN FIN U {T j } ]
PA152Notes check(T j ) For T i VAL - ignore(T j ) DO IF [ WS(T i ) RS(T j ) OR ( T i FIN AND WS(T i ) WS(T j ) )] THEN RETURN false; RETURN true;
PA152Notes Cvičení: T: RS(T)={A,B} WS(T)={A,C} V: RS(V)={B} WS(V)={D,E} U: RS(U)={B} WS(U)={D} W: RS(W)={A,D} WS(W)={A,C} start validate finish
PA152Notes Kontroly (patřící mezi optimistické strategie řízení souběžného zpracování) jsou použitelné v případech: - konflikty jsou málo časté - máme dostatek systémových zdrojů - máme omezení reálného času