Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Relevanta dokument
Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

ÖVERVAKNING AV SQL SERVER

Grunderna i SQL del 1

Design och underhåll av databaser

Föreläsning 7: Transaktioner

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Grunderna i SQL del 1

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Grunderna i SQL del 2 1. Underfrågor 2. Underfrågor som sökvillkor 3. Andra användningsområden för underfrågor

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Lösningar till tentamen i EDAF75

KAP 16 BACKUP, RESTORE OCH RECOVERY

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Innehåll Programability Del 2

Grunderna i SQL del 2 1. Underfrågor 2. Underfrågor som sökvillkor 3. Andra användningsområden för underfrågor 4. Komplexa underfrågor 5.

TENTAMEN DATABASKUNSKAP ITEK12

Stored procedure i ASP.NET

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

1.Lär känna MS SQL Observera. Tips. Förberedelse

Structured query language (SQL)

Föreläsning 6 Databaser och säkerhet

Databaser design och programmering. Transaktionshantering och säkerhet säkerhetsproblem fleranvändarproblem transaktioner låsning

Starta MySQL Query Browser

Databaser och Datamodellering Foreläsning IV

Databasteknik för D1, SDU1 m fl

Databasutveckling Introduktion till SQL och TSQL

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Relationsdatabashanteringssystem RDBHS

1. PLSQL 2 2. Select into

public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) { errormsg = "";

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Databaser & databasdesign. Personuppgiftslagen, säkerhet och transaktioner.

INNEHÅLL. Historik Vad är SQL Språkuppbyggnad SELECT Operatorer Logiska/Jämförelse SELECT med Alias och JOIN INSERT UPDATE DELETE

Vyer, Prepared Statements, Triggers

ADO.NET Murach Kapitel 17-20

Övningar i SQL. SQLAccess.doc Ove Lundgren

VAD GÖR DU / VEM ÄR DU?

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Tentamen i Databasteknik

Tentamen 4,5 hp Delkurs: Databaser och databasdesign 7,5hp Tentander: VIP2, MMD2, INF 31-60, ASP

WCMS-15, Webbutvecklare CMS

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Alternativ till låsning. Optimistik approach TimeStamp

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Klientprogrammering mot databaser

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Databaser - Design och programmering. Säkerhetsproblem. SQL-injektion. Databashanteraren. Transaktion. Exempel. Transaktionshantering och säkerhet

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Databaser design och programmering Säkerhetsproblem Databashanteraren SQL-injektion

Webbprogrammering, grundkurs 725G54

Skapa exempeldatabasen

Transaktioner och samtidighet

Karlstads Universitet, Datavetenskap 1

Laboration SQL. Kom igång.

VAD GÖR DU / VEM ÄR DU?

Stored procedure i ASP.NET

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

Tentamen I Arkitektur och design av globala applikationer

Sid 1 (9) Tillämpad fysik och elektronik Karin Fahlquist. Laboration: Databasdesign & SQL

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Rättningsmall tenta den 25e oktober Uppgift 1. Uppgift 2. se slides

732G16: Databaser - Design och programmering

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Databaser - Design och programmering

Structured Query Language (SQL)

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Transaktionshantering med samtidighetskontroll i databaser

Final Exam DATABASE TECHNOLOGY - 1DL300

Funktionsbeskrivning

9. Anonyma block 10. Clean code och läsbarhet 11. Variabeltyper och variabeldeklaration 12. Olika loopar: Basic, while och for loop

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Introduktion till Jasmine 1.2 ODQL

Lösningsförslag, tentamen i Databaser

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

Sample exam questions. Database exam TIG058

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Karlstads Universitet, Datavetenskap 1

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Introduktion till Winbas. excel till Winbas

Föreläsning 5 Dagens föreläsning går igenom

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Kopplingar via datalänk från Winbas till Excel samt Pivottabell 1 (13)

Filbeskrivningar Eller på särskild CD skiva

Föreläsning 2: Översikt över ett databassystem

Uppgift 1. (a) Ange tre orsaker hur felaktigheter i en databas kan uppsta. Till varje av dem, ange en lamplig metod som anvands som atgard mot dessa.

Transkript:

Transaktioner 1. Transaktioner 2. Samtidighet ( concurrency ) och lås Kap. 17 3. Deadlock Sid. 1

5. Transaktioner En transaktion är en grupp av frågor samlade till en logisk enhet Normalt är varje SQL -fråga en transaktion Flera SQL -frågor kan dock grupperas till en gemensam transaktion Förändringar genom funktionsfrågor blir permanenta först efter commit på transaktionen Innan commit så kan alla ändringar ångras med rollback (= undo på allt sen starten) Efter commit finns dock ingen rollback! Användningsområden: När flera funktionsfrågor påverkar samma data Vid uppdatering av främmandenyckler Vid flytt av poster mellan tabeller När funktionsfrågor är baserad på resultat av SELECT -frågor Vid SQL -frågor som kan orsaka errors som påverkar dataintegriteten Sid. 2

5.1. Skapa transaktioner En transaktion påbörjas genom BEGIN TRANSACTION (eller om man är lat BEGIN TRAN) Som standard så kör SQL Server med autocommit Varje SQL -fråga behandlas som en enskild transaktion Enskilda transaktioner som resulterar i errors blir auto-rollback ROLLBACK kan användas utan att en transaktion explicit har påbörjats med BEGIN TRAN COMMIT fungerar inte utan påbörjad transaktionen Syntax BEGIN {TRAN TRANSACTION} -- Början på transaktionen SAVE {TRAN TRANSACTION} Punkt -- Sparar en markering i transaktionen COMMIT [TRAN TRANSACTION] -- Utför transaktionen ROLLBACK [[TRAN TRANSACTION] [,Punkt]] -- Ångrar transaktionen Notera TRAN (eller TRANSACTION) nyckelordet är valfritt men rekommenderas för en tydligare syntax. Sid. 3

5.2. Exempel Lägger till tre poster i en gemensam transaktion: BEGIN TRAN -- Börjar transaktionen INSERT INTO Utbetalningar VALUE ( 3, 12500, 'Juli') INSERT INTO Utbetalningar VALUE ( 3, 13200, 'Augusti') INSERT INTO Utbetalningar VALUE ( 3, 8700, 'September') COMMIT TRAN -- Utför transaktionen (ändringarna blir permanenta) Av säkerhetsskäl så vill vi inte att en DELETE -fråga ska kunna ta bort mer än 2 poster: BEGIN TRAN DELETE FROM Utbetalningar WHERE AnställdID = 5 IF @@ROWCOUNT > 2 ROLLBACK TRAN -- Ångrar transaktion ELSE COMMIT TRAN -- Permanenta ändringar Utbetalningar UtID AnställdID* Belopp Månad 1 5 18700 Juli 2 5 1600 Juli 4 10 21200 Augusti 5 7 NULL Juli 7 2 22500 Juli 8 7 19900 September 10 2 22500 Augusti 11 5 5600 September Sid. 4

5.3. Nästlade transaktioner (skräp!) och sparade markeringar (bättre) Nästlade transaktioner är transaktioner påbörjade inuti andra transaktioner Systemfunktionen @@TRANCOUNT håller reda på nivån på transaktionerna Commit på undertransaktioner (nivå > 1) gör ingenting mer än att minska @@TRANCOUNT Rollback gäller för hela transaktionen (ignorerar nivån) Genom en sparad markering (save point) så möjliggörs en delvis rollback Exempel Nästlade transaktioner och dess avsaknad av permanent påverkan av tabeller: BEGIN TRAN DELETE Lärare BEGIN TRAN -- Nästlad transaktion DELETE Akademier COMMIT TRAN -- Ändringar permanent?! ROLLBACK TRAN -- Ångrar transaktionen? Lärare Förnamn Efternamn Akademi Andreas Persson 3 Johan Petersson 3 Kalle Räisänen 3 Akademier AkademiID Namn 3 Handelshögskolan 4 Akademin för Naturvetenskap och teknik Sid. 5

6. Samtidighet ( concurrency ) och lås Samtidighet kan bli problem när olika transaktioner samtidigt ändrar/läser samma datakälla Lösningen är att använda lås på datakällan SQL Server sköter automatiskt låsprocessen (om man säger till) Dock kan det ibland behövas bättre lås! Fyra typer av problem med samtidighet Förlorade uppdateringar Då två transaktion utför ändringar samtidigt på samma tabell kan detta resulterar i att den senare ändringen skriver över den första ändringen Dirty reads En transaktion hämtar data som inte är commit av en annan transaktion Nonrepeatable reads Samma SELECT -fråga ger olika resultat eftersom en annan transaktion har ändrat datakällan mellan SELECT -frågorna Fantomvärden Medan en transaktion ändrar eller tar bort poster så lägger en annan transaktion till poster som då strider mot den första transaktionens ändringar Notera Ett lås låser hela hierarkier i databasen. Ex.: låses en tabell så låses även alla poster i tabellen: Tabell -> Post Sid. 6

6.1. Isoleringsnivå på transaktioner Genom en isoleringsnivån SET TRANSACTION ISOLATION LEVEL så kan avskildheten mellan transaktioner kontrolleras Högre isoleringsnivå förhindrar concurrency problem men kräver mera systemresurser Lägre isoleringsnivå accepterar vissa concurrency problem och ger bättre prestanda Syntax SET TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED READ COMITTED REPEEATABLE READ SNAPSHOT SERIALIZABLE} Isoleringsnivå Dirty reads Lost updates Nonrepeatable reads Phantom reads READ UNCOMMITTED Accepterar Accepterar Accepterar Accepterar READ COMITTED Förhindrad Accepterar Accepterar Accepterar REPEEATABLE READ Förhindrad Förhindrad Förhindrad Accepterar SNAPSHOT Förhindrad Förhindrad Förhindrad Förhindrad SERIALIZABLE Förhindrad Förhindrad Förhindrad Förhindrad Sid. 7

7. Deadlock Deadlock uppstår när två transaktioner inte kan COMMIT för att de har satt ett varsitt lås på en datakälla som den andra behöver SQL Server behandlar automatiskt deadlocks Väljer en av transaktionerna medan den andra blir deadlock victim Det är dock bra att vet hur deadlocks kan förhindras! Exempel Tabell1 Transaktion A Transaktion B Tid Tabell2 Sid. 8

7.1. Tips för att förhindra deadlock Är det möjligt så använd en låg isoleringsnivån Default är isoleringsnivån READ COMMITTED Hålla transaktionerna korta Försök hålla SELECT -frågor utanför transaktionerna Låt aldrig en transaktion vara öppen i vänta på en inmatning från användare! Vänta med större transaktioner till strategiska tidpunkter Ex.: säkerligen få användare av databasen kl 23.59 på nyårsafton Utföra ändringar i samma ordning i transaktionerna: Dåligt ex.: Transaktion A Transaktion B UPDATE Tabell1 UPDATE Tabell2...... UPDATE Tabell2 UPDATE Tabell1 Bättre ex.: Transaktion A Transaktion B UPDATE Tabell1 UPDATE Tabell1...... UPDATE Tabell2 UPDATE Tabell2 Sid. 9