Gegevensbanken 2010 Begrippen van transactieverwerking Bettina Berendt www.cs.kuleuven.be/~berendt.

Slides:



Advertisements
Verwante presentaties
Jongeren over politiek
Advertisements

BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
De elektronische verzamelaanvraag Ruben Fontaine Markt- en Inkomensbeheer – dienst Aangiftes.
‘SMS’ Studeren met Succes deel 1
Paulus' eerste brief aan Korinthe (20) 23 januari 2013 Bodegraven.
Differentie vergelijkingen differentie vergelijkingen
Werkwoorden d t dt.
NEDERLANDS WOORD BEELD IN & IN Klik met de muis
WAAROM? Onderzoek naar het meest geschikte traject voor de verlenging tot in Sint-Niklaas van het bestaande fietspad naast de Stekense Vaart en de Molenbeek.
BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
1 Resultaten marktonderzoek RPM Zeist, 16 januari 2002 Door: Olga van Veenendaal, medew. Rothkrans Projectmanagement.
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Uitgaven aan zorg per financieringsbron / /Hoofdstuk 2 Zorg in perspectief /pagina 1.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
7 april 2013 Zoetermeer 1. 1Korinthe Maar, zal iemand zeggen, hoe worden de doden opgewekt? En met wat voor lichaam komen zij? 2.
 Deel 1: Introductie / presentatie  DVD  Presentatie enquête  Ervaringen gemeente  Pauze  Deel 2 Discussie in kleinere groepen  Discussies in lokalen.
STAPPENPLAN GRAMMATICUS.
Ronde (Sport & Spel) Quiz Night !
Een Concert van het Nederlands Philharmonisch Orkest LES 4 1.
Een optimale benutting van vierkante meters Breda, 6 juni 2007.
Kb.1 Ik leer op een goede manier optellen en aftrekken
Tevredenheids- enquête 2012 P. Grouwels Inleiding Mogelijke antwoorden: Zeer goed: 4 sterren ****: volledig tevreden; Goed: 3 sterren ***:
© BeSite B.V www.besite.nl Feit: In 2007 is 58% van de organisaties goed vindbaar op internet, terwijl in 2006 slechts 32% goed vindbaar.
9 januari 2013 Bodegraven 1. 1Korinthe 11 1 Wordt mijn navolgers, gelijk ook ik Christus navolg. 2.
Nooit meer onnodig groen? Luuk Misdom, IT&T
Hoofdstuk 6: Controle structuren
FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 1 Kwaliteit en Patiëntveiligheid in de Belgische ziekenhuizen anno 2008 Rapportage over.
Elke 7 seconden een nieuw getal
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Softwarepakket voor het catalogeren en determineren van fruitsoorten
Regelmaat in getallen … … …
Regelmaat in getallen (1).
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
Oefeningen F-toetsen ANOVA.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
1 WIJZIGINGEN UNIEK VERSLAG. 2 Agenda Verbeteringen Veranderingen formulieren Praktische herinneringen Nieuwe formulieren Sociale en culturele participatie.
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
1 7 nov Rijnsburg 7 nov Rijnsburg. 2 Hebreeën 7 15 En nog veel duidelijker wordt het, als naar het evenbeeld van Melchisedek een andere priester.
13 maart 2014 Bodegraven 1. 1Korinthe Want gelijk het lichaam één is en vele leden heeft, en al de leden van het lichaam, hoe vele ook, een lichaam.
1. 33 GERECHTIGHEID GODS 21 Thans is echter buiten de wet om GERECHTIGHEID GODS openbaar geworden, waarvan de wet en de profeten getuigen, 34.
SIP File Recovery Tool. Agenda 18/10/2006Maken agenda + onderzoeken van verschillende filetypes 25/10/2006Uitzoeken hoe er effecient gelezen en geschreven.
Geometrie en topologie Rob Kromwijk, 26 juli 2012.
Afrika: Topo nakijken en leren.
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
ribwis1 Toegepaste wiskunde – Differentieren Lesweek 7
Vakgroep Telecommunicatie en Informatieverwerking 1 Werken met databasesystemen: beveiliging tegen falen Hoofdstuk 10 Database, Document and Content Management.
Vakgroep Telecommunicatie en Informatieverwerking 1 Werken met databasesystemen: delen van gegevens Hoofdstuk 11 Database, Document and Content Management.
Gegevensbanken 2010 Indexstructuren Bettina Berendt
Gegevensbanken 2010 Begrippen van transactieverwerking II: technieken voor concurrentiecontrole en herstel Bettina Berendt
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Oefeningen Workshop RIE Gemeenten
Centrummaten en Boxplot
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
13 november 2014 Bodegraven 1. 2 de vorige keer: 1Kor.15:29-34 indien er geen doden opgewekt worden...  vs 29: waarom dopen?  vs.30-32: waarom doodsgevaren.
1 Week /03/ is gestart in mineur De voorspellingen van alle groten der aarden dat de beurzen zouden stijgen is omgekeerd uitgedraaid.
1 DE ADVIEZEN VAN BEURSMAKELAAR BERNARD BUSSCHAERT Week
1 Jeroen de Vries Topologie. 2  Historische basis  Belangrijkste concepten  Topologie in de praktijk Inhoud:
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
SQL Les February 2019.
SQL Les 7 24 February 2019.
SQL Les 9 12 May 2019.
Transcript van de presentatie:

Gegevensbanken 2010 Begrippen van transactieverwerking Bettina Berendt

2 Begrippen van transactieverwerking: Motivatie & Samenvatting

3 query processing indexing II and higher-dimensional structures Waar zijn we? Les Nr.wiewat 1EDintro, ER 2EDEER 3EDrelational model 4EDmapping EER2relational 5KVrelational algebra, relational calculus 6KVSQL 7KVvervolg SQL 8KVdemo Access, QBE, JDBC 9KV functional dependencies and normalisation 10KV functional dependencies and normalisation 11BBfile structures and hashing 12BBindexing I 13BB 14 BB 15BBtransactions 16BBtransactions II: concurrentie & herstel 17BBData warehousing and mining 18EDXML, oodb, multimedia db Fysisch model / vragen

4 Dat willen wij niet! t reserveer!

5 Agenda Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL

6 Agenda Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL

7 Inleiding tot concurrentie en herstel –transactie = de uitvoering van een programma dat de gegevensbank raadpleegt of haar inhoud wijzigt –gelijktijdige verwerking van transacties is wenselijk, vaak noodzakelijk vnl. voor gegevensbanksystemen met meerdere gebruikers –twee mogelijkheden voor implementatie: interleaved uitvoering: –1 processor behandelt afwisselend verschillende transacties simultane uitvoering: –meerdere processoren werken in parallel –wij veronderstellen "interleaved" model

8 interleaved - 1 processor simultaneous - 2 processors Interleaved en simultaneous verwerking

9 Concurrentie gelijktijdige verwerking van transacties kan problemen veroorzaken vb: vliegtuigreservatiesysteem –transactie T1 schrapt reservatie van N plaatsen op vlucht V1 en reserveert N plaatsen op vlucht V2 –transactie T2 reserveert M plaatsen op vlucht V1 –mogelijke problemen: verloren aanpassing tijdelijke aanpassing foutieve sommering –vermijden d.m.v. concurrentiecontrole

10 –Zij X #reservaties op V1, Y #reservaties op V2 voor de transacties Verloren aanpassing: wijziging van T1 wordt per ongeluk teniet gedaan door T2 T1 T2 lees(X) X := X-N lees(X) X := X+M schrijf(X) lees(Y) schrijf(X) Y := Y+N schrijf(Y) Verloren aanpassing vb: X = 84 N = 5 M = 4 resultaat: X = 88 i.p.v. 83

11 T1 T2 lees(X) X := X-N schrijf(X) lees(X) X := X+M schrijf(X) lees(Y) Y := Y+N schrijf(Y) T1 afgebroken  aan X wordt terug de oorspronkelijke waarde toegekend Tijdelijke aanpassing (dirty read) tijdens de uitvoering wordt T1 door een of andere faling afgebroken; de gewijzigde waarden worden hersteld in oorspronkelijke toestand, maar T2 heeft intussen zo'n tijdelijk gewijzigde (ongeldige) waarde gebruikt

12 T1 T3 som := 0 lees(A) som := som+A... lees(X) X := X-N schrijf(X) lees(X) som := som+X lees(Y) som := som+Y lees(Y) Y := Y+N schrijf(Y) Foutieve sommering gebruik van inconsistente waarden door aggregaatfunctie bv. sommige van voor een wijziging en andere van erna T3 berekent het totaal aantal reservaties op vluchten terwijl T1 wordt uitgevoerd

13 Niet herhaalbare lezing (nonrepeatable read) –Gerelateerd aan "foutieve sommering": Lees zelfde item 2x kort na elkaar, waarde blijkt intussen gewijzigd (door een andere transactie) bv. reservatie vliegtuigtickets: –controleer of er vrije plaatsen zijn –indien ja: reserveer ze –reservatie mislukt: plaatsen blijken niet meer vrij

14 Herstel Waarom herstel nodig is –Een transactie moet ofwel volledig uitgevoerd worden ofwel helemaal niet –Bij een fout (software/hardware) tijdens een transactie: ze kan niet helemaal uitgevoerd worden  oorspronkelijke toestand moet hersteld worden (transactie is dan helemaal niet uitgevoerd)

15 Mogelijke falingen die tijdens de uitvoering van een transactie kunnen optreden 1. computer-crash inhoud van geheugen kan verloren zijn 2. transactie- of systeemfout verkeerde parameter, overflow, deling door 0, logische programmeerfout,.. 3. uitzonderingscondities bv. bestand kan niet gelezen worden, opgelegd door concurrentiecontrole bv. transactie afgebroken wegens deadlock 5. schijf-fout bv. beschadigd spoor 6. fysieke problemen, catastrofes brand, stroomonderbreking,... –Bij falingen van de types 1 tot 4 moet de oorspronkelijke toestand hersteld kunnen worden

16 Agenda Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL

17 Transacties: begrippen transacties: –"read-only" transactie: alleen ophalen (raadplegen) van gegevens –"update" transactie:  deze interesseren ons met aanpassing van gegevens lees- en schrijfbewerkingen van een transactie: –niveau van beschouwing van transacties: gegevenselementen en blokken of schijf op dit niveau zijn de bewerkingen van een transactie: –read_item(X) –write_item(X) kopieer programmavariabele X naar buffer schrijf buffer (onmiddellijk of later)

18 Lezen en schrijven –read_item(X): vind adres van blok dat X bevat kopieer dat blok in een buffer kopieer X in programmavariabele X –write_item(X): vind adres van blok dat X bevat kopieer dat blok in een buffer kopieer de programmavariable X op de juiste plaats in die buffer bewaar het aangepaste blok terug op schijf (onmiddellijk of later)

19 Status van de transactie wordt bijgehouden om zo nodig te kunnen herstellen status wordt bepaald door operaties: –BEGIN_TRANSACTION geeft begin van de transactie aan –READ / WRITE alle lees- en schrijfoperaties –END_TRANSACTION geeft einde van een transactie aan dan moet worden gecontroleerd of –de wijzigingen veroorzaakt door de transactie definitief doorgevoerd kunnen worden op de gegevensbank ( = committed ) –de transactie ongedaan moet worden gemaakt vanwege de concurrentiecontrole –COMMIT_TRANSACTION succesvol einde van de transactie: alle wijzigingen aangebracht door de transactie zijn definitief

20 Andere bewerkingen ROLLBACK ( of ABORT) –geen succesvol einde van de transactie; alle wijzigingen worden ongedaan gemaakt UNDO –één bewerking wordt ongedaan gemaakt REDO –één bewerking wordt opnieuw uitgevoerd

21 Overgangsdiagram tussen de statussen van de uitvoering van een transactie

22 Systeemlog –noteert alle transacties die waarden in de gegevensbank wijzigen –nodig bij herstelprocedures na falen –bijgehouden op schijf (met geregelde backup) Wat wordt geregistreerd: (T = een transactie-ID) –[ start_transaction, T ] –[ write_item, T, X, oude waarde, nieuwe waarde ] –[ read_item, T, X ] –[ commit, T ] –[ abort, T ]

23 Herstellen na faling twee mogelijkheden –transactie volledig ongedaan maken: = effect van write-opdrachten ongedaan maken log achterwaarts doorlopen, UNDO alle writes –transactie goed afwerken: = effect van write-opdrachten herstellen / herhalen log voorwaarts doorlopen, REDO alle writes Welk van beide kiezen? –commit point: punt waarop beslist wordt dat transactie goed afgewerkt moet worden i.p.v. ongedaan gemaakt

24 Commit points (bindpunten) een transactie bereikt een commit point wanneer –alle bewerkingen van de transactie met succes zijn uitgevoerd en –al die bewerkingen zijn geregistreerd op de log na commit point is resultaat van transactie definitief –  verplichting om aanpassingen werkelijk op schijf door te voeren indien nog niet gebeurd volgorde van acties tijdens commit –op log noteren: [ commit, T ] –log definitief op schijf zetten (vanuit buffer)  "force writing" –nu is transactie gecommit

25 Bij faling voor transacties die gestart zijn maar niet gecommit: rollback voor gecommitte transacties: REDO alle writes Meer details: zie volgende les

26 Checkpoints (controlepunten) op geregelde tijdstippen (gemeten in tijd of in aantal committed transacties): –effecten van wijzigingen worden op schijf gezet Acties: 1. onderbreek tijdelijk alle transacties 2. schrijf alle aangepaste gegevensbankblokken van buffer naar schijf 3. schrijf een checkpoint op de log en schrijf de log naar schijf 4. hervat de transactie-uitvoering Mogelijke extra informatie in checkpoint-record: –lijst van actieve transacties op dat moment –voor elke transactie: adres van 1-ste en meest recente records in de log

27 Gewenste eigenschappen van transacties (“ACID properties”) –Atomicity: ondeelbaarheid transactie wordt volledig uitgevoerd, of helemaal niet –Consistency preservation: consistente gegevensbank moet na transactie nog steeds consistent zijn –Isolation: geïsoleerdheid effect van transactie moet zijn alsof het de enige transactie is die uitgevoerd werd (geen interferentie met andere transacties) –er worden meestal 4 isolatieniveaus gedefineerd, naargelang van de graad van isolatie: niveau 0: geen overschrijven van een ‘dirty read’ van een transactie op hoger niveau niveau 1: geen verloren aanpassingen niveau 2: geen verloren aanpassingen en geen ‘dirty reads’ niveau 3: niveau 2 + ‘repeatable reads’ –Durability: duurzaamheid effect van transactie moet persistent zijn, mag niet verloren gaan

28 Agenda Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL

29 Transactieroosters (schedules) Operaties van meerdere transacties in chronologische volgorde opgeschreven –zie eerdere voorbeelden met T1 en T2 –Ander voorbeeld: Fig roosters, 1 ervan is duidelijk fout

30

31 Eigenschappen van transactieroosters –2 operaties conflicteren indien ze bij verschillende transacties horen ze hetzelfde gegevenselement gebruiken minstens een ervan een write_item is –een rooster S voor n transacties T i is volledig indien S alle operaties van de transacties T 1,…, T i, …, T n bevat (met inbegrip van een commit of abort operartie als laatste operatie van elke transactie, en geen andere elk paar operaties van één transactie T i in dezelfde volgorde voorkomt in S als in T i voor elk paar conflicterende operaties geldt dat de volgorde eenduidig vastligt

32 Herstelbaarheid van roosters –Een rooster is herstelbaar a.s.a. een transactie die gecommit is nooit meer ongedaan gemaakt moet worden Voldoende voorwaarde: –T commit enkel na commit van elke transactie die een waarde schrijft die T leest –Herstelbaar impliceert niet "eenvoudig herstelbaar" mogelijk "cascading rollback" –één transactie T terugrollen kan het nodig maken om een andere (die iets las dat door T geschreven werd) ook terug te rollen, enz. cascading rollback is tijdrovend

33 T1 T2 read (X) write(X) read(Y) write(Y) write(X) commit write(Y) commit T1 T2 read (X) write(X) read(X) read(Y) write(X) commit abort T1 T2 read (X) write(X) read(X) read(Y) write(X) write(Y) commit T1 T2 read (X) write(X) read(X) read(Y) write(X) write(Y) abort schema aschema eschema dschema c herstelbaar, maar wel probleem van verloren aanpassing niet herstelbaar, T2 leest item X geschreven door T1, en commit vooraleer T1 commit, abort van T1 daarna maakt die waarde van X ongeldig wel herstelbaar: commit van T2 is uitgesteld tot na commit van T1 wel herstelbaar: indien T1 abort, moet ook T2 een abort uitvoeren Voorbeeld

34 Cascadeloze roosters garanderen dat geen cascading rollbacks nodig zijn voldoende voorwaarde: –elke transactie T leest enkel waarden geschreven door transacties die al gecommit hebben meer restrictief ! –minder verschillende mogelijkheden om transacties gelijktijdig uit te voeren

35 Strikte roosters elke transactie T leest en schrijft enkel items na commit (of abort) van de laatste transactie die dat item geschreven heeft UNDO write_item: –gewoon oorspronkelijke waarde terugzetten meest restrictief –relatief weinig roosters mogelijk –maar eenvoudigst herstelbaar

36 In volgorde van restrictiefheid: herstelbaar – cascadeloos - strikt 1.herstelbaar rooster 2.casacadeloos rooster ; impliceert 1 3.strikt rooster ; impliceert 2 en 1

37 Agenda Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL

38 Serialiseren van roosters Serieel rooster: tussen eerste en laatste opdracht van een transactie T worden geen opdrachten van eender welke andere transactie uitgevoerd m.a.w. transacties worden na elkaar uitgevoerd –er kan dus geen interferentie zijn –indien transacties onafhankelijk zijn, is elk serieel rooster correct –nadeel van seriële roosters: beperking op concurrentie

39 Serialiseerbaarheid een rooster S van n transacties is serialiseerbaar a.s.a. het equivalent is met een serieel rooster met dezelfde n transacties –er zijn meerdere soorten equivalentie definieerbaar resultaat-equivalentie –gegeven beginvoorwaarden, zelfde resultaat –te zwak: voor andere beginvoorwaarden misschien niet equivalent beter: conflict-equivalentie

40 Conflict-equivalentie –twee roosters S 1 en S 2 zijn conflict-equivalent a.s.a. volgorde van 2 conflicterende operaties steeds dezelfde is in beide roosters –een rooster is conflict-serialiseerbaar a.s.a. conflict-equivalent met een serieel rooster –testen van conflict-serialiseerbaarheid: d.m.v. "precedence graph" graaf die volgorde van transacties aanduidt knopen = transacties, gerichte bogen = "komt voor"

41 schrijf(X)  lees(X) lees(X)  schrijf(X) schrijf(X)  schrijf(X) ij Testen van conflict-serialiseerbaarheid 1.maak voor elke transactie T i een knoop 2.maak een boog van T i naar T j a.s.a. –T j voert een read_item(X) uit na een write_item(X) van T i –of T j voert een write_item(X) uit na een read_item(X) van T i –of T j voert een write_item(X) uit na een write_item(X) van T i 3.het rooster is serialiseerbaar a.s.a. de graaf geen cycli bevat Equivalent serieel rooster S' te bekomen door topologisch sorteren –als er een boog ( T i,T j ) bestaat moet T i voor T j komen

42 Voorbeeld (1)

43 Voorbeeld (2)

44 Nog een voorbeeld (1)

45 Nog een voorbeeld (2)

46 (roooster E op p. 44) (roooster F op p. 45) Nog een voorbeeld (3)

47 View-equivalentie een andere, minder restrictieve definitie van equivalente roosters: –Roosters S 1 en S 2 zijn view equivalent als voor elke read_item(X) in T i in S 1 geldt: –de laatste write_item(X) voor die read_item(X) moet in beide roosters dezelfde write_item van dezelfde transactie T j zijn voor elke X waarvoor een write_item(X) voorkomt: –de laatste write_item(X) moet dezelfde write_item van dezelfde transactie T k zijn in beide roosters m.a.w.: –elke leesopdracht in S 1 leest (ziet) dezelfde waarde als overeenkomstige leesopdracht in S 2 –laatst geschreven waarde voor een item is dezelfde in beide roosters –een rooster is view serialiseerbaar als het view-equivalent is met een serieel rooster

48 Verschil tussen view-equivalentie en conflict-equivalentie? zijn allebei hetzelfde indien “constrained write” aanname geldt –CWA: aan elke write_item(X) gaat een read_item(X) vooraf, en de geschreven waarde hangt enkel af van de gelezen waarde bij “unconstrained write” aanname is view-equivalentie minder restrictief dan conflict-equivalentie maar: testen van view-equivalentie is NP-compleet T1 T2 T3 read (X) write(X) commit “blinde” aanpassingen: er gaat geen lezen van X aan vooraf dit rooster is view-serialiseerbaar, want view equivalent met serieel rooster T1 T2 T3 maar het is niet conflict-serialiseerbaar

49 _ T1 T2 T3____ X := a schrijf(X) X := b schrijf(X) lees(X) X := a schrijf(X) X := c schrijf(X) verplaatsing behoudt view-equivalentie (T2 leest waarde van X geschreven door T3, laatste geschreven waarde van X is geschreven door T3 ) maar niet conflict-equivalentie Voorbeeld van view-equivalente maar niet conflict-equivalente roosters

50 In volgorde van restrictiefheid: serieel – conflict-serialiseerbar – view-serialiseerbar in volgorde van restrictiefheid: serieel meest restrictief conflict-serialiseerbaar view-serialiseerbaar minst restrictief –minder restrictief betekent: flexibeler qua concurrentiemogelijkheden moeilijker te testen of rooster serialiseerbaar is

51 Testen of verzekeren van serialiseerbarheid Problemen met testen van serialiseerbaarheid: interleaving van operaties wordt bepaald door het besturingssysteem, niet vooraf te voorspellen transacties worden continu aangeboden –begin en einde van roosters moeilijk te voorspellen Indien rooster niet serialiseerbaar blijkt: –herstel nodig  duur om deze problemen te vermijden: test niet op serialiseerbaarheid gebruik bij opstellen van transacties regels (protocols) om serialiseerbaarheid te verzekeren  volgende les

52 Agenda Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL

53 SQL biedt mogelijkheid om transacties te definiëren uitvoering van één query is gegarandeerd atomair transacties bestaande uit meerdere SQL-queries: –gebruiker bepaalt eigenschappen van transactie: toegangsmodus: –read-write of read-only diagnoseruimte –de grootte geeft aan hoeveel foutmeldingen opgeslagen kunnen worden –geeft feedback aan de gebruiker over fouten en uitzonderingen opgetreden tijdens de meest recent uitgevoerde SQL opdrachten isolatieniveau: –READ UNCOMMITTED –READ COMMITTED –REPEATEABLE READ –SERIALIZABLEdefault waarde

54 SQL “serializable” (1) "serializable"  onze definities van serialiseerbaar –gebaseerd op vermijden van bepaalde problemen dirty read –gebruik van een "tijdelijke aanpassing”, uitgevoerd door een nog niet gecommitte transactie nonrepeatable read –opnieuw lezen van een waarde kan een ander resultaat geven phantom –een record wordt zichtbaar bij een tweede maal lezen van een tabel bv. T1 begint een scan van een tabel, T2 voegt intussen een rij toe als T1 herbegint ziet het een “phantom” tupel dat eerst niet bestond

55 SQL “serializable” (2)

56 EXEC SQL WHENEVER SQLERROR GOTO UNDO; EXEC SQL SET TRANSACTION READ WRITE DIAGNOSTICS SIZE 5 ISOLATION LEVEL SERIALIZABLE; EXEC SQL INSERT INTO EMPLOYEE (Fname, Lname, Ssn, Dno, Salary) VALUES('Robert', 'Smith', ' ', 2, 35000); EXEC SQL UPDATE EMPLOYEE SET Salary = Salary * 1.1 WHERE Dno = 2; EXEC SQL COMMIT; GOTO THE_END; UNDO: EXEC SQL ROLLBACK; THE_END:...; EXEC SQL WHENEVER SQLERROR GOTO UNDO; EXEC SQL SET TRANSACTION READ WRITE DIAGNOSTICS SIZE 5 ISOLATION LEVEL SERIALIZABLE; EXEC SQL INSERT INTO EMPLOYEE (Fname, Lname, Ssn, Dno, Salary) VALUES('Robert', 'Smith', ' ', 2, 35000); EXEC SQL UPDATE EMPLOYEE SET Salary = Salary * 1.1 WHERE Dno = 2; EXEC SQL COMMIT; GOTO THE_END; UNDO: EXEC SQL ROLLBACK; THE_END:...; Voorbeeld Een nieuwe rij wordt toegevoegd in de tabel EMPLOYEE daarna worden de salarissen van alle werknemers van dept 2 aangepast Indien ergens een fout optreedt, wordt de hele transactie teruggerold.

57 Vooruitblik Inleiding tot concurrentie en herstel Transacties: begrippen Transactieroosters Serialiseren van roosters Transacties in SQL Transacties II: Concurrentie-controle en herstel

58 Bronnen Deze slides zijn gebaseerd op Henk Olivié‘s slides voor Gegevensbanken 2009 en op Elmasri & Navathe, Fundamentals of Database Systems, Addison Wesley / Pearson, 5e editie Alle kopieën zonder bronspecificatie: Elmasri & Navathe, Fundamentals of Database Systems, Addison Wesley / Pearson, 5e editie Verdere figuren: bronnen zie “Powerpoint comments field” Bedankt iedereen!