Zámky, transakce a izolační úrovně v SQL Serveru

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

Transakce a zamykání Jiří Tomeš

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

9. Transakční zpracování

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

Paralelní přístup k databázi

SIS INSTALAČNÍ PŘÍRUČKA (SITE INFORMATION SYSTEM) Datum vytvoření: Datum aktualizace: Verze: v 1.3 Reference:

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

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

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Implementační rozdíly ve vývoji IS při použití bezschémové a relační databáze

VITA x ISZR. Školení pro informatiky. Mgr. Jan Křížek, VITA software

Google AdWords - návod

Enterprise funkce SQL Serveru 2016, které jsou od SP1 zdarma

DS SolidWorks PDM Workgroup

JAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY

Transakce Profinit. All rights reserved.

Poznámky k verzi Remote Support Platform 3.0

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

Optimalizace dotazů a databázové transakce v Oracle

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

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

Úložiště elektronických dokumentů GORDIC - WSDMS

Příklady a návody. Databázová vrstva

IMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE

Ministerstvo pro místní rozvoj. podprogram

TÉMATICKÝ OKRUH TZD, DIS a TIS

Optimalizace SQL dotazů. RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Operační systém teoreticky

Operační program Rybářství

APSLAN. Komunikační převodník APS mini Plus <-> Ethernet nebo WIEGAND -> Ethernet. Uživatelský manuál

Microsoft Office. Word styly

PŘÍLOHA č. 2B PŘÍRUČKA IS KP14+ PRO OPTP - ŽÁDOST O ZMĚNU

imedicus - internetové objednávání

Elektronický formulář

Instalace programu VentiCAD

Obsah. Úvod 13 Část I: Úvod do MySQL. Část II: Návrh a tvorba databází v MySQL

Allegro 1.92 release ( od )

INFORMACE K POKUSNÉMU OVĚŘOVÁNÍ ORGANIZACE PŘIJÍMACÍHO ŘÍZENÍ SŠ S VYUŽITÍM JEDNOTNÝCH TESTŮ

MS WORD 2007 Styly a automatické vytvoření obsahu

Paralelní programování a jeho dopad na databázové. Bc. Lukáš Juřina

Google Apps. pošta 2. verze 2012

9. Transakční zpracování

Návod na připojení k ové schránce Microsoft Windows Live Mail

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Poznámky k verzi. Scania Diagnos & Programmer 3, verze 2.27

Klientský portál leasing24.cz. KLIENTSKÝ PORTÁL 24 NÁVOD NA PŘIHLÁŠENÍ A REGISTRACI UŽIVATELE Leasing24.cz. Stránka 1 z 15

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

Novinky SQL Server 2016

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

Návod pro Windows XP

Projekt INTERPI. Archivy, knihovny, muzea v digitálním světě Your contact information

PŘEPOČET ZÚČTOVANÝCH ZÁLOH V 10% NA 14% V KONOCOVÉ

Návod k použití vigilančních formulářů

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Pohyb v listu. Řady a posloupnosti

Podávání žádostí IS CEDR

Každý jednotlivý záznam datového souboru (tzn. řádek) musí být ukončen koncovým znakem záznamu CR + LF.

Novinky v programu Účtárna 2.09

Mobilní aplikace pro ios

Změna sazby DPH v HELIOS Red po

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Sada 2 Microsoft Word 2007

Signály Mgr. Josef Horálek

Modul účetnictví: Kontrolní výkaz DPH (SK) Podklady ke školení

Post-Processingové zpracování V módu post-processingu je možné s tímto přístrojem docílit až centimetrovou přesnost z běžné 0,5m.

Novinky v Maple T.A. 10

Escort Servis Night Prague

Registrační číslo projektu: Škola adresa: Šablona: Ověření ve výuce Pořadové číslo hodiny: Třída: Předmět: Název: ový klient Anotace:

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU MS POWERPOINT 2010

DUM 13 téma: Příkazy pro výběr

CERTIFIKOVANÉ TESTOVÁNÍ (CT) Výběrové šetření výsledků žáků 2014

INTEGROVANÁ STŘEDNÍ ŠKOLA TECHNICKÁ BENEŠOV Černoleská 1997, Benešov. Tematický okruh. Ročník 1. Inessa Skleničková. Datum výroby 21.8.

9.2.5 Sčítání pravděpodobností I

Změny v právních předpisech s dopady na RÚIAN. Marika Kopkášová

PŘÍRUČKA K POUŽÍVÁNÍ APLIKACE HELPDESK

( ) ( ) ( ) 2 ( ) Rovnice s neznámou pod odmocninou II. Předpoklady: 2715

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

SQL Server Data Tools (SSDT) RNDr. David Gešvindr MVP: Azure MCSE: Data Platform MCSD: Windows Store

{ } Kombinace II. Předpoklady: =. Vypiš všechny dvoučlenné kombinace sestavené z těchto pěti prvků. Urči počet kombinací pomocí vzorce.

Srovnání posledních dvou verzí studijních plánů pro studijní obor. Informační systémy. (studijní program Aplikovaná informatika)

Windows 8 - základy práce. Obsah: Úvodní obrazovka. Poslední aktualizace článku: 03/04/2015

ISIC Check. Návod k použití pro dopravce

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

Uživatelský manuál PuSCH App. windows-phone

Úvod do Entity Frameworku

( ) Kreslení grafů funkcí metodou dělení definičního oboru I. Předpoklady: 2401, 2208

Sběr informačních povinností regulovaných subjektů. Návod na instalaci certifikátů a nastavení IE. Verze: 2.0

1 Typografie. 1.1 Rozpal verzálek. Typografie je organizace písma v ploše.

Obchodní řetězec Dokumentace k návrhu databázového systému

Programování v jazyce C. Proces celkového sestavení programu ze zdrojového kódu, vývojové nástroje Linuxu

Aktualizace mapových podkladů v zařízení Garmin

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

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Peer Group User Quick Reference Cards

Vrtání závitů bez vyrovnávací hlavičky (G331, G332)

AVG Instalace DataCenter na databázi Firebird

Připravte si prosím tyto produkty Instalace hardwaru Výchozí nastavení z výroby

Transkript:

Zámky, transakce a izolační úrovně v SQL Serveru Mgr. David Gešvindr MVP: Azure MCSE: Data Platform MCSD: Windows Store MCT MSP david@wug.cz @gesvindr

Motivace Databázové systémy jsou častým úložištěm dat pro vaše aplikace Jejich správné použití je klíčové pro bezchybný chod aplikace Celá řada vývojářů pracuje s relační databází a není si plně vědoma: Vlastností transakcí Negativních důsledků souběžného zpracování Možností, jak se problémům při souběžném zpracování bránit

Osnova 1. Transakce 2. Zámky 3. Izolační úrovně a problémy souběžného zpracování 4. Nešlo by to bez zámků?

Osnova 1. Transakce 2. Zámky 3. Izolační úrovně a problémy souběžného zpracování 4. Nešlo by to bez zámků?

Transakce Základní vlastnosti transakce: Atomicity (atomičnost) Consistency (konzistence) Isolation (izolace) Durability (trvalost)

Atomicity Všechny operace v rámci transakce musí být provedeny kompletně nebo vůbec Každá operace modifikující data probíhá automaticky v transakci Typy transakcí Explicitní transakce XACT_ABORT Autocommit transakce Implicitní transakce

Consistency Každá transakce může měnit data jen povoleným způsobem Databáze musí být v platném stavu před provedením transakce a i po provedení transakce Platný stav je určen integritními omezeními definovanými nad daty Primary Key, Unique Key Foreign Key Check Constraint Omezení operací nad daty uložená procedura Také interní datové struktury musí být v platném stavu Např.: Neobsahují ukazatele na neexistující stránky

Isolation Přesto, že probíhá v databází více současných transakcí, vzájemně se neovlivňují Toto neplatí obecně Jsou různé úrovně izolace a výchozí úroveň izolace read committed neřeší všechny možné problémy Je nutné chápat rozdíly a správně nastavit izolační úroveň

Durability Jakmile klient obdrží informaci, že transakce byla potvrzena (commited), je garantováno, že změny jsou trvale uloženy 4 Transakce je potvrzena klientovi 3 Datové stránky jsou změněny v paměti a změny uloženy v logu Buffer Cache 1 Požadavek na změnu dat odeslán klientem 2 Měněné datové stránky jsou načteny do operační paměti 5 Při CHECKPOINTu jsou změněné stránky zapsány na disk

Osnova 1. Transakce 2. Zámky 3. Izolační úrovně a problémy souběžného zpracování 4. Nešlo by to bez zámků?

Pessimistic vs. optimistic concurrency Při souběžném přístupu může chtít více spojení aktualizovat stejná data Aktualizace dat zahrnuje jejich přečtení a následnou změnu Pessimistic concurrency Data jsou vhodně uzamykána, aby nemohla být změněna Optimistic concurrency Data nejsou uzamykána, ale před každou aktualizací se kontroluje, že od načtení data nikdo nezměnil

Jak fungují zámky 1. Připojíme se k databázi Vznikne sdílený zámek nad databází 2. Spustíme dotaz: UPDATE table1 SET Name = David WHERE Id = 10 Je třeba exkluzivně uzamknout řádek Zamykat je však třeba shora Intent exclusive zámek header header header S IX IX Database Table Page X Row

Požadovaný zámek Typy zámků v SQL Serveru Shared Lock Je možné zdroj číst, ale neměnit Update Lock Signalizace, že budeme měnit, ale zatím neměníme Kvůli snížení blokování čtení Aktivní zámek Shared Update Exclusive Shared GRANT GRANT WAIT Update GRANT WAIT WAIT Exclusive WAIT WAIT WAIT Exclusive Lock Je možné zdroj modifikovat

Typy zámků v SQL Serveru Intent Lock Chrání před vytvořením nekompatibilního zámku nad nadřazeným objektem header header header IS Page S IS IX X S Row Page Page Page Page header header header IX Page X Row S Page IS Page IX Page X Page

Rozsah zámků SQL Server určí při kompilaci dotazu potřebné rozsahy zámků Snaha je co nejméně blokovat ostatní Lock Escalation Pokud je při běhu dotazu překročena hranice 5000 zámků Zvýšena úroveň zámků, sníženy nároky na zdroje Page Row Partition LOCK_ESCALATION = AUTO TABLE DISABLE Table

Live Lock a Deadlock Blocking (live locking) Transakce čeká na uvolnění jiných zámků Transakce se nemohou předbíhat Deadlock Uváznutí Background deadlock monitor Deadlock victim error 1205 Úprava aplikace Přístup ke zdrojům ve stejném pořadí T1 GRANTED X Page GRANTED WAITING X Page header header WAITING X Page GRANTED X Page T2

Osnova 1. Transakce 2. Zámky 3. Izolační úrovně a problémy souběžného zpracování 4. Nešlo by to bez zámků?

Lost Updates Vzájemné přepsání změn Např.: Editor A si v 8:00 stáhne článek a celý den na něm pracuje Editor B si v 9:00 stáhne článek a celý den na něm pracuje Editor A uloží novou verzi článku v 15:00 Editor B přepíše článek svou verzí v 15:30 Práce editora A je ztracena Řešení: Editor A si článek exkluzivně uzamkne

Dirty Read Čtení nepotvrzených změn (mezivýsledků) jiné transakce

Level 0 Read Uncommitted Problém: Dirty Read Při čtení dat nejsou vytvářeny sdílené zámky Transakce může číst i nepotvrzená data Modifikace dat vytváří exkluzivní zámky vždy nehledě na izolační úroveň Vhodné použití: Čtení dat, kde nezáleží na přesném stavu Není blokováno čtení a není blokován ani další zápis Jsou pouze blokovány modifikace schématu (SCH_S) Používat velmi opatrně

Level 1 Read Committed Inconsistent Analysis / Non-repeatable Reads + Phantoms Pro čtení dat jsou vyžadovány sdílené záznamy Není možné číst nepotvrzená data (exkluzivní zámky uvolněny na konci transakce) Neposkytuje absolutní přesnost při čtení dat Při rozsáhlém čtení je i v rámci jedné tabulky možné narazit na nekonzistence Sdílené zámky jsou uvolňovány hned po přečtení dat

Non-repeatable Read Při opakovaném čtení dat v téže transakci přečteme jiná data

Level 2 Repeatable Read Phantoms Sdílené zámky jsou uvolněny až na konci transakce Ostatní transakce mohou data číst, ale nemohou je měnit Jakákoliv přečtená data jsou po celou dobu života transakce stejná Nevýhody: Jakákoliv data, kterých se dotkneme, uzamkneme až do konce transakce Rizika rozsáhlého blokování Problém s fantomy

Phantom Read Při opakovaném čtení dat se objeví nový záznam

Level 3 Serializable Využívá navíc range-locks uzamknou určitý rozsah hodnot nemůže být přidán žádný nový záznam Efektivní provedení vyžaduje vhodný index Uzamčení vhodných uzlů ve stromu Pokud není vhodný index vznikne zámek nad celou tabulkou

Nastavení izolační úrovně Pro celé spojení pomocí příkazu: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED Izolační úroveň se od daného okamžiku aplikuje se na všechny operace prováděné v daném spojení Pro individuální operace s pomocí HINTů: SELECT * FROM Users WITH(NOLOCK) Velmi dobře si rozmyslete jaký bude dopad, když budete míchat jednotlivé izolační úrovně uvnitř transakce Seznam HINTů: https://msdn.microsoft.com/en-us/library/ms187373.aspx

Osnova 1. Transakce 2. Zámky 3. Izolační úrovně a problémy souběžného zpracování 4. Nešlo by to bez zámků?

Nešlo by to bez zámků? Od SQL Serveru 2005 přidána možnost automaticky verzovat záznamy Rozšíření možností stávajících izolačních úrovní Pozor 2 oddělené technologie! Read Commited Snapshot Isolation Snapshot Isolation Level

Read Commited Snapshot Isolation Zajištěna konzistence na úrovni 1 dotazu Automaticky bude využíván místo vytváření sdílených zámků v READ COMMITTED izolační úrovni Aktivace pomocí příkazu:

Snapshot Isolation Level Nová izolační úroveň, kterou je třeba explicitně aktivovat Poskytuje vlastnosti úrovně serializable Minimalizuje počet zámků Např.: Jeden uživatel generující report nezablokuje půl systému Aktivace pomocí příkazu:

Negativní dopad snapshotů Aktivací jedné či obou úrovní snapshot izolace se automaticky začnou verzovat všechna modifikovaná data Zátěž na tempdb kde je uloženo version store Hlavička řádku se zvětší o 14 bajtů, pokud se řádek verzuje Pokud 2 transakce ve snapshot isolation level začnou měnit navzájem data dojde ke konfliktu a jedna je ukončena

Osnova 1. Transakce 2. Zámky 3. Izolační úrovně a problémy souběžného zpracování 4. Nešlo by to bez zámků?

Dotazy Mgr. David Gešvindr MVP: Azure MCSE: Data Platform MCSD: Windows Store MCT MSP david@wug.cz @gesvindr