Introduktion till transaktioner i SQL
En transaktion i SQL allmänt känd som betalning (skicka, ta emot, köpa osv) men när det gäller de tekniska fälten är det sättet att uppdatera den logiska informationsenheten i databasen.
En transaktion är implementeringen av en eller flera förändringar i databasen. Vi kan gruppera flera SQL-frågor och köra samtidigt i en transaktion. Alla SQL-frågor skulle antingen köras på en gång eller så rullas alla tillbaka. Det skulle bara ha två resultat antingen framgång eller misslyckande.
Transaktionen när en gång har begåtts kan inte vara en återuppspelning, den kan endast vara återuppspelning om transaktionen inte har genomförts. MYSQL begår automatiskt ändringarna i databasen om alla frågor genomförs framgångsrikt. För att uttryckligen begå ändringarna i databasen måste du först inaktivera auto-commit genom kommandot -
Syntax: SET autocommit = 0;
Transaktionens egenskaper
Följande är de viktigaste egenskaperna för transaktionerna, varje transaktion måste följa dessa egenskaper
1. Atomicitet
En transaktion måste vara atomisk, genomsnittlig datamanipulation bör slutföras för en viss logisk enhet. Den här egenskapen säkerställer att dataförändringar äger rum helt annars annars återför transaktionen.
2. Konsekvens
När transaktionen är klar kommer alla tillgängliga poster att vara konsekventa hela transaktionen. Den här egenskapen säkerställer att databasegenskapen har bytt tillstånd efter ett framgångsrikt engagemang eller inte.
3. Isolering
Isolering avser dataförändringar vid en viss logisk enhet bör inte påverka på en annan enhet. Det gör att en transaktion kan utföras oberoende.
4. Hållbarhet
Ändringar som gjorts under transaktioner bör vara permanenta i systemet. Vid systemfel säkerställer den här egenskapen också att dataförändringar sker eller inte.
Den ovan angivna egenskapen för transaktionen kallas också ACID-egendom.
Steg för transaktion
1. Börja
En transaktion kan inträffa i flera SQL-exekveringar men alla SQL bör köras samtidigt. Om någon av transaktionerna misslyckas kommer hela transaktionen att återvändas. Uttalandet för att starta transaktionen är "START TRANSACTION". Begynnar förkortningen för START TRANSACTION.
Syntax: START TRANSACTION;
2. Åta sig
Åtaganden återspeglar permanent ändringarna i databasen. Uttalandet för att starta transaktionen är ”COMMIT”.
Syntax: COMMIT;
3. Återuppspelning
Rollback används för att återställa ändringarna, dvs posten kommer inte att ändras, det skulle vara i föregående tillstånd. Uttalandet för att starta transaktionen är ”ROLLBACK”.
Syntax: ROLLBACK;
4. Savepoint
SAVEPOINT är också ett transaktionsdeklaration. Detta uttalande användes för att skapa en lagringspunkt i systemet så att ROLLBACK-operationen kan uppnå sparpunktens tillstånd.
5. Släpp Savepoint
RELEASE SAVEPOINT är ett uttalande för att frigöra sparpunkten och minnet som konsumeras av systemet för att skapa en sparpunkt.
Syntax: RELEASE SAVEPOINT SP
Anteckningar - SP är namnet på sparpunkten när denna sparpunkt skapades innan transaktionsstart.
6. Ställ in transaktion
Kommandot SET TRANSACTION används för att specificera transaktionsattributet, till exempel att den givna transaktionen är en skrivskyddad eller lässkrivsession.
Syntax : SET TRANSACTION (LÄS-SKRIFT | ENDAST LÄS);
Transaktionen används för att utföra de komplexa förändringarna i databasen. Den används främst i bankrelaterad informationsförändring i en relationsdatabas.
Transaktionen stöds av MYSQL-motorn InnoDB. Som standard förblir auto-commit aktiverat, det är därför som någon SQL körs efter körning automatiskt äger rum.
Transaktioner med SQL
Exempel 1
Banktransaktion: Ett konto som debiteras för 50000 belopp från person Ett sparkonto och skickade detta belopp till lånekontot för A.
Starta transaktion: Denna starttransaktion konverterar alla SQL-frågor till en enda transaktionsenhet.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Denna SQL-fråga drar beloppet från det befintliga kontosaldot.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Denna SQL-fråga lägger till beloppet till användarkreditkontot.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Denna SQL-fråga infogar en ny post i transaktionsdetaljtabellen, denna tabell innehåller detaljerna för alla transaktioner för användarna. Om all fråga genomförts framgångsrikt måste COMMIT-kommandot köras eftersom ändringar måste lagras permanent i databasen.
Åtagande: Detta åtagandeuttalande sparar ändringar som åberopas av en transaktion till databasen. Om någon av transaktionerna misslyckas under exekveringen bör ROLLBACK-kommandot utföras för att återställa hela transaktionen
Återuppspelning: Återuppspelning sker när någon fråga misslyckas under körning.
Exempel 2
Lagertransaktion: I den angivna artikeltabellen finns 6 artiklar tillgängliga.
Utför följande START TRANSACTION-uttalande för att starta transaktionen.
Kör nu kommandot SET AUTOCOMMIT = 0 ; för att inaktivera auto-commit
Utför nu följande uttalande för att ta bort posten från objekttabellen
Nu Tillgänglig post i tabellen är 4 dvs poster tillfälliga tas bort från tabellobjekten
Nu exekverar kommandot ROLLBACK för att återställa ändringarna, den raderade posten skulle vara tillgänglig i tabellposter som tidigare innan transaktionen startades
Återigen om du använder samma raderingsoperation så kommer COMMIT-operationen efter att den ändras att sparas permanent i databasen
Nu kan vi se att efter ROLLBACK-kommandot fortfarande var posten i ett nytt tillstånd, betyder det att en gång COMMIT-operation som utförts inte kan ändras eftersom den permanent gör ändringar i databasen;
Fördelar med att använda transaktion i SQL
a) Att använda transaktion förbättrar prestandan , när du sätter in 1000 poster med transaktioner i så fall skulle det ta mindre tid än normalt införande. Precis som vid normal transaktion, varje gång COMMIT skulle äga rum efter varje frågeställning och det skulle öka exekveringstiden varje gång i transaktionen inget behov av att utföra COMMIT-uttalande efter varje SQL-fråga. COMMIT i slutet skulle återspegla alla ändringar i databasen permanent på en gång. Om du använder transaktion skulle det också vara mycket lättare att använda omställningen än den vanliga transaktionen. ROLLBACK kommer att återställa alla ändringar samtidigt och hålla systemet i föregående tillstånd.
b) Transaktionen säkerställer dataintegritet i den relationsdatabas. De flesta av databasen använder flera tabeller för att underhålla data och medan uppdateringar kan det ha ändringar i flera tabeller vid den tiden om någon av SQL-frågorna misslyckas skulle transaktionen hålla data oförändrade.
Slutsats
Att använda transaktioner är en bästa praxis i informationsuppdatering för en logisk enhet i en relationsdatabas. För transaktionsimplementering bör databasmotorn stödja transaktionen som InnoDB-motor. Transaktionen, som en enhet av SQL-uttalanden, kan återställas samtidigt med ett enda ROLLBACK-uttalande. Transaktion säkerställer dataintegriteten och förbättrar databasens prestanda.
Rekommenderade artiklar
Detta är en guide till transaktioner i SQL. Här diskuterar vi introduktion, egenskaper, steg, exempel på transaktioner i SQL tillsammans med fördelarna med att använda transaktion i SQL.
- Vad är SQL
- SQL-hanteringsverktyg
- SQL Views
- Typer av sammanfogningar i SQL Server
- Topp 6 typer av sammanfogningar i MySQL med exempel