Bevezetés az SQL tranzakciókba
Az SQL-ben végzett tranzakció, amelyet általában fizetések teljesítésének (küldés, fogadás, vásárlás stb.) Neveznek, de amikor a műszaki mezőkre vonatkozik, akkor ez az út az adatbázis logikai egységének frissítésére.
A tranzakció egy vagy több módosítás végrehajtása az adatbázisban. Csoportosíthatunk több SQL lekérdezést és futtathatunk egyszerre egy tranzakciót. Az összes SQL lekérdezés vagy egyszerre hajtódik végre, vagy az összes visszakerül. Ennek mindössze két eredménye lenne, akár siker, akár kudarc.
Az egyszer lekötött tranzakció nem lehet visszalépés, csak akkor lehet visszavonás, ha a tranzakció nem történt meg. A MYSQL automatikusan végrehajtja a változtatásokat az adatbázisban, ha az összes lekérdezés sikeresen végrehajtódik. A változások kifejezett átvételéhez az adatbázisban először le kell tiltania az automatikus végrehajtást a paranccsal -
Szintaxis: SET automatikus átvitel = 0;
A tranzakció tulajdonságai
Az alábbiakban bemutatjuk a tranzakciók fontos tulajdonságait, minden tranzakciónak meg kell felelnie ezeknek a tulajdonságoknak
1. Atomicitás
A tranzakciónak atomnak kell lennie, az adatkezelést az adott logikai egységnél be kell fejezni. Ez a tulajdonság biztosítja, hogy az adatok megváltozása teljesen megtörténjen, ellenkező esetben visszatekerve a tranzakciót.
2. Konzisztencia
Amint a tranzakció befejeződik, az összes elérhető rekord konzisztens lesz a tranzakció során. Ez a tulajdonság biztosítja, hogy az adatbázis tulajdonsága váltott állapotban legyen a sikeres végrehajtás vagy sem.
3. Izolálás
Az elkülönítés olyan adatváltozásokra vonatkozik, amelyek egy bizonyos logikai egységnél nem befolyásolhatják a másik egységet. Ez lehetővé teszi egy tranzakció független végrehajtását.
4. Tartósság
A tranzakciók során végrehajtott változásoknak állandóaknak kell lenniük a rendszerben. Rendszerhiba esetén ez a tulajdonság azt is biztosítja, hogy az adatok megváltoznak-e vagy sem.
A tranzakció fent megadott tulajdonsága ACID tulajdonságként is ismert.
A tranzakció lépései
1. Kezdje
Tranzakciók előfordulhatnak több SQL végrehajtáskor, de az összes SQL-nek egyszerre kell futnia. Ha a tranzakciók bármelyike kudarcot vall, akkor a teljes tranzakció visszaáll. A tranzakció indításának nyilatkozata a „TRANSACTION START”.
Szintaxis: TRANSAKCIÓ indítása;
2. Vállaljon
A kötelezettségvállalások folyamatosan tükrözik az adatbázis változásait. A tranzakció indításának nyilatkozata „COMMIT”.
Szintaxis: COMMIT;
3. Visszalépés
A visszagörgetést a változások visszavonására használják, azaz a rekord nem változik, az előző állapotban lenne. A tranzakció indításának nyilatkozata a „ROLLBACK”.
Szintaxis: ROLLBACK;
4. Savepoint
A SAVEPOINT tranzakciók is. Ez az állítás tárolópont létrehozására szolgált a rendszerben annak érdekében, hogy a ROLLBACK művelet elérje a mentési pont állapotát.
5. Engedje el a Savepoint elemet
A RELEASE SAVEPOINT egy nyilatkozat a mentési pont és a rendszer által a mentési pont létrehozásához felhasznált memória felszabadításához.
Szintaxis: RELEASE SAVEPOINT SP
Megjegyzések - Az SP a mentési pont neve, amikor ezt a mentési pontot a tranzakció kezdete előtt hozták létre.
6. Állítsa be az Tranzakciót
A SET TRANSACTION parancs a tranzakció attribútumának meghatározására szolgál, például az adott tranzakció csak írásos vagy írásos munkamenet.
Szintaxis : BEÁLLÍTOTT tranzakció (READ-WRITE | CSAK OLVASSA);
A tranzakció az adatbázis komplex változásainak végrehajtására szolgál. Elsősorban a bankokkal kapcsolatos információs relációkat tartalmazó adatbázisokká változtatja.
A tranzakciót a MYSQL motor, az InnoDB támogatja. Alapértelmezés szerint az automatikus átváltás engedélyezve van, ezért minden SQL automatikusan végrehajtásra kerül a végrehajtás után.
Tranzakciók SQL használatával
1. példa
Banki tranzakció: Az a számla, amelyet 50000 összeget terheltek meg egy személytől megtakarítási számlától, és ezt az összeget benyújtotta az A hitelszámlájához.
Tranzakció indítása: Ez a kezdő tranzakció az SQL lekérdezéseket egyetlen tranzakciós egységgé konvertálja.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Ez az SQL lekérdezés levonja az összeget a meglévő számlaegyenlegből.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Ez az SQL lekérdezés hozzáadja az összeget a felhasználói kölcsön számlához.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Ez az SQL lekérdezés új rekordot illeszt be a tranzakció részleteinek táblájába, ez a táblázat a felhasználók összes tranzakciójának részleteit tartalmazza. Ha az összes lekérdezés sikeresen végrehajtódott, akkor a COMMIT parancsot végre kell hajtani, mivel a változásokat véglegesen tárolni kell az adatbázisban.
Kötelezettségvállalás: Ez a kötelezettségvállalási nyilatkozat elmenti a tranzakció által hivatkozott változásokat az adatbázisba. Ha a tranzakciók bármelyike meghiúsul a végrehajtás során, akkor a ROLLBACK parancsot végre kell hajtani a teljes tranzakció visszaállításához
Visszalépés: A visszaváltásra akkor kerül sor, ha a lekérdezés sikertelen a végrehajtás során.
2. példa
Készlet-tranzakció: Az adott Táblázatban 6 elem érhető el.
A tranzakció indításához a következő START TRANSACTION utasítást hajtjuk végre.
Most futtassa a SET AUTOCOMMIT = 0 parancsot ; az automatikus átváltás letiltásához
Most végrehajtom a következő nyilatkozatot, hogy eltávolítsuk a rekordot az elemtáblából
A táblázatban jelenleg elérhető rekord 4, azaz az asztali tételektől ideiglenesen eltávolított rekordok
Most a ROLLBACK parancsot hajtjuk végre a változtatások visszavonása érdekében, a törölt rekord a táblázat elemeiben elérhető lesz, mint az előzőleg a tranzakció indítása előtt.
Ha ugyanazt a törlési műveletet alkalmazza, akkor a COMMIT műveletet a változtatások után véglegesen elmenti az adatbázis
Most láthatjuk, hogy a ROLLBACK parancs után még a rekord új állapotban volt, vagyis a COMMIT művelet végrehajtott változtatásait nem lehet visszaállítani, mert véglegesen változtatásokat hajt végre az adatbázisban;
A Transaction SQL alkalmazásának előnyei
a) A Tranzakció használata javítja a teljesítményt , ha 1000 rekord beillesztése tranzakciók segítségével, ebben az esetben az igénybe vett idő kevesebb lenne, mint a normál beillesztés. Mint a szokásos tranzakciókban, minden alkalommal, amikor a COMMIT minden lekérdezés végrehajtása után megtörténik, minden alkalommal meghosszabbítja a végrehajtás idejét, miközben tranzakciók során nem kell a COMMIT utasítást végrehajtani minden SQL lekérdezés után. A végén a COMMIT folyamatosan tükrözi az adatbázis minden változását. Ha tranzakciót is használ, akkor a változások visszaállítása sokkal könnyebb lenne, mint a normál tranzakciónál. A ROLLBACK visszaállítja az összes változást egyszerre, és a rendszert az előző állapotban tartja.
b) A tranzakció biztosítja az adatok integritását a relációs adatbázisban. Az adatbázis nagy része több táblát használ az adatok karbantartására, és a frissítések végrehajtása során változások lehetnek a több táblázatban abban az időben, ha az SQL lekérdezések bármelyike meghiúsul, akkor a tranzakció megtartja az adatokat változatlanul.
Következtetés
A tranzakciók használata a relációs adatbázis logikai egységeinek információfrissítésének legjobb gyakorlata. A tranzakciók megvalósításához az adatbázis motorjának támogatnia kell a tranzakciót, mint például az InnoDB motor. A tranzakció, mint SQL utasítások egysége, egyszerre visszaállítható egyetlen ROLLBACK utasítás használatával. A tranzakció biztosítja az adatok integritását és javítja az adatbázis teljesítményét.
Ajánlott cikkek
Ez egy útmutató az SQL tranzakciókhoz. Itt tárgyaljuk az SQL tranzakciók bevezetését, tulajdonságait, lépéseit, példáit, valamint az SQL tranzakciók használatának előnyeit.
- Mi az SQL?
- SQL felügyeleti eszközök
- SQL nézetek
- Csatlakozás típusai az SQL Server-ben
- A MySQL 6 legfontosabb csatlakozási típusa példákkal