Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilJohana Žáková
1
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý
2
PA152Notes 102 Další oblasti souběžného zpracování kaskádový rollback, obnovitelný rozvrh uváznutí –prevence –detekce
3
PA152Notes 103 Příklad: T j T i W j (A) r i (A) Commit T i Abort T j Řízení souběžného zpracování a obnova … … … … … … Kaskádový rollback (raději ne!)
4
PA152Notes 104 Rozvrh je konfliktně serializovatelný T j T i ale ne obnovitelný
5
PA152Notes 105 Pro každou transakci potřebujeme dělat konečné rozhodnutí: –commit - systém zajistí, že transakce je nebo bude dokončena –abort - systém zajistí, že transakce je nebo bude zrušena (nebude mít žádný efekt)
6
PA152Notes 106 Přidáme další dvě akce: C i - commit T i A i - abort T i
7
PA152Notes 107... Zpět k příkladu: T j T i W j (A) r i (A) C i může být tady commit?
8
PA152Notes 108 Definice T i čte z T j v S (T j S T i ) pokud (1) w j (A) < S r i (A) (2) a j < S r i (A) (< : není před ) (3) If w j (A) < S w k (A) < S r i (A) then a k < S r i (A)
9
PA152Notes 109 Definice Rozvrh S je obnovitelný pokud kdykoliv T j S T i a j i a C i S tak C j < S C i
10
PA152Notes 1010 Poznámka: v transakcích jsou čtení i zápisy před commit nebo abort If C i T i, then r i (A) < C i w i (A) < C i If A i T i, then r i (A) < A i w i (A) < A i a navíc právě jedna akce Ci nebo Ai na transakci
11
PA152Notes 1011 Jak zajistit obnovitelné rozvrhy?
12
PA152Notes 1012 striktní 2PL: zámky pro zápis držíme až do commit T j T i W j (A) C j u j (A) r i (A)...
13
PA152Notes 1013 Kontroly (validation) beze změny!
14
PA152Notes 1014 S je obnovitelný pokud má každá transakce commit až po dokončení (commit) všech transakcí, ze kterých čte. S zamezuje kaskádovému rollback pokud každá transakce čte hodnoty pouze dokončených transakcí.
15
PA152Notes 1015 Rozvrh S je striktní pokud každá transakce čte a zapisuje hodnoty pouze dokončených transakcí. Avoids cascading rollback RC ACR ST SERIAL
16
PA152Notes 1016 Příklady Obnovitelný: –w 1 (A) w 1 (B) w 2 (A) r 2 (B) c 1 c 2 Zamezuje kaskádovému Rollback: –w 1 (A) w 1 (B) w 2 (A) c 1 r 2 (B) c 2 Striktní: –w 1 (A) w 1 (B) c 1 w 2 (A) r 2 (B) c 2 Předpokl. w 2 (A) děláme bez čtení
17
PA152Notes 1017 Uváznutí (Deadlocks) detekce –graf čekání prevence –upořádání zdrojů –časový limit –čekej-zemři –Wound-wait
18
PA152Notes 1018 Detekce uváznutí vytváříme (inkrementálně nebo opakovaně) graf čekání používáme zámky pokud najdeme cyklus, rollback viníka T1T1 T3T3 T2T2 T6T6 T5T5 T4T4 T7T7
19
PA152Notes 1019 Uspořádání zdrojů uspořádáme všechny elementy A 1, A 2, …, A n transakceT může zamknout A i po A j pouze pokud i > j Problém : žádosti o zámky jsou nepřirozené
20
PA152Notes 1020 Časový limit Pokud transakce čeká více než L sec., zrušit! jednoduché schéma těžká volba L
21
PA152Notes 1021 Čekej-zemři Transakce dostávají časovou známku ts(T i ) při svém startu T i může čekat na T j pouze pokud ts(T i )< ts(T j ) jinak umírá (je zrušena)
22
PA152Notes 1022 T 1 (ts =10) T 2 (ts =20) T 3 (ts =25) wait Příklad: wait?
23
PA152Notes 1023 T 1 (ts =22) T 2 (ts =20) T 3 (ts =25) wait(A) Druhý příklad: žádá A: čeká na T 2 nebo T 3 ? Pozn.: ts mezi 20 a 25.
24
PA152Notes 1024 T 1 (ts =22) T 2 (ts =20) T 3 (ts =25) wait(A) Druhý příklad (pokračování): wait(A) Jedna možnost: T 1 čeká pouze na T 3. Jakmile T 2 získá zámek, T 1 musí zemřít!
25
PA152Notes 1025 T 1 (ts =22) T 2 (ts =20) T 3 (ts =25) wait(A) Druhý příklad (pokračování): wait(A) Jiná možnost: T 1 získá zámek na A až po dokončení T 2 i T 3, tedy T 1 čeká na T 2 i T 3 T 1 umírá okamžitě!
26
PA152Notes 1026 T 1 (ts =22) T 2 (ts =20) T 3 (ts =25) wait(A) Druhý příklad (pokračování): wait(A) Další možnost: T 1 má být před T 2, tedy T 1 čeká pouze na T 3 ; T 2 tedy čeká na T 3 i T 1... T 2 může strádat? redundantní hrana
27
PA152Notes 1027 zraň-čekej Transakce dostávají časovou známku ts(T i ) při svém startu T i zraňuje T j pokud ts(T i )< ts(T j ) jinak čeká “zraň”: rollback na T j a přiděl zámek pro T i
28
PA152Notes 1028 T 1 (ts =25) T 2 (ts =20) T 3 (ts =10) wait Příklad: wait
29
PA152Notes 1029 T 1 (ts =15) T 2 (ts =20) T 3 (ts =10) wait(A) Druhý příklad: requests A: wait for T 2 or T 3 ? Pozn.: ts mezi 10 a 20.
30
PA152Notes 1030 T 1 (ts =15) T 2 (ts =20) T 3 (ts =10) wait(A) Druhý příklad (pokračování): wait(A) Jedna možnost: T 1 čeká pouze na T 3. Ale jakmile T 2 dostane zámek, T 1 čeká na T 2 a zraňuje T 2.
31
PA152Notes 1031 T 1 (ts =15) T 2 (ts =20) T 3 (ts =10) wait(A) Druhý příklad (pokračování): wait(A) Jiná možnost: T 1 získá zámek na A až po dokončení T 2 i T 3, tedy T 1 čeká na T 2 i T 3 T 2 zraní okamžitě!
32
PA152Notes 1032 T 1 (ts =15) T 2 (ts =20) T 3 (ts =10) wait(A) Druhý příklad (pokračování): wait(A) Jiná možnost: T 1 má být před T 2, tedy T 1 čeká pouze na T 3 ; T 2 tedy čeká na T 3 a T 1... T 2 otočen!
33
PA152Notes 1033 Uživatelské příkazy Mnoho různých variant, obecně Begin_work Commit_work Abort_work
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.