Databázové systémy přednáška 8 – Transakce

Slides:



Advertisements
Podobné prezentace
PHP aplikace pro komunikaci s MySQL
Advertisements

Zpracování SQL Lubomír Andrle 5. přednáška
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
Aplikační a programové vybavení
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á.
Přednáška č. 5 Proces návrhu databáze
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
Informatika pro ekonomy II přednáška 11
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Architektura databáze Oracle
Lubomír Andrle 8. přednáška
Databázové systémy II Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
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.
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.
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.
Databáze Úvod.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
Databázové systémy Architektury DBS.
Offline concurrency patterns Petr Smrček Ondřej Svoboda ČVUT FEL A7B36ASS – Architektura SW sytémů LS 2013.
Informatika pro ekonomy II přednáška 10
SQL – základní pojmy Ing. Roman Danel, Ph.D.
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
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
ZÁKLADY INFORMATIKY DATABÁZOVÉ SYSTÉMY Ing. Roman Danel, Ph.D. Institut ekonomiky a systémů řízení Hornicko – geologická fakulta.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. 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.
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.
Databáze.
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í.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B16 Autor Ing. Jiří Kalousek Období vytvoření březen.
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.
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ů.
Databáze Lokální systémy a SQL servery VY_32_INOVACE_7B10.
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.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
Úvod do databází zkrácená verze.
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ázové systémy Ing. Roman Danel, Ph.D. Institut ekonomiky a systémů řízení Hornicko – geologická fakulta.
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.
Databázové systémy přednáška 6 – Indexy
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Roman Danel Institut ekonomiky a systémů řízení 2016
A5M33IZS – Informační a znalostní systémy
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
Informatika pro ekonomy přednáška 8
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áška 9 Triggery.
Přednáška 5 Úvod do SQL.
Přednášky z distribuovaných systémů
Databázové systémy a SQL
Transkript prezentace:

Databázové systémy přednáška 8 – Transakce Roman Danel Institut ekonomiky a systémů řízení 2016

Transakce Co je to transakce? skupina příkazů, které převedou databázi z jednoho konzistentního stavu do druhého. Databázové transakce musí splňovat tzv. vlastnosti ACID: A - Atomicity – atomicita (nedělitelnost) C - Consistency - konzistence (není porušeno integritní omezení) I - Isolation - izolovanost (ostatní nevidí, dokud není ukončena) D - Durability - trvalost (změny, které se provedou potvrzenou transakcí jsou v databázi trvalé a nemohou být ztraceny)

Transakce Transakce v databázových systémech je tedy skupina databázových operací, která je provedena buď jako celek, nebo není provedena vůbec.

Transakce SQL: Zahájení transakce – BEGIN TRANSACTION Ukončení transakce: COMMIT – potvrzení transakce ROLLBACK – zrušení transakce, návrat do původního stavu

Příklad transakce Begin transaction delete from ORDERS_ITEM where order_id = 1; if @@error = 0 then begin delete from ORDERS where order_id=1; if @@error <> 0 rollback; end End

Způsob zpracování transakce Pesimistické – provedené změny jsou zapisovány do dočasných objektů a teprve po potvrzení se stanou platnými Optimistické – předpokládá se, že transakce se nebude vracet a změny jsou zapisovány do tabulek a do logu jsou zapisovány informace pro případný rollback

Typy transakcí Automatické Implicitní – dle SQL-92, vyžadují explicitní ukončení SET IMPLICIT_TRANSACTIONS Uživatelem definované Distribuované – zasahují na více serverů

Problémy konzistence Ztracený update „Dirty read“ Neopakovatelné čtení Fantom Dvojité čtení

Ztracený update Dva procesy přepisují stejná data na novou hodnotu. Hodnota z prvního procesu je ztracena a přepsána hodnotou z druhého procesu.

Lost Update

Dirty read – špinavé čtení Proces čte data, která upravuje jiná transakce, jenž ještě nebyla potvrzená COMMIT. Pokud druhý proces pak provede ROLLBACK, pak první proces přečetl chybná data

Dirty Read

Neopakovatelné čtení Čtení je neopakovatelné, pokud proces v rámci transakce čte dvakrát stejná data a pokaždé přečte jinou hodnotu. To se stane pokud hodnotu mezitím změnil jiný proces.

Non-repeatable Read

Fantom V rámci transakce dvakrát stejný dotaz pokaždé vrátí jiný počet záznamů

Dvojité čtení Opakově přečtený záznam, který během čtení změnil svou polohu v indexu

Úrovně izolace (Isolation Level) Read Uncommitted Read Commited (default) Repeatable Read Snapshot Serializable SET TRANSACTION ISOLATION LEVEL xxxx DBCC USEROPTIONS -- zjištění level

Read Uncommitted může nastat špinavé čtení, neopakovatelné čtení, a výskyt fantomů.

Read Committed nemůže nastat špinavé čtení, může nastat neopakovatelné čtení, a výskyt fantomů.

Repeatable Read nemůže nastat špinavé čtení, neopakovatelné čtení, mohou se vyskytnout fantomy.

Serializable Nejrestriktivnější – největší zabezpečení konzistence Sektorový (extent) zámek na data, která jsou ovlivněny (HOLDLOCK každé tabulky, které se transakce týká) Transakce by se měly vykonávat za sebou, nikoli souběžně

Význam Isolation Level Špinavé čtení Neopakovatelné čtení Fantom Dvojité čtení Read Uncommitted Ano Read Committed Ne Read Committed snapshot Repeatable Read Snapshot Serializble

Transaction Log Soubor, do kterého se zapisují všechny transakce Microsoft SQL Server – modely obnovy: Simple Full – všechny transakce v žurnálu, včetně systémových Bulk_logged – všechny kromě bulk

Bulk operace Obcházejí transakce a zapisují se přímo do datového souboru Nelze tedy provést rollback Např. TRUNCATE TABLE, SELECT INTO …, BULK INSERT

Vnořené transakce @@TRANCOUNT SAVE TRANSACTION save_point 0 = nulové vnoření SAVE TRANSACTION save_point ROLLBACK TRAN save_point Z transakce nelze volat uložené procedury ovlivňující databázi master

Oracle UNDO a REDO log Po commit se transakce přepíše do datového souboru Transakce lze vnořovat (nested transaction, dvoufázový commit) Zámky – sdílený, exkluzivní http://mujweb.cz/drd/transakceOracle.html

MySQL POZOR – záleží na použitém engine Engine MyISAM transakce nepodporuje InnoDB – rollback segment (jako u Oracle) se staršími verzemi řádků - výhodou InnoDB je rychlé čtení potvrzených neaktualizovaných záznamů, nevýhodou pomalejší update – tzv. multigenerační architektury (MVCC) Data jsou u InnoDB fyzicky uspořádána podle primárního klíče, update PK je pomalý

MySQL v PHP $pdo = new PDO($dsn, $user, $pwd); $pdo->beginTransaction(); …. $pdo->commit();

PostgreSQL V datovém souboru zůstávají verze záznamů a nepřepisují se – pomalejší čtení, rychlý commit i rollback Čas od času je nutné provést příkaz VACUUM a tyto „mrtvé“ záznamy odstranit Při dlouhých transakcích u MySQL narůstá rollback segment, u Postgre datový soubor