Databasteknik 2
Databasteknik 2
T-SQL
Transactions
Triggers
DataHandling
DataExport
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
En transaktion är i grund och botten en teknik för att kunna
Hantera flera SQL kommandon som en grupp istället
för enskilda kommandon.
En transaktion exekveras i
grupp och resulterar i att alla
Kommandon genomförs eller
att alla kommandon ångras.
Transaction
Insert…
Update…
Delete….
Rollback
Commit
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
I de fall där flera SQL kommandon måste
köras för att utföra ett önskat resultat
används transaktioner för att säkerställa
att ingen halvfärdig data skrivs till
databasen.
Transaktion start
INSERT INTO Kund ……..
INSERT INTO Order ……..
INSERT INTO Artiklar_i_order ……
INSERT INTO Artiklar_i_order ……
INSERT INTO Artiklar_i_order ……
INSERT INTO Artiklar_i_order ……
INSERT INTO Artiklar_i_order ……
INSERT INTO Artiklar_i_order ……
Transaktion Commit eller Rollback
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tabeller
Kund
Order
Artiklar_i_order
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
En transaktion påbörjas med ”BEGIN TRANSACTION” och
avslutas med ”COMMIT TRANSACTION” eller ”ROLLBACK TRANSACTION”
Efter varje SQL kommando kan vi kontrollera om ett fel uppstod och iså fall
anropa ROLLBACK för att avbryta Transaktionen och ångra alla förändringar som
transaktionen skulle medfört.
Passeras samtliga SQL kommandon utan Errors anropas COMMIT TRANSACTION
för att verkställa ändringarna.
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
Vad händer under en transaktion
Alla modifieringar som sker under en transaktion lagras i
transaktionsloggen. Den av transaktionen nya/uppdaterade datan lagras i ett
buffertminne till dess att en commit eller rollback inträffar.
Transaction log
Buffertminne
Data som modifieras
läses upp om det krävs
sqlkommando
Databas
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
Vad händer under en transaktion
När en Commit inträffar skrivs inte datan till disk direkt utan
I transaktionsloggen sätts bara en markör att datan är ”godkännd”. Utförs en rollback
återställs förändringarna på berörda pages i buffertminnet.
Transaktionslog
Begin Transaction
…
..
..
Commit Transaction
Begin….
..
..
Rollback…
Begin…..
..
..
Commit
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
SQL Server skriver med jämna intervall för att
begränsa mängden data i minnet men även för
Att inte göra IO anrop till disk varje gång en
en förändring sker.
Dessa nerskrivningar markeras i transaktionsloggen
Checkpoints. På så sätt vet SQL server vilka
transakioner som är skrivna till disk.
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
Samtidighet
Ett stort problem med databaser och transaktioner är samtidighet. D.v.s. vad händer om
flera transaktioner försöker bearbeta samma data samtidigt.
Update…….
guid
summa
7
12’931
…..
Update…….
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
Samtidighet
En transaktion är beroende av att ingen annan ändrar data under tiden en annan
transaktion ändrar datan. Då värden inte blir beständiga förrän en Commit eller
rollback inträffat kan det definitivt uppstå problem när flera kockar rör om i grytan
samtidigt.
Lösningen på problemet är att en transaktion får låsa de poster den bearbetar.
Det finns olika lås som transaktionen kan sätta på de poster som används.
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]
Databasteknik2
Transactions
Ex
Begin Transaction
BEGIN TRY
INSERT INTO ……..
INSERT INTO …….
INSERT INTO …….
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
Andreas Carlsson
Barvefjord och Carlsson Datakraft AB
Svarkråkev. 48
33142 Värnamo
Tel: 0370-18100
Epost: [email protected]