Introduktion til transaktioner i SQL
En transaktion i SQL, som almindeligvis kaldes betalinger (afsendelse, modtagelse, køb osv.), Men når det kommer til de tekniske felter, er det måden at opdatere den logiske informationsenhed i databasen.
En transaktion er implementeringen af en eller flere ændringer i databasen. Vi kan gruppere flere SQL-forespørgsler og køre på én gang i en transaktion. Alle SQL-forespørgsler ville enten blive udført på én gang, eller alle vil blive rullet tilbage. Det ville kun have to resultater enten succes eller fiasko.
Når transaktionen, når den er begået, ikke kan være en rollback, kan den kun være rollback, hvis transaktionen ikke er begået. MYSQL overfører automatisk ændringerne til databasen, hvis alle forespørgsler udføres med succes. For at udføre ændringerne eksplicit i databasen skal du først deaktivere auto-commit gennem kommandoen -
Syntaks: SET autocommit = 0;
Transaktionens egenskaber
Følgende er de vigtige egenskaber ved transaktionerne, hver transaktion skal følge disse egenskaber
1. Atomicitet
En transaktion skal være atomisk, middelmanipulation skal være afsluttet for en bestemt logisk enhed. Denne egenskab sikrer, at dataændringer finder sted helt ellers rulles transaktionen tilbage.
2. Konsistens
Når transaktionen er afsluttet, vil alle tilgængelige poster være ensartede under hele transaktionen. Denne egenskab sikrer, at databaseegenskab skiftes tilstand efter en vellykket forpligtelse eller ej.
3. Isolering
Isolering henviser til dataforandringer på en bestemt logisk enhed bør ikke påvirke på en anden enhed. Det giver en transaktion mulighed for at udføre uafhængigt.
4. Holdbarhed
Ændringer foretaget under transaktioner skal være permanente i systemet. I tilfælde af en systemfejl sikrer denne egenskab også, at dataændringer finder sted eller ej.
Den ovenfor givne egenskab ved transaktionen er også kendt som ACID-ejendom.
Trin til transaktion
1. Begynd
En transaktion kan forekomme i flere SQL-henrettelser, men alle SQL skal køre på én gang. Hvis en af transaktionerne mislykkes, vil hele transaktionen blive vendt tilbage. Udsagnet om start af transaktionen er “START TRANSACTION”. Begynder forkortelsen til START TRANSACTION.
Syntaks: START TRANSAKTION;
2. Forpligtelse
Forpligter reflekterer permanent ændringerne i databasen. Erklæringen for start af transaktionen er "COMMIT".
Syntaks: COMMIT;
3. Rollback
Rollback bruges til at vende ændringerne tilbage, dvs. posten ændres ikke, den ville være i den forrige tilstand. Erklæringen for start af transaktionen er "ROLLBACK".
Syntaks: ROLLBACK;
4. Savepoint
SAVEPOINT er også en transaktionserklæring. Denne erklæring bruges til at oprette et lagerpunkt i systemet, så ROLLBACK-operationen kan opnå status for gemmepunktet.
5. Slip Savepoint
RELEASE SAVEPOINT er en erklæring, der frigiver det gemte punkt & hukommelse, der forbruges af systemet ved oprettelse af et gemt punkt.
Syntaks: RELEASE SAVEPOINT SP
Bemærkninger - SP er navnet på savepointet, da dette savepoint blev oprettet før transaktionsstart.
6. Indstil transaktion
Kommandoen SET TRANSACTION bruges til at specificere transaktionsattributten, såsom den givne transaktion er en read-only eller read-write session.
Syntaks : SET TRANSACTION (LÆSKRIV | KUN LÆS);
Transaktionen bruges til at udføre de komplekse ændringer i databasen. Det bruges hovedsageligt i bankrelaterede informationsændringer til en relationel database.
Transaktionen understøttes af MYSQL-motor InnoDB. Som standard forbliver auto-commit aktiveret, det er derfor, når enhver SQL-eksekvering, efter at eksekveringsforpligtelser automatisk finder sted.
Transaktioner ved hjælp af SQL
Eksempel 1
Banktransaktion: En konto debiteret for 50000 beløb fra person En sparekonto og indsendte dette beløb til A.
Start transaktion: Denne starttransaktion vil konvertere alle SQL-forespørgsler til en enkelt transaktionsenhed.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Denne SQL-forespørgsel trækker beløbet fra den eksisterende kontosaldo.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Denne SQL-forespørgsel tilføjer beløbet til brugerlånekontoen.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Denne SQL-forespørgsel indsætter en ny post i transaktionsdetaljer-tabellen, denne tabel indeholder detaljerne om alle brugerens transaktioner. Hvis alle forespørgsler udføres med succes, skal COMMIT-kommandoen udføres, da ændringer skal gemmes permanent i databasen.
Forpligtelse: Denne forpligtelseserklæring gemmer ændringer, der påberåbes af en transaktion til databasen. Hvis en af transaktionerne mislykkes under udførelsen, skal ROLLBACK-kommandoen udføres for at vende den komplette transaktion tilbage
Rollback: Rollback finder sted, når en forespørgsel mislykkes under udførelsen.
Eksempel 2
Beholdningstransaktion: I den givne varetabel er 6 artikler tilgængelige.
Udførelse af følgende START TRANSACTION-sætning for at starte transaktionen.
Kør nu kommandoen SET AUTOCOMMIT = 0 ; for at deaktivere auto-commit
Udfør nu følgende erklæring for at fjerne posten fra varetabellen
Nu tilgængelig post i tabellen er 4 dvs. poster, der er midlertidigt fjernet fra tabelelementerne
Nu udfører kommandoen ROLLBACK for at vende ændringerne tilbage, den slettede post ville være tilgængelig i tabelelementerne som tidligere, før transaktionen startes
Igen, hvis du anvender den samme sletteoperation, så vil COMMIT-operation, efter at den ændres, gemmes permanent i databasen
Nu kan vi se, at efter ROLLBACK-kommandoen stadig var posten i en ny tilstand, betyder det, at når COMMIT-operationen er udført, kan ændringer ikke vendes, fordi den permanent foretager ændringer i databasen;
Fordele ved at bruge transaktion i SQL
a) Brug af transaktion forbedrer ydeevnen , når indsættelse af 1000 poster ved hjælp af transaktioner i så fald det ville tage mindre tid end normal indsættelse. Som ved normal transaktion vil hver gang COMMIT finde sted efter hver udførelse af forespørgsel og det vil øge udførelsestiden hver gang, mens der i transaktion ikke er nødvendigt at udføre COMMIT-erklæring efter hver SQL-forespørgsel. COMMIT i slutningen vil afspejle alle ændringer i databasen permanent på én gang. Også hvis du bruger transaktion ville det være meget lettere at vende tilbage til ændringerne end den normale transaktion. ROLLBACK vender tilbage til alle ændringer på én gang og holder systemet i den forrige tilstand.
b) Transaktionen sikrer dataintegritet i den relationelle database. De fleste af databasen bruger flere tabeller til at vedligeholde dataene, og mens der foretages opdateringer, kan der være ændringer i de flere tabeller på det tidspunkt, hvis nogen af SQL-forespørgsler mislykkes, vil transaktionen holde dataene uændrede.
Konklusion
Brug af transaktioner er en bedste praksis i informationsopdatering for en logisk enhed i en relationsdatabase. For transaktionsimplementering skal databasemotor understøtte transaktionen ligesom InnoDB-motor. Transaktionen, som en enhed af SQL-sætninger, kan vendes på én gang ved hjælp af en enkelt ROLLBACK-sætning. Transaktion sikrer dataintegriteten og forbedrer databasens ydeevne.
Anbefalede artikler
Dette er en guide til Transaktioner i SQL. Her diskuterer vi introduktion, egenskaber, trin, eksempler på transaktioner i SQL sammen med fordelene ved at bruge transaktion i SQL.
- Hvad er SQL
- SQL-styringsværktøjer
- SQL Views
- Typer af sammenføjninger i SQL Server
- Top 6 typer sammenføjninger i MySQL med eksempler