DBS transakční zpracování

Podobné dokumenty
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

Transakce a zamykání Jiří Tomeš

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

Paralelní přístup k databázi

TÉMATICKÝ OKRUH TZD, DIS a TIS

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

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

9. Transakční zpracování

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

Databázové systémy úvod

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

Databázové systémy úvod

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

9. Transakční zpracování

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

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

Databázové systémy úvod

Databázové systémy BIK-DBS

Distribuované transakce

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á:

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

4IT218 Databáze. 4IT218 Databáze

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

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

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

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

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

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

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

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

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Administrace Oracle - Správa zdrojů

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

Fyzické uložení dat a indexy

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

Okruhy z odborných předmětů

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

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

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

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

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

IW3 MS SQL SERVER 2014

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í

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

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

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

Disková pole (RAID) 1

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

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

VzorTest-1. Prohlídka náhledu

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

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Paralelní programování

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

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

Implementace dávkových operací

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

Databázové systémy úvod

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).

Analýza a modelování dat 6. přednáška. Helena Palovská

Relační databáze a povaha dat

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

Optimalizace dotazů a databázové transakce v Oracle

04 - Databázové systémy

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

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

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

Příprava na zk. z KIV/DS

Technologické postupy práce s aktovkou IS MPP

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ř.

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.

Vývoj IS - strukturované paradigma II

Společnost repostor by ráda snížila vaše TCO

MODERNÍ SOUBOROVÉ SYSTÉMY - ZFS. Richard Janča

Téma 12 Architektury DBMS

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

konstruktory a destruktory (o)

Profilová část maturitní zkoušky 2013/2014

Disková pole (RAID) 1

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

Databázové systémy. Ing. Radek Holý

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

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.

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

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

Téma 13 Architektury DBMS; Principy distribuovaných DBMS Obsah

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

Tvorba informačních systémů

Překladač a jeho struktura

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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.

MANUÁL MOBILNÍ APLIKACE GOLEM PRO OPERAČNÍ SYSTÉM ANDROID 4.X A VYŠŠÍ

Transkript:

DBS transakční zpracování Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2010 BI-DBS, ZS 2010/11 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 1 / 46

Transakční zpracování Dva základní požadavky na DBMS : chránit data ve smyslu odolnosti vůči různým haváriím serveru poskytnout korektní, rychlý a asynchronní přístup většímu množství současně pracujících uživatelů. Řešení komponenta řízení soubežného (paralelního) zpracování (concurreny control) komponenta zotavení z chyb (recovery) Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 3 / 46

Transakční zpracování Řízení souběžného zpracování Zajišt 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št 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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 4 / 46

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). Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 5 / 46

Moduly RDBMS RDBMS musí zaručit: Transparentnost paralelního zpracování transakce. Atomicitu vzhledem k chybám. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 6 / 46

Co je transakce? Vhodná logická jednotka práce. Obvykle se skládá z několika (i mnoha) dílčích operací. Příklady transakcí Převod peněz z jednoho účtu na druhý. Přehlášení na termín zkoušky. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 8 / 46

Začátek a konec transakce Hranice transakce : konec transakce Explicitní COMMMIT (potvrzení) ROLLBACK (zrušení) Implicitní ukončení session (záleží na klientovi zda commit nebo rollback). začátek transakce Je obvykle vymezen skončením transakce předchozí nebo vznikem session. Pozor na nastavení klienta! Často bývá použit režim Autocommit On. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 9 / 46

Obnova databáze po pádu Využívá se transakční žurnál (log). V transakčním logu jsou změnové vektory. Operace použité při obnově - UNDO - REDO Informace z trasakčního žurnálu se používají pouze pro obnovu databáze po chybě. Pro operaci ROLLBACK a zajištění tzv. read consistency se používají jiné datové struktury. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 10 / 46

Stavový diagram transakce PC C A F AB aktivní (Active) - od začátku (probíhají DML příkazy) částečně potvrzený (Partially Commited) - po provedení poslední operace transakce potvrzený (Commited) - po úspěšném zakončení, tj. po potvrzení operace COMMIT chybný (Failed) - v normálním průběhu transakce nelze pokračovat zrušený (ABorted) - po skončení operace ROLLBACK, tj. uvedení databáze do stavu před započetím transakce Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 11 / 46

Vlastnosti transakcí ACID ACID vlastnosti transakce: atomicita (Atomicity) - transakce musí bud proběhnout celá nebo vůbec, konzistence (Consistency) - transakce transformuje databázi z 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). Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 12 / 46

Zotavení z chyby - 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). Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 14 / 46

Zotavení z chyby - po restartu systému synchronizační body časové známky (v žurnálu a v hlavičkách db souborů); slouží k nalezení místa (v žurnálu) odkud je třeba začít s rekonstrukcí databáze Požadavky: Na transakce, jejichž stav bude v důsledku incidentu nedefinovaný je nutné použít ROLLBACK. Transakce, které byly potvrzené před tím než nastala chyba systému, avšak které nebyly dokončeny fyzicky (např. odeslání vyrovnávacích pamětí na disk), je nutné zopakovat a uložit do datových souborů. Technicky má obnova systému po pádu dvě fáze: 1 Roll Forward přehrání transakčního žurnálu (a obnova vyrovnávací paměti) 2 Roll Back odvolání transakcí, které nebyly v době pádu dokončeny. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 15 / 46

Zotavení z chyby médií Záleží na mód v jakém databázi provozujeme (archivní / nearchivní): archivní mód: Vystavení celé databáze (nebo jen chybějících částí) 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šte žurnál poskytuje potřebné informace. Tento postup umožňuje i tzv PITR (Point In Time Recovery) nearchivní mód: Bud se můžeme vrátit k poslední plné záloze systému (tedy zpátky v čase). Nebo obětujeme data, která byla poškozena. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 16 / 46

Paralení zpracování transakcí Předpoklady: 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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 18 / 46

Prokládání transakcí, rozvrh, rozvrhovač Transakce T 1 a T 2 se skládají z dílčích operací T 1 = {T 11...T 1n } a T 2 = {T 21...T 2m } Možnosti prokládání: 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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 19 / 46

Ztráta aktualizace nebezpečí ztráty aktualizace (při prokládaní transakcí) T1 T2 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 WRITE(X) X = 84 Ztráta aktualizace Přestože by hodnota X v databázi měla být 79, je 84 Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 20 / 46

Ztráta aktualizace nebezpečí dočasné aktualizace (při chybě systému) T1 READ(x) X:=X-5 WRITE(X) READ(Z) chyba transakce T2 READ(X) X:=X+4 WRITE(X) 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ý. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 21 / 46

Problémy s paralelním zpracováním nebezpečí nekorektního použití agregační funkce T1 T3 stav sum:=0 čítač počtu rezervací READ(A) sum:=sum+a READ(X) X:=X-A WRITE(X) READ(X) čte po změně X sum:=sum + X READ(Z) sum:=sum + Z čte před změnou X WRITE(Z) Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 22 / 46

Problémy s paralelním zpracováním neopakovatelné čtení fantóm Transakce T1 provede SELECT a použije načtené hodnoty. Transakce T2 poté změní hodnoty některých řádků. Když transakce T1 později provede tentýž select, dostane jiné hodnoty. Jako v předchozím případě, pouze s tím rozdílem, že transakce T2 smaže nebo přidá řádky. Ve druhém dotazu obdrží tedy trasakce T1 jinou sadu dat. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 23 / 46

Stupně izolace Úroveň izolace Anomálie 0 1 2 3 dočasná aktualize x - - - neopakovatelné čtení x x - - fantón x x x - 0... read uncommited 1... read commited 2... repeatible read 3... serializable Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 24 / 46

Uspořádatelnost rozvrhu Sériové rozvrhy zachovávají operace každé transakce pohromadě. Pro N transakcí existuje N! různých sériových rozvrhů. Lze vytvořit i rozvrh, kde jsou operace navzájem prokládány paralelní rozvrh. Efekt paralelního zpracování transakcí má být stejný 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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 25 / 46

Uspořádatelnost rozvrhu Definici uspořádatelnosti založíme na kompatibilitě 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í. kompatibilita READ j (A) WRITE j (A) READ i (A) + - WRITE i (A) - - Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 26 / 46

Uspořádatelnost rozvrhu Uspořádatelnost rozvrhu 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: 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. Jestliže se v prvním rozvrhu vyvolá poslední operace WRITE(A) v Ti, pak totéž musí být i v druhém rozvrhu. Jinak řečeno: Relativní pořadí konfliktních operací nad stejnými objekty je v obou rozvrzích stejné. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 27 / 46

Uspořádatelnost příklad 1 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)} T4 READ(A) AKCE1(A) WRITE(A) READ(B) AKCE2(B) WRITE(B) S3 T5 READ(A) AKCE3(A) WRITE(A) READ(B) AKCE4(B) WRITE(B) T4 READ(A) AKCE1(A) WRITE(A) READ(B) AKCE2(B) WRITE(B) S4 T5 READ(A) AKCE3(A) WRITE(A) READ(B) AKCE4(B) WRITE(B) S1:{T4,T5} a 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í. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 28 / 46

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 Existují možnosti definovat smysluplná kritéria korektnosti paralelních rozvrhů, která vůbec nejsou založena na pojmu uspořádatelnost. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 29 / 46

Precedenční grafu 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ž říkáme, že rozvrh může být ekvivalentní pouze s takovým sériovým rozvrhem, kde T i předchází T k. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 30 / 46

Konstrukce precedenčního grafu Konstrukce precedenčního grafu rozvrhu S pro {T i, T k } Od uzlu T j povede hraha k uzlu T k, jestliže: 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 ) 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í) poslední WRITE(A) v T j předchází poslednímu volání WRITE(A) v T k Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 31 / 46

Precedenční grafy příklad 1 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)} S1:{T4,T5} a S2:{T5,T4} jsou sériové rozvrhy. T4 READ(A) AKCE1(A) WRITE(A) READ(B) AKCE2(B) WRITE(B) S3 T5 READ(A) AKCE3(A) WRITE(A) READ(B) AKCE4(B) WRITE(B) T4 READ(A) AKCE1(A) WRITE(A) READ(B) AKCE2(B) WRITE(B) S3 T5 READ(A) AKCE3(A) WRITE(A) READ(B) AKCE4(B) WRITE(B) Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 32 / 46

Precedenční grafy - příklad 2 Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 33 / 46

Testování uspořádatelnosti Tvrzení 1 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í 2 Dva rozvrhy jsou ekvivalentní, jestliže mají stejný precendenční graf. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 34 / 46

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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 35 / 46

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). Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 36 / 46

Legální rozvrh 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ámka: Samotná legálnost rozvrhu nezaručuje uspořádatelnost. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 37 / 46

Uzamykací protokoly příklad S7 S8 T9 T10 T9 T10 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) 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ému rozvrhu. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 38 / 46

Uváznutí transakcí V případech některých rozvrhů může 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. čeká T11 LOCK(B) READ(B) akce5(b) WRITE(B) čeká LOCK(A) UNLOCK(B) READ(A) T12 LOCK(A) READ(A) LOCK(B) READ(B) UNLOCK(B) A:=A+B WRITE(A) Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 39 / 46

Dobře formované transakce Omezíme se dále na tzv. dobře formované translakce, které podporují přirozené požadavky na transakce : Dobře formované transakce transakce zamyká objekt, chce-li k němu přistupovat transakce nezamyká objekt, když ho již zamkla transakce neodmyká objekt, který nezamkla 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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 40 / 46

Dvoufázová transakce T13 LOCK(A) READ(A) WRITE(A) UNLOCK(A) LOCK(B) READ(B) WRITE(B) UNLOCK(B) T14 WRITE(A) UNLOCK(A) lock(a) READ(B) LOCK(B) READ(B) WRITE(B) UNLOCK(B) Rozvrh je legální, transakce jsou dobře formované. Precedenční graf rozvrhu: Rozvrh tedy není 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á. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 41 / 46

Dvoufázový uzamykací protokol Uzamykací protokol je množina pravidel, které udávají, kdy transakce bude uzamykat a odmykat objekty databáze. T15 LOCK(B) READ(B) AKCE5(B) WRITE(B) LOCK(A) READ(A) AKCE7(A) WRITE(A) UNLOCK(B) UNLOCK(A) Dvoufázová transakce : 1. fáze - uzamyká se, nic neodemyká 2. fáze - od prvního odemknutí, do konce se už nic nezamyká Tvrzení: 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ý. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 42 / 46

Uzamykací protokoly T13 T14 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) Precedenční graf tohoto rozvrhu: 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í. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 43 / 46

Uzamykací protokoly T16 LOCK(A) READ(A) LOCK(C) READ(C) WRITE(A) UNLOCK(A) WRITE(C) UNLOCK(C) T17 lock(b) READ(B) LOCK(A) READ(A) WRITE(B) 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 (viz obrázek na dalším slide). 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. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 44 / 46

Příklad z předchozího slide Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 45 / 46

Opět možné uváznutí T19 T20 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í (ačkoliv je legální a jeho transakce jsou dobře formované a dvoufázové). 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í. Michal Valenta (FIT ČVUT) DBS transakční zpracování BI-DBS, 2010 46 / 46