Paralelní přístup k databázi

Slides:



Advertisements
Podobné prezentace
SQL Další dotazy a pohledy
Advertisements

Základy jazyka SQL Jan Tichava
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Cvičení 03 SQL Select Ing. Pavel Bednář
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
Informatika pro ekonomy II přednáška 11
Lubomír Andrle 8. přednáška
Transakční zpracování
Temporální databáze a TSQL
Doplňující referát k přednášce Transakce Šárka Hlušičková
Principy překladačů Architektury procesorů Jakub Yaghob.
Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.
Radek Špinka Přepínače MSSQL výběr.
Databázové systémy 2 Přednáška č. 2 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Modely konzistentnosti Ladislav Kotal PDS 2008Ladislav Kotal2 Konzistentnost Konzistentní = soudržný, neporušený, pevný Konzistenční model = dohoda.
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
Vypracoval: Ondřej Dvorský Třída: VIII.A
Databázové systémy Architektury DBS.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy Tomáš Skopal
Offline concurrency patterns Petr Smrček Ondřej Svoboda ČVUT FEL A7B36ASS – Architektura SW sytémů LS 2013.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Transakční zpracování v SQL P. Částek. Transakce Transakce = logická jednotka práce Podaří-li se všechny části transakce, potvrdíme je. COMMIT Jestliže.
Transakce Roman Špánek TU v Liberci Transakce Transakce = série příkazů čtení a zápisu do databáze A Atomic C Consistency I Isolation D Durability.
ADO.NET – Transakce Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
A3B33OSD (J. Lažanský) verze: Jaro 2013 Transakce a řízení souběhu 1 Obsah Téma 12 – Transakce, řízení souběhu a obnova dat 1.Transakce a jejich stavy.
1 / 2X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log.
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy SQL Výběr dat.
TEMPORÁLNÍ DATABÁZE A TSQL2
Vnořené SQL (embedded SQL) Dotazovací jazyky I
Administrace Oracle Paralelní zpracování.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
PA152Notes 091 CS 245: Database System Principles Notes 09: Concurrency Control Hector Garcia-Molina Pavel Rychlý.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
8/1 The video task 1. The balls are made of a) steel b) iron c) wood 2. The water based liquid is there to.
Databázové systémy II Přednáška I Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Databázové systémy 2 Přednáška č. 2 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
Optimistic and pessimistic offline lock. Naivní přístup:  Uživatel A načte data  Uživatel B načte (stejná) data  Uživatel A upraví data a uloží je.
Databázové systémy přednáška 6 – Indexy
Databázové systémy přednáška 8 – Transakce
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
1. Co mají společného násobky těchto čísel?
A5M33IZS – Informační a znalostní systémy
Databázové systémy a SQL
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Databázové systémy a SQL
A5M33IZS – Informační a znalostní systémy
Optimalizace SQL dotazů
Databázové systémy a SQL
A5M33IZS – Informační a znalostní systémy
Mgr. Alena Mátlová The English dates VY_32_INOVACE_Aj.20 prosinec 2012
Přednášky z distribuovaných systémů
Přednáška 9 Triggery.
Přednášky z distribuovaných systémů
Monitor Object 1.
Transkript prezentace:

Paralelní přístup k databázi Motivační příklad: Bankovní převod 100,- Kč z účtu "A" na účet "B" a současný výběr 200 Kč z účtu "B". Transakce Hodnota A Hodnota B Stav účtu A Stav účtu B 1000,- T1: čti A T1: 1000 T1: čti B T1: uber 100 z A T1: 900 T1: přidej 100 k B T1: 1100 T1: zapiš stav A 900,- T2: čti B T2: 1000 T1: zapiš stav B 1100,- T2: uber 200 z B T2: 800 T2: zapiš stav B 800,- Výsledný stav Správně z minule: SELECT animal.ID, breed1.BreedName as BreedName1, breed2.BreadName as BreadName2 FROM animal LEFT JOIN breed as breed1 ON animal.breedID=breed1.ID LEFT JOIN breed as breed2 ON animal.breedID=breed2.ID WHERE animal.ID='7'; SELECT * FROM test1 a LEFT OUTER JOIN test2 b ON b.c1=a.c1 LEFT OUTER JOIN test3 c ON c.c2=b.c2 multi-threaded v Jave Při současném vykonávání transakcí by mohlo dojít k porušení konzistence databáze i když každá z transakcí by sama o sobě konzistenci zachovávala

Paralelní přístup k databázi Transakce: Vlastnost ACID: Atomicity: transakce atomická - buď se podaří a provede se celá nebo nic - nelze vykonat jen část transakce Consistency transakce - korektní transformace stavu - zachování invariant - integritních omezení Isolation (Independence) (isolace = serializovatelnost). I když jsou transakce rozpracovány současně, výsledek je stejný, jako by byla vykonávána jedna po druhé Durability po úspěšném ukončení transakce (commit) jsou změny stavu databáze trvalé a to i v případě poruchy systému - zotavení z chyb. Transakce je poslouplnost nebo specifikace posloupnosti akci jako cteni zapis, vypocet, se kterou se zachazi jako s celkem (nekolik SQL dotazu). ACID jsou pozadovane vlastnosti kladene na transkace. EXEC SQL COMMIT WORK; EXEC SQL ROLLBACK WORK; active (A), partially committed (PC), failed (F), aborted (AB) po rollback, committed (C) po commit A->PC, A->F, PC->F, PC->C, F->AB

Konsistentní stav databáze Dočasně nekonsistentní stav databáze Paralelní přístup k databázi Transakce = sekvence akcí read a write na objektech (insert a delete zatím nejuvažujme). čas BOT A1 A2 A3 . . . An COMMIT CHYBA ROLLBACK Konsistentní stav databáze Dočasně nekonsistentní stav databáze BoT = beginning of transaction

Paralelní přístup k databázi Dvě akce read nad týmž objektem nemohou porušit konzistenci. Dvě akce write nad týmž objektem prováděné v rámci téže transakce netřeba uvažovat. Pokud by porušily konzistenci, je transakce nekorektní bez ohledu na paralelismus (porušeno C v ACID). Pouze akce typu read a write v rámci různých transakcí mohou porušit konzistenci.

Paralelní přístup k databázi Lost update T1 WRITE <o,1> Nezachová se. Jakoby T1 vůbec neběžela. T2 WRITE <o,2> T1 READ Dirty read T1 přečetla dočasnou (ne committed) hodnotu T2 ROLLBACK Unrepeatable read nereprodukovatelné čtení  Phantom read T1 SELECT predikát T2 INSERT o3 { o1, o2} { o1, o2, o3}

Paralelní přístup k databázi Příklad LOST UPDATE: Transakce T1 vybírá veškerý zůstatek z účtu A. Transakce T2 připisuje 3% úroků na účet A. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. BOT 2. 3. a1 := 0 4. READ(A, a2) 5. a2 := a2 * 1.03 6. WRITE(A, a1) 7. WRITE(A, a2) 8. COMMIT 9.

Paralelní přístup k databázi Příklad DIRTY READ: Transakce T1 převádí 300,- Kč z účtu A na účet B. Transakce T2 připisuje 3% úroků na účet A, který není v daném časovém okamžiku v konsistentním stavu. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. READ(A, a1) 2. a1 := a1 - 300 3. WRITE(A, a1) 4. READ(A, a2) 5. a2 := a2 * 1.03 6. WRITE(A, a2) 7. READ(B, b1) READ selhal, proto: 8. ROLLBACK ROLLBACK vrátí stav na začátek transakce T1, tím ale přijdeme o efekt transakce T2. To je problém transakce T2, že si přečetla údaj, který ještě nebyl potvrzen (commited)

Paralelní přístup k databázi Příklad UNREPEATABLE READ: Transakce T1 převádí 300,- Kč z účtu A na účet B. Transakce T2 připisuje 3% úroků na účet A, který není v daném časovém okamžiku v konsistentním stavu. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. READ(A, a1) 2. READ(A, a2) 3. a2 := a2 * 1.03 4. WRITE(A, a2) 5. a1 := a1 – 300 6. WRITE(A, a1) 7. READ(B, b1) 8 b1 := b1 + 300 8. WRITE(B, b1) T2 přepsala údaj, který má transakce T1 načtený a hodlá s ním nadále pracovat -> T1 bude pracovat s nekonzistentními daty! Proměnná a1 neodpovídá stavu databáze. Kdybychom znovu provedli READ(A,a1), byl by obsah proměnné a1 jiný!

Paralelní přístup k databázi Příklad PHANTOM READ: V průběhu zpracování T2 zavede T1 do databáze nový údaj (větu), proto T2 pro dva totožné dotazy poskytne dvě různé odpovědi. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. SELECT sum(StavUctu) FROM Ucty 2. INSERT INTO Ucty VALUES (StavUctu, 1000) 3.

Jestliže všechny transakce {T1, … Tn} jsou dobře formovaná (všechny akce jsou prokyty zámky) a dvoufázové (je-li zámek uvolněn, žádný další už není uzamčen), pak každá jejich legální historie (neporušuje kompatibilitu zámků) je serializovatelná. Pozn.: pozor na fantom read. Další problémy? 1.) při ROLLBACK  kaskádovitý ROLLBACK pro závislé transakce  striktně dvoufázové transakce (všechny UNLOCK až po dokončení transakce, horší paralelizace) 2.) uváznutí (dead-lock)

Vzájemné uváznutí transakcí (deadlock) Krok T1 T2 1 BOT 2 LockX(A) 3 4 LockS(B) 5 Read(B) 6 Read(A) 7 Write(A) 8 LockX(B) T1 musí čekat na T2 9 LockS(A) T2 musí čekat na T1 10 …

Vzájemné uváznutí transakcí (deadlock) Graf vzájemného čekání: T1 T2 T5 T4 T3 heuristiky Odstranění cyklů – strategie: Přerušovat co nejmladší transakci (ovlivnit co nejméně dalších transakcí) Přerušovat transakci s max. počtem zámků Nepřerušovat transakci, která byla již vícekrát přerušena Přerušit transakci, která se účastní více cyklů

Stupně isolace Transakce Názvy Protokol zamykání (dvoufázové) 0 anarchie konzistence read / write 1 1 nemá lost updates (pozdržený zápis) browse WRITE: lokální zámek READ: lokální zámek WHERE: lokální zámek 2 2 nemá lost updates a dirty reads WRITE: zámek transakce 3 3 nemá lost updates, dirty reads a má repeatable reads serializable READ: zámek transakce 4 4 nemá lost updates, dirty reads a má repeatable reads, ochrana fantomů serializable (ochrana fantomů) WHERE: zámek transakce

SET TRANSACTION ISOLATION LEVEL [ READ UNCOMMITTED] [ READ COMMITTED ] [ REPEATABLE READ ] [ SERIALIZABLE ] READ UNCOMMITTED - 1 browse - pro read-only transakce READ COMMITTED - stabilita kursoru (vylepšený 2) REPEATABLE READ - 3 bez ochrany fantomů SERIALIZABLE - 3 včetně ochany fantomů (4)

READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE ISO: READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE Postgre SQL READ COMMITTED SERIALIZABLE READ COMMITED in PostreSQL: Snapshot se dělá na začátku SELECTU Notice that two successive SELECTs can see different data, even though they are within a single transaction, when other transactions commit changes during execution of the first SELECT. SERIALIZABLE in PostreSQL: Snapshot se dělá na začátku transakce. This is different from Read Committed in that the SELECT sees a snapshot as of the start of the transaction, not as of the start of the current query within the transaction.