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]