Transakční zpracování

Podobné dokumenty
DBS transakční zpracování

Transakční zpracování Bezpečnost databází. Vladimíra Zádová, KIN, EF TUL- DBS 1

Architektura SW pro transakční zpracování se skládá ze 3 modulů: - manažer dat - rozvrhovač - manažer transakcí

Transak ní zpracování I

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 3 PARALELNÍ PROCESY V DATABÁZÍCH

TÉMATICKÝ OKRUH TZD, DIS a TIS

Paralelní přístup k databázi

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

Databázové systémy. transakce. Tomáš Skopal. * vlastnosti transakcí * rozvrhy

9. Transakční zpracování

Transakce a zamykání Jiří Tomeš

Zotavení z chyb. Databázové systémy

9. Transakční zpracování

Řízení souběžného přístupu k datům v systémech řízení báze dat

Databáze I. 5. přednáška. Helena Palovská

Distribuované transakce

Téma 11 Transakce a řízení souběhu

Transakce. Ing. Marek Sušický, RNDr. Ondřej Zýka

Databázové systémy. transakce. Tomáš Skopal. * uzamykací protokoly * alternativní protokoly * zotavení

Databáze II. 2. přednáška. Helena Palovská

D A T A B Á Z O V É S Y S T É M Y

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Databázové systémy úvod

Architektury paralelních počítačů II.

4IT218 Databáze. 4IT218 Databáze

10. Transakce, řízení konkurenčních přístupů.

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Okruhy z odborných předmětů

8.2 Používání a tvorba databází

Databázové systémy I. 7. Přednáška

Konzistentnost. Přednášky z distribuovaných systémů

Databázové systémy úvod

Databázové systémy úvod

IW3 MS SQL SERVER 2014

Databázové systémy BIK-DBS

Maturitní otázky z předmětu PROGRAMOVÁNÍ

1. Databázové systémy (MP leden 2010)

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Relační datový model. Integritní omezení. Normální formy Návrh IS. funkční závislosti multizávislosti inkluzní závislosti

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

VzorTest-1. Prohlídka náhledu

BAKALÁŘSKÁ PRÁCE. Dung NGUYEN TIEN Výuková aplikace zpracování databázových transakcí

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Databáze II. 1. přednáška. Helena Palovská

Příprava na zk. z KIV/DS

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

Vlastnosti ACID. Příklad převodu peněz

Text úlohy. Systémový katalog (DICTIONARY):

Administrace Oracle - Správa zdrojů

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

Služba ve Windows. Služba (service) je program

Úloha 1. Úloha 2. Úloha 3. Text úlohy. Text úlohy. Text úlohy

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Konzistence databáze v nekonzistentním světě

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Úvod do databázových systémů. Lekce 1

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Implementace dávkových operací

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

HELIOS - Zálohování BüroKomplet, s.r.o.

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb.

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Disková pole (RAID) 1

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Aplikace DBS. Osnova:

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

Maturitní témata Školní rok: 2015/2016

Databáze I. 1. přednáška. Helena Palovská

04 - Databázové systémy

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Přidělování paměti I Mgr. Josef Horálek

Program a životní cyklus programu

konstruktory a destruktory (o)

Objektově orientované databáze. Miroslav Beneš

Téma 12 Architektury DBMS

Databáze SQL SELECT. David Hoksza

PB153 Operační systémy a jejich rozhraní

Relační databáze a povaha dat

Činnost počítače po zapnutí

Zkušební test. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

Paralelní programování

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Systém souborů (file system, FS)

Transkript:

Transakční zpracování

Transakční zpracování Dva základní požadavky na SŘBD: chránit data organizovaná pod daným SŘBD, poskytnout korektní a rychlý asynchronní přístup většímu množství uživatelů. Řešení: komponenta řízení souběžného (paralelního) zpracování (concurrency control) komponenta zotavení z chyb (recovery). Řízení souběžného zpracování

Transakční zpracování Řízení souběžného zpracování zajišťuje uživatelům, že každý vidí konzistentní stav databáze bez ohledu na to, že více uživatelů přistupuje asynchronně ke stejným údajům. Zotavení z chyb zajišťuje, že stav databáze není narušen v případě chyby software, systému, nebo fyzického média v průběhu zpracování úlohy měnící data v databázi. Důsledkem takového incidentu nesmí být nekonzistence databáze.

Transakční zpracování Řešením je transakce: vhodná programová jednotka a vhodné mechanismy, které zabezpečí, že po skončení akce (korektním i nekorektním) zůstane databáze konzistentní (platí všechna IO definovaná ve schématu). čas začátek T i průběh T i konec T i databáze je v konzistentním stavu databáze může být dočasně v nekonzistentním stavu databáze musí v být v konzistentním stavu

Transakční zpracování Vlastnosti transakce: transparentnost paralelního zpracování Atomicita vzhledem k chybám aplikační program manažér transakcí rozvrhovač manažér dat databáze Moduly RDBMS

Transakční zpracování Transakce je vymezená logická jednotka práce převod peněz z jednoho konta na druhé přihlášení na zkoušku odhlášení ze zkoušky přehlášení na jiný termín zápis na cvičení odepsání ze cvičení přehození na jiné cvičení

Transakční zpracování Hranice: konec transakce - explicitní - COMMIT (potvrzení) - ROLLBACK (zrušení) - implicitní ROLBACK začátek transakce - implicitní - explicitní SET TRANSACTION Obnovení konzistence po incidentu Operace použité při obnově: UNDO REDO Využití transakčního žurnálu

Transakční zpracování stavový diagram transakce Transakce se může dostat do jednoho z pěti stavů: aktivní (A) - od počátku provádění transakce, částečně potvrzený (PC) - po provedení poslední operace transakce, chybný (F) - v normálním průběhu transakce nelze pokračovat; zrušený (AB) - po skončení operace ROLLBACK, tj. uvedení databáze do stavu před transakcí; potvrzený (C) - úspěšném zakončení, tj. po potvrzení operací COMMIT.

Transakční zpracování ACID vlastnosti transakce: atomicita (Atomicity) - transakce musí buď proběhnout celá nebo vůbec, konzistence (Consistency) - transakce transformuje databázi konzist. stavu do jiného konzist. stavu, nezávislost (Independence) - dílčí efekty jedné transakce nejsou viditelné jiným transakcím, trvanlivost (Durability) - efekty úspěšně ukončené (potvrzené) transakce jsou trvale uloženy (persistence).

ZOTAVENÍ Z CHYBY Optimistická strategie Pesimistická strategie

ZOTAVENÍ Z CHYB třídy možných chyb Globální chyby (mají vliv na více transakcí) Spadnutí systému serveru (např. výpadek proudu), důsledkem je obecně ztráta obsahu vyrov. pamětí. Chyby systémové, které ovlivňují transakce, avšak nikoli celou databázi (např. uváznutí, odumření komunikace klienta se serverem), Chyby médií (např. incident na disku), které zapříčiní ohrožení databáze, nebo její části, Lokální chyby (v jedné transakci). Logické chyby, které by měly být odchyceny a ošetřeny na úrovni transakce explicitním vyvoláním operace ROLLBACK (pokus o porušení IO při zápisu do DB, dělení nulou při výpočtu).

ZOTAVENÍ Z CHYBY po restartu systému Při optimistické strategii, po restartu: Na transakce, jejichž stav bude v důsledku incidentu nedefinovaný je nutné použít ROLLBACK. Transakce, které byly úplné před započetím chyby systému, avšak které nebyly dokončeny fyzicky (např. odeslání vyrovnávacích pamětí na disk), je nutné zopakovat (REDO). synchronizační body - vyznačují v žurnálu hranice mezi dvěma po sobě následujícími transakcemi.

ZOTAVENÍ Z CHYBY MÉDIÍ Natáhnutí celé databáze ze záložní kopie (Backup) Použití žurnálu k REDO všech ukončených transakcí až do té chvíle, kdy ještě žurnál poskytuje potřebné informace.

PARALELNÍ ZPRACOVÁNÍ TRANSAKCÍ Předpoklad ploché transakce, objekty atomické, FETCH, resp. OUTPUT přesunou stránku vyrovnávací paměti z/na disk, READ(X,x) - přiřazuje hodnotu atributu X lokální proměnné x. Není-li stránka s danou hodnotou ve VP, provede se FETCH(X), následuje přiřazení hodnoty X z VP proměnné x. WRITE(X,x) - přiřazuje hodnotu lokální proměnné x atributu X ve vyrovnávací paměti. Operace má opět dvě fáze - není-li žádaná stránka ve vyrovnávací paměti, provede se FETCH(X), následuje přiřazení proměnné x atributu X ve vyrovnávací paměti.

PARALELNÍ ZPRACOVÁNÍ TRANSAKCÍ Transakce T 1 a T 2 se skládají z akcí {T 11,...,T 1n } a {T 21,...,T 2m }. 1. možnost 2. možnost 3. možnost T 11... T 1n T 21... T 2m T 21...T 2m T 11... T 1n T 21... T 11... T 2k... T 1l... Stanovení pořadí provádění dílčích akcí více transakcí v čase nazveme rozvrhem. Maximalizace paralelismu zpracování, tj. vytváření rozvrhu, je věcí rozvrhovače.

PROBLÉMY S PARALELNÍM ZPRACOVÁNÍM nebezpečí ztráty aktualizace (při prokládání transakcí) T 1 T 2 stav READ(X) X = 80 X:=X-5 zrušení 5 rezervací READ(X) X = 80 X:=X+4 přidání 4 rezervací WRITE(X) X = 75 READ(Z) WRITE(X) X = 84 Z:=Z+N Přestože by hodnota X v databázi měla být 79, je 84.

PROBLÉMY S PARALELNÍM ZPRACOVÁNÍM nebezpečí dočasné aktualizace (při chybě systému) T 1 T 2 READ(X) X:=X-5 WRITE(X) READ(X) X:=X+4 WRITE(X) READ(Z) --- chyba transakce Po provedení operace ROLLBACK u transakce T1 bude aktualizace provedená transakcí T2 založena na posléze odvolaných změnách takže výsledek bude chybný.

PROBLÉMY S PARALELNÍM ZPRACOVÁNÍM nebezpečí nekorektního použití agregační funkce T 1 T 3 stav sum:=0 čítač počtu rezervací READ(A) sum:=sum + A... READ(X) X:=X-5 WRITE(X) READ(X) čte po změně X sum:=sum + X READ(Z) sum:=sum + Z čte před změnou Z WRITE(Z)

PROBLÉMY S PARALELNÍM ZPRACOVÁNÍM nebezpečí neopakovatelného čtení Transakce T1 používající daný kurzor se snaží znovu přečíst řádek, který již jednou četla dříve, ten však již obsahuje jiné hodnoty (nebo neexistuje) díky aktualizaci transakcí T2, která probíhá paralelně. fantóm Transakce T1 přečte množinu řádků (jeden příkaz SELECT) a zpracovává je. Mezitím některé z těchto řádků změní transakce T2 (DELETE nebo INSERT). Použije-li T1 týž příkaz (pro jiné kalkulace), obdrží již jinou množinu řádků.

PROBLÉMY S PARALELNÍM ZPRACOVÁNÍM Povolené anomálie v SQL92: Úroveň izolace Anomálie 0 1 2 3 dočasná aktualizace - - - neopakovatelné čtení - - fantóm - ANSI SQL nařizuje implicitně úroveň 3

USPOŘÁDATELNOST ROZVRHU Sériové rozvrhy zachovávají operace každé transakce pohromadě. Pro provedení N transakcí tedy lze naplánovat N! různých sériových rozvrhů. Lze vytvořit i rozvrh, kde jsou operace navzájem prokládány... paralelní rozvrh Přirozeným požadavkem na korektnost je, aby efekt paralelního zpracování transakcí byl týž, jako podle nějakého sériového rozvrhu. Rozvrh je korektní, když je v nějakém smyslu ekvivalentní kterémukoliv sériovému rozvrhu. O transakčním zpracování, které zaručuje tuto vlastnost se říká, že zaručuje uspořádatelnost.

USPOŘÁDATELNOST ROZVRHU definici ekvivalence založené na komutativitě operací READ a WRITE: Dvě operace jsou konfliktní, jestliže výsledky jejich různého sériového volání nejsou ekvivalentní. Operace, které nejsou konfliktní nazýváme kompatibilní. komutativita READ j (A) WRITE j (A) READ i (A) + - WRITE i (A) - -

USPOŘÁDATELNOST ROZVRHU Definice 6.2.1: Máme-li rozvrhy S1 a S2 pro množinu transakcí T = {T1,...,TN}, pak S1 s S2 jsou ekvivalentní (vzhledem ke konfliktům), jsou-li splněny dvě podmínky: 1. Jestliže se v prvním rozvrhu vyskytuje READ(A) v Ti a tato hodnota vznikla z WRITE(A) v transakci Tj, potom totéž musí být zachováno v druhém rozvrhu. 2. Jestliže se v prvním rozvrhu vyvolá poslední operace WRITE(A) v Ti, pak totéž musí být i v druhém rozvrhu. Relativní pořadí konfliktních operací je stejné v S1 i S2.

USPOŘÁDATELNOST ROZVRHU Příklad 6.2.1: Mějme transakce T4: {READ(A),akce1(A),WRITE(A),READ(B),akce2(B),WRITE(B)} T5: {READ(A),akce3(A),WRITE(A),READ(B),akce4(B),WRITE(B)} S 3 S 4 T 4 T 5 T 4 T 5 READ(A) READ(A) akce1(a) akce1(a) WRITE(A) READ(A) READ(A) akce3(a) akce3(a) WRITE(A) WRITE(A) READ(B) READ(B) WRITE(A) akce2(b) READ(B) WRITE(B) akce2(b) READ(B) WRITE(B) akce4(b) akce4(b) WRITE(B) WRITE(B) S1:{T4,T5}, S2:{T5,T4}. jsou sériové rozvrhy. S3 a S4 nejsou sériové. Zřejmě S3 S1, S3 S2. Rozvrh je uspořádatelný, jestliže existuje sériový rozvrh s ním ekvivalentní.

USPOŘÁDATELNOST ROZVRHU O rozvrhu jsme řekli, že je uspořádatelný, jestliže existuje sériový rozvrh s ním ekvivalentní. Mohou však existovat rozvrhy, které nejsou ekvivalentní se žádným sériovým rozvrhem podle této definice a přesto produkují stejný výsledek jako nějaký sériový rozvrh. Pojem konfliktu je zde založen na znalosti sémantiky operací. Existují možnosti definovat smysluplná kritéria korektnosti, která vůbec nejsou založena na pojmu uspořádatelnost.

TESTOVÁNÍ USPOŘÁDATELNOSTI Precedenční graf rozvrhu. Jde o orientovaný graf {U,H} U = {T i i = 1, 2,..., n}, H={h ik (A)} h ik (A)... vzhledem k manipulacím s objektem A vede hrana od uzlu T i k uzlu T k, čímž chceme říci, že rozvrh může být ekvivalentní pouze s takovým sériovým rozvrhem, kde T i předchází T k.

TESTOVÁNÍ USPOŘÁDATELNOSTI Konstrukce precedenčního grafu rozvrhu S pro {T i,t k }. Od uzlu T j povede hraha k uzlu T k, jestliže: (i) poslední WRITE(A) v T j je před posledním voláním WRITE(A) v T k (ii) T j volá WRITE(A) před tím, než T k volá READ(A) (v T k se čte z databáze hodnota A, vzniklá v T j ) (iii) T j volá READ(A) před tím, než T k volá WRITE(A) (v T j se čte z db hodnota A, dříve, než se v T k změní)

TESTOVÁNÍ USPOŘÁDATELNOSTI Precedenční grafy k př. 6.2.1 S 3 S 3 T 4 T 5 T 4 T 5 READ(A) READ(A) akce1(a) akce1(a) WRITE(A) WRITE(A) READ(A) READ(A) akce3(a) akce3(a) WRITE(A) WRITE(A) READ(B) READ(B) akce2(b) akce4(b) WRITE(B) WRITE(B) READ(B) READ(B) akce4(b) akce2(b) WRITE(B) WRITE(B) S1: S2: S3: S3 : T4 T4 T4 A B A B A B A T5 T5 T5 Rozvrhy S1{T1, T2} a S2 {T2, T1} jsou sériové. T4 B T5

TESTOVÁNÍ USPOŘÁDATELNOSTI Precedenční grafy k př. 6.2.1 S 4 S 4 T4 T5 T4 T5 READ(A) READ(A) akce1(a) akce1(a) READ(A) READ(A) akce3(a) akce3(a) WRITE(A) WRITE(A) READ(B) READ(B) WRITE(A) akce4(b) READ(B) akce2(b) READ(B) WRITE(B) akce2(a,b) akce4(b) WRITE(B) WRITE(B) WRITE(B) S4: S4 : T4 T4 A A B A B T5 T5 B

TESTOVÁNÍ USPOŘÁDATELNOSTI Tvrzení: Rozvrh je uspořádatelný, (tedy ekvivalentní některému sériovému rozvrhu), jestliže v jeho precedenčním grafu neexistuje cyklus. Podle tohoto tvrzení: rozvrh S4 není uspořádatelný, rozvrh S3 je uspořádatelný. Tvrzení: Dva rozvrhy jsou ekvivalentní, jestliže mají stejný precendenční graf.

UZAMYKACÍ PROTOKOLY Testování uspořádatelnosti jakéhokoliv rozvrhu není to nejlepší pro praxi. Časové nároky takového přístupu by zřejmě přesahovaly rozumnou míru. Přístup z druhé strany: Konstruovat transakce podle předem daných pravidel tak, že za určitých předpokladů bude každý jejich rozvrh uspořádatelný. Soustavě takových pravidel se obecně říká protokol.

UZAMYKACÍ PROTOKOLY Nejznámější protokoly jsou založeny na dynamickém zamykání a odmykání objektů v databázi. Jednoduchý model: objekt může být v daném čase uzamčen nejvýše jednou transakcí - Lock(A), Unlock(A) Transakce, která uzamkla objekt, má právo na něm provádět operace READ a WRITE (a další operace).

UZAMYKACÍ PROTOKOLY Legální rozvrh: objekt bude nutné mít v transakci uzamknutý, kdykoliv k němu chce tato transakce přistupovat, transakce se nebudou pokoušet uzamknout objekt již uzamknutý jinou transakcí (čekájí na uvolnění zámku). Pozn: Samotná legálnost rozvrhu nezaručuje uspořádatelnost.

UZAMYKACÍ PROTOKOLY S7 a S8 nemají stejné výsledky. V S7 se akce7 provádí s jinou hodnotou A, než v S8. Zamykání a odmykání samo ještě nevede k uspořádatelném u rozvrhu. S 7 S 8 T 9 T 10 T 9 T 10 LOCK(B) LOCK(B) READ(B) READ(B) akce5(b) akce5(b) WRITE(B) WRITE(B) UNLOCK(B) UNLOCK(B) LOCK(A) LOCK(A) READ(A) READ(A) UNLOCK(A) akce7(a) LOCK(B) WRITE(A) READ(B) UNLOCK(A) UNLOCK(B) LOCK(A) A:=A+B READ(A) WRITE(A) UNLOCK(A) LOCK(A) LOCK(B) READ(A) READ(B) akce7(a) UNLOCK(B) WRITE(A) A:=A+B UNLOCK(A) WRITE(A)

UZAMYKACÍ PROTOKOLY V případech některých rozvrhů může dokonce nastat uváznutí (deadlock). Uváznutí lze řešit tak, že provedeme ROLLBACK jedné transakce. Co tato uzamkla, bude odemknuto, čímž se druhá transakce odblokuje. T 11 T 12 LOCK(B) READ(B) akce5(b) WRITE(B) LOCK(A) READ(A) čeká čeká LOCK(A) UNLOCK(B) READ(A) LOCK(B) READ(B) UNLOCK(B) A:=A+B WRITE(A) Lépe je uváznutí nepřipustit vhodným návrhem. Co pomůže zde?

UZAMYKACÍ PROTOKOLY Omezíme se dále na tzv. dobře formované transakce, které podporují přirozené požadavky na transakce: a) transakce zamyká objekt, chce-li k němu přistupovat, b) transakce nezamyká objekt, když ho již zamkla, c) transakce neodmyká objekt, který nezamkla, d) na konci transakce nezůstane žádný objekt zamčený. Stále ještě neznáme postačující podmínku pro to, aby všechny legální rozvrhy pro dobře formované transakce byly uspořádatelné. Konzistence databáze totiž není zaručena tím, že objekt odemkneme bezprostředně po manipulaci s ním.

UZAMYKACÍ PROTOKOLY T 13 T 14 LOCK(A) READ(A) WRITE(A) UNLOCK(A) LOCK(A) READ(A) WRITE(A) UNLOCK(A) LOCK(B) READ(B) WRITE(B) UNLOCK(B) LOCK(B) READ(B) WRITE(B) UNLOCK(B) Precendenční graf pro tento rozvrh: T13 A B T14 není tedy uspořádatelný. Pomůže, když uvažované transakce budou dvoufázové. Prohodíme-li UNLOCK(A) s LOCK(B) v T14 bude tato transakce dvoufázová.

UZAMYKACÍ PROTOKOLY T 15 LOCK(B) READ(B) akce5(b) WRITE(B) LOCK(A) READ(A) akce7(a) WRITE(A) UNLOCK(B) UNLOCK(A) Uzamykací protokol je obecně množina pravidel, které udávají, kdy transakce bude uzamykat a odmykat objekty databáze. Dvoufázová transakce: 1. fáze - uzamyká se, nic neodemyká 2. fáze - od prvního odemknutí, do konce se už nic nezamyká Tvrzení 6.2. Jestliže všechny transakce v dané množině transakcí T jsou dobře formované a dvoufázové, pak každý jejich legální rozvrh je uspořádatelný.

UZAMYKACÍ PROTOKOLY T 13 T 14 LOCK(A) READ(A) Akce, WRITE(A) UNLOCK(A) LOCK(A) READ(A) Akce, WRITE(A) LOCK(B) READ(B) Akce, WRITE(B) UNLOCK(B) LOCK(B) READ(B) UNLOCK(A) Akce, WRITE(B) UNLOCK(B) Precendenční graf pro tento rozvrh: T13' T14' Je tedy uspořádatelný, ač T13 není dvoufázová. Nevylučujeme existenci uspořádatelného legálního rozvrhu (ne)dobře formovaných nedvoufázových transakcí. A B

UZAMYKACÍ PROTOKOLY T 16 T 17 LOCK(A) READ(A) LOCK(B) READ(B) LOCK(C) READ(C) WRITE(A) UNLOCK(A) LOCK(A) READ(A) WRITE(B) WRITE(C) UNLOCK(C) LOCK(C) READ(C) WRITE(C) UNLOCK(A) UNLOCK(B) UNLOCK(C) Jeden z uspořádatelných dvoufázových rozvrhů T16 a T17. Transakce T17 jednou čeká na uvolnění zámku pro A, jednou na uvolnění zámku C. Kdyby LOCK(A), resp. LOCK(C) byly v rozvrhu před UNLOCK(A), resp. UNLOCK(C) v transakci T16, rozvrh by se stal nelegálním.

UZAMYKACÍ PROTOKOLY požaduje a dostane požaduje a dostane zámek na A zámek na C T16 uvolňuje uvolňuje zámek na A zámek na C dostane požaduje a dostane zámek na A zámek na C T17 požaduje a dostane požaduje zámek na A uvolňuje zámek na B je blokována (čeká) zámek na A,B,C

UZAMYKACÍ PROTOKOLY Uváznutí jsou pro uzamykání dle dvoufázového protokolu typická. T 19 T 20 1 LOCK(A) 4 LOCK(B) 2 READ(A) 5 READ(B) 3 WRITE(A) 6 WRITE(B) LOCK(B) LOCK(A) READ(B) READ(A) UNLOCK(A) UNLOCK(B) WRITE(B) WRITE(A) UNLOCK(B) UNLOCK(A) Rozvrh, plánující naznačené provádění kroků transakcí vede k uváznutí. Nelze pokračovat ani s LOCK(B), ani s LOCK(A). Tomuto nedostatku lze předejít tím, že ke společným objektům se v obou transakcích bude přistupovat ve stejném pořadí.