Transaktioner och samtidighet

Relevanta dokument
Karlstads Universitet, Datavetenskap 1

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

Databaser design och programmering Säkerhetsproblem Databashanteraren SQL-injektion

Föreläsning 7: Transaktioner

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

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

ÖVERVAKNING AV SQL SERVER

Relationsdatabashanteringssystem RDBHS

Transaktionshantering med samtidighetskontroll i databaser

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

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

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

Alternativ till låsning. Optimistik approach TimeStamp

An English version of the questions is found at the back of each page.

Samtidighetskontroll i applikationer utvecklade med ASP.NET Web Forms och traditionell ADO.NET

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

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

TENTAMEN. TDDD12 Databasteknik TDDD46 Databasteknik. 16 augusti 2010, kl 14-18

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

TDDD12 och TDDD46 Databasteknik. Lena Strömbäck

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

Vyer, Prepared Statements, Triggers

Lösningar till tentamen i EDAF75

TENTAMEN TDDB77 Databaser och Bioinformatik 15 mars 2002, kl 14-18

KAP 16 BACKUP, RESTORE OCH RECOVERY

Cache-koherens protokoll MESI och MOSI

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

Tentamen i Databasteknik

Ett databashanteringssystem (DBHS) skiljer sig från andra programmeringssystem bl.a.

TENTAMEN TDDB77 Databaser och Bioinformatik 22 augusti 2006, kl 14-18

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Tentamen ISGB01 (delkurs i ISGB24) Databasdesign 7,5 Poäng

Tentamen DATABASE TECHNOLOGY - 1MB025

Tentamen DATABASTEKNIK - 1DL116

Final Exam DATABASE TECHNOLOGY - 1DL300

MESI i Intel Core 2 Duo

Fillagring och indexering

Karlstads Universitet, Datavetenskap 1

Tentamen i Databasteknik

Stored procedure i ASP.NET

Standardfilerna Input och Output

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

Trådar. Aktiva objekt

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper

Tentamen DATABASTEKNIK - 1DL116

Tentamen den 18 mars svar Datorteknik, EIT070

Grundläggande datavetenskap, 4p

Kunskapsbank ICARUS DB

Minneshantering segmentering och virtuellminne. Föreläsning 3

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Structured Query Language (SQL)

Synkronisering. Ordning och reda

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.

TENTAMEN TDDB77 Databaser och Bioinformatik 19 april 2002, kl 14-18

Pipelining i Intel Pentium II

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Tentamen etjänster och webbprogrammering

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Tentamen i. Databasteknik

INTRODUKTION TILL JDBC

Deadlocks. detektera och undvik

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

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

Tentamen DATABASTEKNIK - 1DL116, 1MB025, 1DL124

732G16: Databaser - Design och programmering

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

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

Databasspråket SQL - online.

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Mer datorarkitektur. En titt I datorn Minnen

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

Kunskapsbank ICARUS DB

Tentamen, Distribuerade System/Programvaruarkitektur

Databasspråket SQL - online.

Digitala System: Datorteknik ERIK LARSSON

Design av ett objektorienterat datalager. Mårten Wikström

Uppgift 1: a) u= a c + a bc+ ab d +b cd

UNIX verktyg. Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem

Datorteknik ERIK LARSSON

Centralenheten: ALU, dataväg och minne

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Exempeltentamen Datorteknik, EIT070,

Stored procedure i ASP.NET

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

1. Treskiktsarkitektur 2. Applika1onsprogramvara 3. Teknisk programvara. Kapitel 6 sid

HF0010. Introduktionskurs i datateknik 1,5 hp

Institutionen för datavetenskap Department of Computer and Information Science

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Frågeoptimering. Frågeoptimering kapitel 14

Datastrukturer. föreläsning 8. Lecture 6 1

Databaser - Design och programmering

Tentamen. Databasmetodik Lördag 27 september 2014 kl

Transkript:

Databases Transaktioner och samtidighet Real World Model User 4 Updates User Queries 3 Answers Updates User Queries 2 Answers Updates UserQueries 1 Answers Updates Queries Answers Database management system Processing of queries and updates Access to stored data Physical database december 2009 1 1 december 2009 2 2 Varför ska man kunna det här: Bara 4 platser kvar på flyget. Ettannatexempel: Lena Book(sess1,flight1,4); Add_passenger(Lena,sess1); Add_passenger(Göran, sess1); Add_passenger(Filip,sess1); José Administratören: Update employee Set salary = salary + 1000 Chefen: select sum(salary) from employee Add_passenger(Ludvig, sess1); Add_payment(Sess1, Lena); Confirm(Sess1,Tick); Fails Book(sess2,flight1,1); Add_passenger(Jose,sess2); Add_payment(sess1, Jose); Confirm(sess1,Tick); Generated code: For each emp in employee; Read(salary) Salary =salary + 1000 Write(salary); december 2009 3 3 december 2009 4 4 1

Denna föreläsning Vad är en transaktion? Samtidighet och serialisering Implementation av serialisering (låsning) Transaktioner december 2009 5 5 december 2009 6 6 Transaktioner Exempel på transaktioner En transaktion är den logiska enheten av databasbearbetning och kan bestå av en eller flera databasoperationer. Databasoperationer i en förenklad modell: read-item(x) write-item(x) december 2009 7 7 december 2009 8 8 2

Transaktioner Read-item(X) Q: Hur exekverar man en read-item och en write-item? 1. Hitta blocket som innehåller X 2. Kopiera blocket till primärminnet (buffert) 3. Kopiera X från bufferten till programvariabel X Obs: mera om buffert i nästa föreläsning. december 2009 9 9 december 2009 10 10 Write-item(X) Exempel på transaktioner 1. Hitta blocket som innehåller X 2. Kopiera blocket till primärminnet (buffert) 3. Kopiera värdet av programvariabel X till rätt plats i bufferten 4. Lagra det modifierade blocket på skivan december 2009 11 11 december 2009 12 12 3

Egenskaper hos transaktioner Egenskaper för transaktioner Minsta enhet av operation Kan ändra databasen Kan gå fel ACID: Atomicity, Consistency preservation, Isolation, Durability A: En transaktion är en atomär enhet för bearbetning. Allt eller inget. ACID-egenskaperna C: En databas som befinner sig i ett konsistent tillstånd (d.v.s. databasen uppfyller alla villkor i schemat och eventuella andra villkor) före exekveringen av en transaktion, befinner sig i ett konsistent tillstånd även efter exekveringen. december 2009 13 13 december 2009 14 14 Egenskaper för transaktioner Egenskaper för transaktioner ACID: Atomicity, Consistency preservation, Isolation, Durability Hur uppnår man ACID-egenskaperna? I: En transaktion borde framstå som om den exekverades isolerad från andra transaktioner. A: återställningssystemet C: programmeraren + DBMS I: samtidighetskontroll D: Ändringar som gjordes i databasen av en committad transaktion består i databasen. D: återställningssystemet december 2009 15 15 december 2009 16 16 4

Enanvändarsystem - Fleranvändarsystem Samtidighet Enanvändarsystem: högst 1 användare kan använda systemet vid varje tidpunkt Fleranvändarsystem: flera användare kan använda systemet samtidigt flera CPU: parallell bearbetning en CPU: interfoliering (eng. interleaving) december 2009 18 18 Notation Interfoliering december 2009 19 19 december 2009 20 20 5

Transactionsschema Vad händer om? När två transaktioner interfolierar refererar vi till ordningen mellan operationerna som ett transaktionsschema. december 2009 21 21 december 2009 22 22 Problem med interfoliering Lost-update Det finns fyra typer av problem som kan uppstår när vi har interfoliering. - Lost update - Dirty read - Incorrect summary - Unrepeatable read december 2009 23 23 december 2009 24 24 6

Temporary Update (Dirty-Read) Incorrect summary FAIL my-account := my-account1 - write-item(my-account1); my-account := my-account2 + write-item(my-account2); sum:= 0; sum := sum + my-account2; sum := sum + my-account1; december 2009 25 25 december 2009 26 26 Unrepeatable read Samtidighet Ett tidsschema S är seriellt om operationerna i varje transaktion T exekveras direkt efter varandra. Ett tidsschema S är serialiserbart om det finns ett ekvivalent seriellt tidsschema S'. ekvivalent: konfliktekvivalent Seriella scheman inneffektivs serialiserbara bättre Båda typerna undviker fel i transaktionerna december 2009 27 27 december 2009 28 28 7

Seriella scheman Seriella scheman december 2009 29 29 december 2009 30 30 Konfliktekvivalens Konfliktekvivalens Två operationer är i konflikt om följande gäller: (i) de tillhör olika transaktioner (ii) de accessar samma data X (iii) en av operationerna är write-item(x) Två tidschema S och S' är konfliktekvivalenta om ordningen mellan varje par av operationer i konflikt är samma i S och S'. I ett (konflikt)serialiserbart tidsschema kan man omorganisera operationerna som inte är i konflikt tills vi får ett seriellt tidsschema. december 2009 31 31 december 2009 32 32 8

Serialiserbart schema? Serialiserbart schema? december 2009 33 33 december 2009 34 34 Serialierbart schema? Algoritm för testning av serialiserbarhet Med hjälp av en riktad graf 1. skapa en nod för varje transaktion 2. om T j exekverar read-item(x) efter att T i exekverar writeitem(x), skapa en båge T i T j 3. om T j exekverar write-item(x) efter att T i exekverar readitem(x), skapa en båge T i T j december 2009 35 35 december 2009 36 36 9

Algoritm för testning av serialiserbarhet Algoritm för testning av serialiserbarhet 4. om T j exekverar write-item(x) efter att T i exekverar writeitem(x), Med hjälp av en riktad graf 1. skapa en nod för varje transaktion skapa en båge T i T j 2-4. för varje par av operationer i konflikt, skapa en båge T först T sist 5. S är serialiserbar om grafen inte innehåller någon cykel. 5. S är serialiserbar om grafen inte innehåller någon cykel. december 2009 37 37 december 2009 38 38 Serialiserbara scheman? Serialiserbara scheman? december 2009 39 39 december 2009 40 40 10

Implementation av serialiserbarhet Låsning Problem: Transaktioner uppstår interativt I realtid. Effektivitet viktigt grafsökning dyrt. Låsning: kontrollera access till data delade/odelade lås eller läs-/skrivlås: read-lock(x) write-lock(x) unlock(x) december 2009 41 41 december 2009 42 42 Delad/Odelad Låsning Delad/Odelad Låsning 1. En transaktion T ska låsa X m.h.a. read-lock(x) eller writelock(x) före exekvering av read-item(x). 4. En transaktion T ska inte använda ett read-lock(x) om den redan har ett läslås eller ett skrivlås på X. 2. En transaktion T ska låsa X m.h.a. write-lock(x) före exekvering av write-item(x). 5. En transaktion T ska inte använda ett write-lock(x) om den redan har ett läslås eller ett skrivlås på X. 3. En transaktion T måste låsa upp X m.h.a. unlock(x) efter att alla read-item(x) och write-item(x) i T har exekverats. december 2009 43 43 december 2009 44 44 11

Låsning Exempel Ursprunglig transaktion Med lås read-lock(my-account1); unlock(my-account1); write-lock(my-account2); write-lock(my-account); write-lock(my-account); my-account2:= my-account2 + 200; write_item(myaccount2); my-account2:= my-account2+200; write_item(myaccount2); unlock(my-account2); unlock(my-account); write-lock(other-account); unlock(my-account); unlock(other-account); december 2009 45 45 december 2009 46 46 Exempel Serialiserbarhet genom Tvåfaslåsning write-lock(account1); read-item(account1); account1 := account1-200; write_item(myaccount1); unlock(account1); write-lock(account2); read-item(account2); account2:= account2 + 200; write_item(account2); unlock(account2); sum:=0; read-lock(account1); read-item(account1); sum := sum + account1; unlock(account1); read-lock(account2); read-item(account2); sum := sum + account2; unlock(account2); En transaktion följer tvåfaslåsningsprotokollen om alla låsoperationer (read-lock, write-lock) kommer före den första unlock-operationen i transaktionen. En transaktion som följer tvåfaslåsningsprotokollen har en expansionsfas och en krympfas. december 2009 47 47 december 2009 48 48 12

Exempel fortsättning Tvåfaslåsning? write-lock(my-account1); my-account1 := my-account1-200; write_item(myaccount1); write-lock(my-account2); unlock(my-account1); my-account2:= my-account2 + 200; write_item(myaccount2); unlock(my-account2); sum:=0; read-lock(account1); read-item(account1); sum := sum + account1; read-lock(account2); unlock(account1); read-item(account2); sum := sum + account2; unlock(account2); read-lock(my-account1); write-lock(my-account2); unlock(my-account1); my-account2:= my-account2+200; write_item(myaccount2); unlock(my-account2); read-lock(my-account1); unlock(my-account1); write-lock(my-account2); my-account2:= my-account2+200; write_item(myaccount2); unlock(my-account2); december 2009 49 49 december 2009 50 50 Serialiserbarhet genom Tvåfaslåsning Vad händer om? Om alla transaktioner följer tvåfaslåsningsprotokollen då får man ett serialiserbart tidsschema. write-lock(my-account1); my-account1 := my-account1-200; write_item(myaccount1); write-lock(my-account2); my-account2:= my-account2 + 200; write_item(myaccount2); unlock(my-account1); unlock(my-account2); write-lock(my-account2); my-account2 := my-account2*1.1; write_item(myaccount2); write-lock(my-account1); my-account1:= my-account1*1.1; write_item(myaccount1); unlock(my-account1); unlock(my-account2); december 2009 51 51 december 2009 52 52 13

Deadlock Deadlock Två eller flera transaktioner väntar på varandra för data som är låst av en annan transaktion. TID förhindra deadlock: Write-lock(my-account1) Write-lock(my-account2) - protokoll: lås all data på förhand, wait-die, wound-wait, no waiting, cautious waiting Write-lock(my-account2) upptäcka deadlock: wait-for graph, timeouts Write-lock(my-account1) december 2009 53 53 Utsvältning Summering En transaktion exekveras inte för en obestämt tid medan de andra transaktioner exekveras normalt. Transaktioner ACID-egenskaper Problem med samtidighet Seriella och serialiserbara scheman Låsning och tvåfaslåsning Deadlock och lösningar till detta december 2009 55 55 december 2009 56 56 14