Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Databasteknik 2 T-SQL Transactions Triggers DataHandling DataExport
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Transactions Databasteknik2 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…. Commit Rollback
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Transactions Databasteknik2 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. Kund Order Transaktion start INSERT INTO Kund …….. INSERT INTO Order …….. INSERT INTO Artiklar_i_order …… Transaktion Commit eller Rollback Artiklar_i_order Tabeller
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Transactions Databasteknik2 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 Värnamo Tel: Epost: Transactions Databasteknik2 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 Databas Buffertminne sqlkommando Data som modifieras läses upp om det krävs
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Transactions Databasteknik2 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. Begin Transaction ….. Commit Transaction Begin…... Rollback… Begin….... Commit Transaktionslog 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.
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Transactions Databasteknik2 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. guidsumma….. 712’931 Update…….
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Transactions Databasteknik2 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 Värnamo Tel: Epost: Transactions Databasteknik2 Ex Begin Transaction BEGIN TRY INSERT INTO …….. INSERT INTO ……. COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH