90 likes | 207 Views
Databasteknik 2. Databasteknik 2 T-SQL Transactions Triggers DataHandling DataExport. 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
E N D
Databasteknik 2 Databasteknik 2 T-SQL Transactions Triggers DataHandling DataExport
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
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. Tabeller Kund 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 Order Artiklar_i_order
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.
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. Buffertminne Transaction log Data som modifieras läses upp om det krävs sqlkommando Databas
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 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.
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……. Update…….
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.
Databasteknik2 Transactions Ex Begin Transaction BEGIN TRY INSERT INTO …….. INSERT INTO……. INSERT INTO……. COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH