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.

Slides:



Advertisements
Podobné prezentace
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Advertisements

Základy jazyka SQL Jan Tichava
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.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Lubomír Andrle 8. přednáška
Transakční zpracování
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Algoritmizace 9. Ročník.
Doplňující referát k přednášce Transakce Šárka Hlušičková
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í.
Relační databáze Jakub Lokoč.
Radek Špinka Přepínače MSSQL výběr.
Databáze Jiří Kalousek.
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.
Řešení dynamických problémů s podmínkami Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Jan Trčka Dne: Obsah Zadání Pojmy Replikace databází Verzování Reconciling, reconcile Posting, post Scénáře při verzování v ArcSDE PostgreSQL.
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.
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
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.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Čí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 V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
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.
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í.
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Access Vysvětlení pojmu databáze - 01
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý.
Zablokování (deadlock, smrtelné objetí, uváznutí)
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.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B15 Autor Ing. Jiří Kalousek Období vytvoření březen.
Vnořené SQL (embedded SQL) Dotazovací jazyky I
C – cyklus do-while Mgr. Lenka Švancarová.
Dynamické SQL (dynamic SQL)‏ Dotazovací jazyky Šárka Hlušičková.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
24 Používání relačních databází (základní pojmy a principy z oblasti relačních databází, struktura databáze,oblasti použití relačních databází, vkládání.
Architektury a technika databázových systémů Jiří Zechmeister 7. přednáška
Databázové systémy II Přednáška I Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Import dat Access (16). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
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.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Ukázka Výklad pravidel Bodování
Databázové systémy přednáška 8 – Transakce
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
A5M33IZS – Informační a znalostní systémy
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
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
Databázové systémy a SQL
Paralelní přístup k databázi
A5M33IZS – Informační a znalostní systémy
Přednášky z distribuovaných systémů
Přednáška 9 Triggery.
Přednášky z distribuovaných systémů
Transkript prezentace:

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 se některá část transakce nepodaří, nastane nekonzistentní stav. Potřebujeme tedy všechny změny provedené zbylou částí transakce vrátit zpět (zrušit). ROLLBACK

Příklad Potřebujeme upravit více záznamů najednou. Buď všechny, nebo nastane-li při některé úpravě chyba, pak žádné. int zakazka_ = 1000; zakazky_celkem_ = zakazky_celkem_ ; EXEC SQL WHENEVER SQLERROR DO undo() ; EXEC SQL INSERT INTO zakazky ( cena ) VALUES ( :zakazka_ ) ; EXEC SQL UPDATE aktiva SET zakazky_celkem=:zakazky_celkem_ ; EXEC SQL COMMIT ; void undo() { EXEC SQL ROLLBACK ; }

V případě chyby… Před zpracováním zakazky: … aktiva: 5000 INSERT chyba UPDATE zakazky: … 1000 aktiva: 5000 INSERT UPDATE chyba zakazky: … 1000 aktiva: Po příkazu ROLLBACK zakazky: … aktiva: 5000 Tento případ nastat nemůže – SQL příkazy jsou sami o sobě atomické.

Transaction manager (TM) Příkazy jazyků DDL, DML a DCL jsou příkazy databáze. Příkazy COMMIT a ROLLBACK jsou příkazy transakčního manažeru. TM není součástí databáze – databáze je podřízená transakčnímu manažeru. Jak pracuje: UPDATE WHERE 1.DB vyhledá řádky odpovídající podmínce za WHERE 2.TM zapíše jejich stav do logu 3.DB změní tyto řádky 4.Dojde-li k vyvolání příkazu ROLLBACK, TM obnoví stav změněných řádků z logu

Bod synchronizace = „synchpoint“ Hraniční bod mezi dvěma po sobě následujícími transakcemi tj. na konci každé transakce, kdy je DB v konzistentním stavu Je založen na začátku aplikace, a dále při příkazech COMMIT a ROLLBACK.

COMMIT a ROLLBACK COMMIT Označuje úspěšný konec transakce Zakládá bod synchronizace Potvrdí všechny změny od předchozího bodu synchronizace, tyto změny se stávají nevratné. Zavře všechny otevřené kurzory; otevře zámky na všech záznamech ROLLBACK Označuje neúspěšný konec transakce Zakládá bod synchronizace Vrátí zpět všechny změny od předchozího bodu synchronizace Zavře všechny otevřené kurzory; otevře zámky na všech záznamech

COMMIT a ROLLBACK Každý SQL příkaz je vykonáván v rámci nějaké transakce – včetně DDL (CREATE) a DCL (GRANT). Dojde-li k vyvolání příkazu ROLLBACK, jsou zrušeny i takové změny. Transakce nemohou být vnořené jedna v druhé, nebo se prolínat – každý COMMIT a ROLLBACK ukončuje jednu transakci a začíná druhou

Tři konkurenční problémy The lost update problem The uncommitted dependency problem The inconsistent analysis problem

The lost update problem Proces 1 FETCH R UPDATE R Proces 2 FETCH R UPDATE R ČASČAS

The uncommitted dependency problem 1 Proces 1 FETCH R Proces 2 UPDATE R ROLLBACK ČASČAS

The uncommitted dependency problem 2 Proces 1 UPDATE R Proces 2 UPDATE R ROLLBACK ČASČAS

The inconsistent analysis problem Proces 1 FETCH R1 (30) suma = 30 FETCH R2 (30) suma = 60 Proces 2 FETCH R2 (40) UPDATE R2 (40 -> 30) FETCH R1 (30) UPDATE R1 (30 -> 20) COMMIT ČASČAS

Tři konkurenční problémy The lost update problem The uncommitted dependency problem The inconsistent analysis problem Řešení: zámky (dvoufázový COMMIT)

Zámky z hlediska působnosti  na řádcích  na tabulkách z hlediska přístupu  Sdílené (pro čtení)  výhradní = eXkluzivní (pro zápis)

Udílení S a X zámků Matice kompatibility: Zámky na R držené ostatními procesy XS- Nový proces žádá o zámek na R XNNY SNYY -YYY Y – zámek udělen N – zámek neudělen (proces musí čekat)

The lost update problem Proces 1 FETCH R udělen S zámek na R UPDATE R žádá X zámek na R čeká Proces 2 FETCH R udělen S zámek na R UPDATE R žádá X zámek na R čeká ČASČAS Deadlock

The uncommitted dependency problem 1 Proces 1 FETCH R žádá S zámek na R čeká znovuzahájení FETCH R udělen S zámek na R Proces 2 UPDATE R udělen X zámek na R ROLLBACK odemknutí zámku X na R ČASČAS

The uncommitted dependency problem 2 Proces 1 UPDATE R žádá X zámek na R čeká znovuzahájení UPDATE R udělen X zámek na R Proces 2 UPDATE R udělen X zámek na R ROLLBACK odemknutí zámku X na R ČASČAS

The inconsistent analysis problem Proces 1 FETCH R1 (30) suma = 30 udělen S zámek na R1 FETCH R2 (30) žádá S zámek na R2 čeká Proces 2 FETCH R2 (40) udělen S zámek na R2 UPDATE R2 (40 -> 30) udělen X zámek na R2 FETCH R1 (30) udělen S zámek na R1 UPDATE R1 (30 -> 20) žádá X zámek na R1 čeká ČASČAS Deadlock

Dvoufázový COMMIT První fáze: získávání zámků –může být postupné (ne najednou) Druhá fáze: odemykání zámků –většinou najednou pomocí COMMIT nebo ROLLBACK Řeší tři konkurenční problémy, resp. převádí na problém deadlocku

Deadlock Situace, kdy více procesů čeká vzájemně jeden na druhého Proces 1 Proces 2 Proces 3

Deadlock Detekce deadlocku –Detekce cyklu v grafu čekajících procesů –Hlídání doby trvání operace (trvá-li atomární operace příliš dlouho, asi nastal deadlock) Odstranění deadlocku –Vybere se nějaký proces z těch, které jsou v deadlocku a provede se na něm ROLLBACK