Databáze 2011/2012 Transakce. RNDr.David Hoksza, Ph.D.

Podobné dokumenty
Transakce Profinit. All rights reserved.

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

Transakce a zamykání Jiří Tomeš

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

Databáze 2011/2012. Optimalizace, základní konstrukty T-SQL RNDr.David Hoksza, Ph.D.

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

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

Databáze. Optimalizace, základní konstrukty T-SQL David Hoksza

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

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

Sledování provedených změn v programu SAS

Změny detekované monitorem služeb na OPM 1. Konec SZ Vybere ta OPM, která v intervalu <aktuální den, D>:

Paralelní přístup k databázi

VIS ČAK - Uživatelský manuál - OnLine semináře

Portál veřejné správy

PEXESO UŽIVATELSKÝ MANUÁL

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

Mimořádná účetní uzávěrka

HTML šablona v MarushkaDesignu

Harmonogram instalačních a implementačních prací

DeepBurner Free 1.9. Testování uživatelského rozhraní s uživateli Deliverable B1 TUR Testování uživatelských rozhraní 2011 ČVUT FEL

Práce s WKT řetězci v MarushkaDesignu

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

- Aplikace je napsána v C#.NET, je instalována na webovém serveru - Data jsou ukládána v databázi MS-SQL 2005 a vyšší

FRONTA. Podobně jako u zásobníku lze prvek z fronty vyjmout pouze za takové podmínky, že je na řadě. Avšak jeho hodnotu můžeme přečíst kdykoliv.

16. Kategorizace SW chyb, kritéria korektnosti a použitelnosti, spolehlivost SW

Odpisy a opravné položky pohledávek

Teplota a její měření

Databázové systémy I. - II. 2009/2010

Možnosti připojení WMS služby do Klienta v Marushka Designu

Rádiová odečtová jednotka RFU 40. a odečtová aplikace RADIO READER

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

ONLINESKLAD.CZ. Vysvětlení pojmů: V tomto manuálu i v celém systému figurují 3 základní osoby: Popis administračního rozhraní

Oprava a modernizace panelového bytového domu Pod Špičákem č.p , Česká Lípa

Vykreslení obrázku z databázového sloupce na referenční bod geometrie

Případy užití RSSystems

Vizualizace TIN (trojúhelníková nepravidelná síť) v Marushka Designu

4 Datový typ, proměnné, literály, konstanty, výrazy, operátory, příkazy

GLOBÁLNÍ ARCHITEKTURA ROB

9. Transakční zpracování

Upomínky a kontroly E S O 9 i n t e r n a t i o n a l a. s.

Databázové systémy úvod

Specifikace pro SW aplikaci Start-up business.

EXTRAKT z mezinárodní normy

Integrace dat Profinit. All rights reserved.

Etržiště České pošty Centrum veřejných zakázek.

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

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

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

Optimalizace dotazů a databázové transakce v Oracle

Instalace a technické informace

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

Maturitní prací student osvědčuje svou schopnost samostatně pracovat na projektech a aktivně využívat nabyté zkušenosti

Generování Homepage ze serveru AReality.sk

Autorizace mapového serveru

Želešice - vodovodní řád pro zónu k podnikání

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

Portál veřejné správy

Provozní řád služby zálohování CIT

Návod k použití vědeckého kalkulátoru HP10s

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

Portál veřejné správy

Tile systém v Marushka Designu

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Roční uzávěrka E S O 9 i n t e r n a t i o n a l a. s.

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

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

Témata v MarushkaDesignu

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

TÉMATICKÝ OKRUH TZD, DIS a TIS

MISTROVSTVÍ EVROPY TEAMGYM SENIOŘI A JUNIOŘI PRAVIDLA ZÁŘÍ 2013 ČESKÝ PŘEKLAD. revize k Pravidla TeamGym září 2013 Strana 1 z 14

230V 50Hz 250V 5A zpožděná 230V 750W

Teorie elektronických obvodů (MTEO)

SQL - trigger, Databázové modelování

Databázové systémy Cvičení 5.2

Konzultační materiál č. 1/2015 Přiměřený zisk PŘIMĚŘENÝ ZISK OHROŽUJE POSKYTOVATELE HRANICE PRO PŘIMĚŘENÝ ZISK?

Změkčovače vody. Testry. Náplně (pryskyřice, sůl) Jednokohoutové Dvoukohoutové Automatické ,

Vnitřní předpis města Náchoda pro zadávání veřejných zakázek malého rozsahu (mimo režim zákona č. 137/2006 Sb., o veřejných zakázkách)

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Technická specifikace předmětu plnění. VR Organizace dotazníkového šetření mobility obyvatel města Bratislavy

Pravidla pro poskytování příspěvku na náklady spojené s reprezentací mládeže na mezinárodních závodech v roce 2013

1.3. Požárně bezpečnostní řešení

Uživatelská příručka aplikace Partner24 modul Zaměstnavatelský portál Česká spořitelna penzijní společnost, a.s.

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Databázové systémy I

VYUŽITÍ MULTIMEDIÁLNÍ TECHNIKY VE VÝUCE ANGLIČTINY UČÍME SE ANGLIČTINU S INTERAKTIVNÍ TABULÍ SMARTBOARD

PowerEgg2 Detektor a spínač síťových napětí

Optimalizace Profinit. All rights reserved.

Střední průmyslová škola strojní a elektrotechnická. Resslova 5, Ústí nad Labem. Fázory a komplexní čísla v elektrotechnice. - Im

ZPRÁVA DESADV typ zprávy 351 Avízo dodávky (dodací list)

integrované povolení

Legenda v MarushkaDesignu

Přednášky Teorie řízení Tereza Sieberová, 2015 LS 2014/2015

Databázové patterny Profinit. All rights reserved.

ZÁKLADNÍ INFORMACE O SPOLEČNÉ ČÁSTI MATURITNÍ ZKOUŠKY

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


Možnosti a druhy párování

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

Transkript:

Databáze 2011/2012 Transakce RNDr.David Hksza, Ph.D. http://siret.cz/hksza

Osnva Transakce definice prkládání transakcí izlace zámky Cvičení

Transakce v multi-user prstředí nestačí izlace na úrvni jedntlivých příkazů více příkazů je třeba chápat jak nedělitelnu jedntku akce v průběhu prvádění transakce se DB může dstat d neknzistentníh stavu a je třeba zajistit, aby statní transakce tent dčasně neknzistentní stav nemhly číst transakce je pslupnst perací uknčená příkazem COMMIT (vše prběhl v přádku) neb ROLLBACK (nastala chyba, všechny perace d ROLLBACKu je třeba strnvat a vrátit systém d knzistentníh stavu před startem transakce) T = {A 1, A 2,., A n, COMMIT ROLLBACK} transakce by měla splňvat ACID vlastnsti

ACID vlastnsti Atmicity (atmicita) buď se vyknají všechny perace v transakci, neb žádná všechny perace v rámci transakce se jeví jak jedna perace Cnsistency (knzistence) transakce převádí systém z jednh knzistentníh stavu d druhéh knzistence je dána na úrvni integritních mezení, případně dalších pžadavků kladených na systém, např. že příjmy a výdaje v IS musí být v rvnváze Islatin (izlace) z venku transakce nejsu vidět částečné změny prvedené v transakci když transakce A změní data, ale ještě běží, tak jiná paralelně běžící transakce B musí vidět data v pdbě, jaká byla před spuštěním A Durability (trvalst) ptvrzená data již nelze změnit data typicky nejsu ukládána přím na disk kamžitě, ale z důvdu efektivity puze jednu za čas, v tmt časvém úseku jsu změny ptvrzené, ale nejsu zapsané na disk a je třeba zajistit jejich trvalst i při HW chybě

COMMIT Uknčení transakce transakce úspěšně prběhla ROLLBACK (ABORT) nastala uživatelsky definvaná chyba v transakci (např. nepvlený parametr funkce) a byl explicitně zavlán ROLLBACK (např. v CATCH sekci) nastal prušení IO zjištěné v DB a byl zavlán ROLLBACK implicitně DB serverem nastala HW chyba (chyba disku, přerušení ddávky prudu, )

Transakce příklad prevdpenez(ucetz, ucetd, castka) { bns = nactizustatek(ucetz); bns -= castka; nastavzustatek(ucetz, bns) zde se systém dstává d neknzistentní h stavu } bns = nactizustatek(ucetd); bns += castka; nastavzustatek(ucetd, bns) zde je systém pět knzistentní

Atmicity ACID příklad prvedu se buď bě perace dečtení z účtu a přičtení na účet, neb žádná z nich Cnsistency celkvá částka na účtech, pr které se prvádí transakce zůstane shdná před i p změně Islatin statní transakce nevidí neknzistentní stav v plvině transakce prevdpenez spustí-li se např. prcedura na kntrlu celkvé hdnty zůstatků na všech účtech, pak musí pracvat buď se zůstatky před spuštěním prevdpenez neb p spuštění prevdpenez Durability jakmile je změna prvedena a je t hlášen uživateli, pak už změna musí být trvalá

Suběh transakcí Transakce běží typicky ve vlastním vláknu, kterých může být v rámci jednh prcesu (DB sever) více Suběh transakcí znamená prkládání perací v transakcích Suběh transakcí může výrazně zvýšit prpustnst v multi-user systémech (prvede se více perací za jedntku času) multi-cre DB server může na různých jádrech prvádět různé vlákna/transakce některé perace vyžadují delší čas pr dknčení (čtení z disku) a v tmt kamžiku lze přepnut na prvádění jiné transakce lze upřednstnit rychlé transakce před pmalými (např. pkud běh jedné trvá něklik minut a druhé něklik sekund nad stejnými daty) Je snaha prkládat perace tak, aby nebyla prušena vlastnst izlace (transakce A vidí mezistav transakce B)a v důsledku i knzistence systému

Suběh transakcí Transakční rzvrh způsb prlžení transakcí (v každý čas běží jedna perace jedné transakce, nejde-li vícejádrvý systém) Sérivý rzvrh rzvrh, kdy se transakce pskládají sérivě za sebe Serializvatelný rzvrh rzvrh, kdy výsledný stav dpvídá nějakému sérivému rzvrhu Je snaha prkládat tak, aby výsledný rzvrh byl serializvatelný, čímž dcílíme suběžnsti se stejným výsledkem, jak bychm všechny transakce puštěli v jednm vlákně a tedy je zajištěna knzistence

Serializavtelnst transakcí Serializvatelnst transakcí, lze dvdit z tzv. precedenčníh grafu Precedenční graf Precedenční graf je rientvaný graf jehž uzly tvří transakce a hrany knfliktní perace nad stejnými daty. Orientace hrany je dána přadím v jakém transakce k datům přístupují. Cyklus v precedenčním grafu READ(data) WRITE(data) READ(data) OK Knflikt WRITE(data) Knflikt Knflikt cyklus v precedenčním grafu značí nemžnst serializace rzvrhu, tj. neexistuje sérivý rzvrh, p jehž vyknání by byla DB ve stejném stavu, jak p vyknání danéh rzvrhu

Serializvatelnst - Serializvaný (T1 T3 T2) T1 T2 T3 X+=10 W(x) X+=10 R(y) W(x) T1 T2 příklad Serializvatelný (T2 T1 T3) T1 T2 T3 X+=10 W(x) T1 X+=10 R(y) W(y) RW T2 Neserializvatelný (T? T? T3) T1 T2 T3 X+=10 X+=10 R(y) W(x) W(x) W(y) T1 RW,WW RW T2 WR T3 RW WR T3 WR T3

Chvání prkládaných transakcí Lst Updates WRITE-WRITE knflikt přepsání neptvrzených dat Dirty Reads WRITE-READ knflikt čtení neptvrzených dat T1 X+=10 W(x) T2 X+=10 W(x) T1 X+=10 W(x) ROLLBACK T2 X+=10 W(x) COMMIT

Chvání prkládaných transakcí Nnrepeatable Reads READ-WRITE knflikt 2 stejná čtení vrátí různé hdnty Phantms READ-INSERT knflikt vlžení d intervalu čtených dat T1 T2 T1 T2 R(x-z) x+=10 Insert(y) W(x) R(x-z)

Úrvně islace transakcí Pmcí natavení úrvně izlace lze pr danu transakci nastavit pžadvané chvání prkládaných transakcí Čím vyšší úrveň, tím blíže ACID a tím hrší suběh (cncurrency) SQL92 nrma READ UNCOMMITED zabraňuje přepsání neptvrzených dat READ COMMITED zabraňuje navíc čtení neptvrzených dat REPEATABLE READ zabraňuje navíc nepakvatelnému čtení SERIALIZABLE zabraňuje navíc fantmům

Zajištění izlace Zámky Zámky transakce, která chce přistupit k datům musí nejdříve tyt data zamknut existují různé typy zámků a některé jsu knfliktní, tj. zámek nelze demknut, je-li již zamčen jinu transakcí. V takvém případě musí transakce čekat na uvlnění zámku zámky jsu uvlňvány buď hned p pužití, neb až na knci transakce (závisí na pžadvané úrvni izlace) zámky snižují prpustnst systému, ale zabraňují nežáducím jevům prkládání transakcí S(data) X(data) Sdílený zámek S(data) OK Knflikt udělván při čtení dat Exkluzivní zámek X(data) Knflikt Knflikt udělván při aktualizaci dat Knkrétní implementace DB bsahují mnh dalších typů zámku, MSSQL např. implementuje tzv. range lck, intent lck, schema lck,

Zajištění izlace pmcí zamykání V závislsti na pžadvané úrvni izlace se různým způsbem pužívají zámky Nezávisle na úrvni izlace platí, že X-? dvjice zámků je knfliktní READ UNCOMMITED zabrání puze ztraceným updatům nepužívají se zámky pr čtení dat (shared lck), ale pr update an (exclusive lck) READ COMMITED zabraňuje navíc čtení neptvrzených dat pužívají se zámky na čtení (shared lck), které jsu uvlněny kamžitě p načtení daných dat REPEATABLE READ zabraňuje navíc nepakvatelnému čtení zámky na čtení (shared lck) se drží až d knce transakce SERIALIZABLE zabraňuje navíc fantmům pužívají se speciální typy zámků, které umžňují zamknut interval (range lck) a ne puze knkrétní hdnty

Transakce v MSSQL SET TRANSACTION ISOLATION LEVEL islatin_level DBCC USEROPTIONS zjištění aktuální úrvně izlace (krmě jinéh) BEGIN TRAN[SACTION] zahájení explicitní transakce každý SELECT, INSERT, UPDATE, DELETE běží v implicitní transakci vytvřené SQL Serverem transakce lze pjmenvávat COMMIT [tran[scatin]] úspěšné uknčení transakce ROLLBACK [tran[scatin]] zrušení transakce

Transakce v MSSQL příklad IF OBJECT_ID('spTestTran') IS NOT NULL DROP PROCEDURE sptesttran; GO CREATE PROCEDURE sptesttran(@rllback BIT, @suffix VARCHAR(10)) AS BEGIN BEGIN TRAN UPDATE SalesLT.Custmer SET Suffix = @suffix WHERE CustmerID = 1; IF @rllback = 1 ROLLBACK TRAN ELSE COMMIT TRAN END PRINT 'prcedure executin ges n'; EXEC sptesttran 0, 'Jr.';

Deadlck Deadlck (uváznutí) situace, kdy si 2 neb více transakcí vzájemně drží vzájemně knfliktní zámky rzdíl d klasickéh čekání na uvlnění zámku!! Detekce uváznutí v MSSQL existuje prces, který jednu za čas prjde seznam zámků a hledá cyklické závislsti v případě deadlcku jsu rušeny knfliktní transakce (ROLLBACK) dkud deadlck nezmizí

Deadlck - příklad BEGIN TRAN COMMIT TRAN UPDATE Prduct SET Size = Size + 1 WHERE PrductID = 680; SELECT * FROM Custmer; --DEADLOCK BEGIN TRAN COMMIT TRAN UPDATE Custmer SET Suffix = 'Jr.' WHERE CustmerID = 1; SELECT * FROM Prduct; --DEADLOCK