A Transaction Control Language (TCL) az SQL olyan részhalmaza, amelyet az adatbázis-tranzakciók kezelésére használnak. A TCL szabályozza a tranzakciók folyamatát, és biztosítja, hogy az adatbázis módosításai megfelelően el legyenek mentve vagy vissza legyenek vonva.
A tranzakció olyan műveleti egység, amely vagy teljes egészében végrehajtódik, vagy egyáltalán nem hajtódik végre. A TCL-parancsok lehetővé teszik a tranzakciók elindítását, véglegesítését és visszagörgetését.
Mit jelent a TCL rövidítés?
A TCL teljes neve SQL-ben Transaction Control Language, magyarul tranzakcióvezérlő nyelv. A TCL az SQL, vagyis a relációs adatbázisokkal való kommunikáció szabványos nyelvének fontos része.
A TCL-parancsokat elsősorban a DML, vagyis a Data Manipulation Language utasításai által végrehajtott módosítások kezelésére használják. Ilyen DML-művelet például az INSERT, az UPDATE és a DELETE.
A TCL lehetővé teszi az utasítások logikai tranzakciókba rendezését. Segítségével szabályozható, hogy a módosítások mikor váljanak véglegessé, illetve mikor kell őket visszavonni.
A tranzakció fogalma
Az adatbázis-tranzakció egymáshoz tartozó műveletek sorozata, amelyet egyetlen logikai egységként kezelünk. A tranzakció eredményeként az adatbázis értéke megváltozik, amikor a benne szereplő műveleteket véglegesítjük.
A tranzakciók használatának célja, hogy az adatbázis konzisztens és megbízható állapotban maradjon. Ha a tranzakció bármelyik része hibásan hajtódik végre, a módosítások visszavonhatók.
A tranzakció általában egy BEGIN TRANSACTION paranccsal indul, majd DML-utasítások hajtódnak végre. Ha minden művelet sikeres, a módosítások a COMMIT paranccsal véglegesíthetők, hiba esetén pedig a ROLLBACK paranccsal visszavonhatók.
A legfontosabb TCL-parancsok
| Parancs | Rendeltetés |
|---|---|
| BEGIN TRANSACTION | Új tranzakció indítása. |
| COMMIT | A tranzakció során végrehajtott módosítások mentése és véglegesítése. |
| ROLLBACK | A tranzakció módosításainak visszavonása. |
| SAVEPOINT | Visszatérési pont létrehozása a tranzakción belül. |
| RELEASE SAVEPOINT | Egy mentési pont eltávolítása a tranzakcióból. |
| SET TRANSACTION | Az aktuális tranzakció jellemzőinek beállítása. |
COMMIT
A COMMIT parancs elmenti az aktuális tranzakció során végrehajtott módosításokat, és lezárja a tranzakciót. A COMMIT végrehajtása után a változtatások véglegessé válnak.
A COMMIT parancsot akkor kell használni, amikor meggyőződtünk arról, hogy a tranzakció valamennyi művelete helyesen hajtódott végre. A COMMIT végrehajtása után a korábbi módosítások általában nem vonhatók vissza ugyanannak a tranzakciónak a ROLLBACK parancsával.
A COMMIT tehát azt jelzi, hogy a tranzakció sikeres, az adatbázisban végrehajtott módosításokat pedig véglegesíteni kell.
ROLLBACK
A ROLLBACK parancs visszavonja az aktuális tranzakcióban végrehajtott módosításokat, és az adatbázist a tranzakció előtti állapotába állítja vissza.
A ROLLBACK akkor használható, ha hiba történt a tranzakció során, vagy ha az adatok nem megfelelő állapotba kerültek. A parancs lezárja a tranzakciót, és a módosítások nem lesznek véglegesek.
A ROLLBACK segítségével a befejezetlen tranzakciók is visszavonhatók például rendszerhiba, áramkimaradás vagy rendszer-összeomlás után.
SAVEPOINT
A SAVEPOINT parancs egy visszatérési pontot hoz létre a tranzakción belül. Erre a pontra később vissza lehet térni anélkül, hogy a teljes tranzakciót vissza kellene vonni.
A SAVEPOINT különösen hosszú tranzakciók esetén hasznos, amikor csak a műveletek egy részét kell visszavonni, miközben a korábbi módosításokat meg szeretnénk tartani.
A SAVEPOINT egy olyan pontot jelöl, amelyhez a tranzakció később visszagörgethető. Ez lehetővé teszi a részleges visszaállítást a teljes tranzakció törlése nélkül.
RELEASE SAVEPOINT
A RELEASE SAVEPOINT parancs eltávolít egy korábban létrehozott mentési pontot a tranzakcióból. Ez akkor használható, ha az adott visszatérési pontra már nincs szükség.
SET TRANSACTION
A SET TRANSACTION parancs az aktuális tranzakció jellemzőit állítja be. Segítségével például a tranzakció izolációs szintje vagy egyéb tulajdonságai határozhatók meg.
A tranzakció meghatározható például csak olvashatóként, illetve beállítható az izolációs szintje, például a SERIALIZABLE érték.
BEGIN TRANSACTION
A BEGIN TRANSACTION parancs új tranzakciót indít. Ez jelöli egy logikai munkafolyamat kezdetét.
A tranzakció elindítása után az INSERT, UPDATE és DELETE utasítások módosíthatják az adatbázis adatait. Ezek a változtatások a COMMIT végrehajtásáig nem feltétlenül válnak véglegessé.
A TCL működése lépésről lépésre
A tranzakció a BEGIN TRANSACTION paranccsal indul.
A tranzakció során DML-utasítások, például INSERT, UPDATE vagy DELETE hajtódnak végre.
Ha a DML-utasítások sikeresek, és az adatok konzisztens állapotban vannak, a módosítások a COMMIT paranccsal menthetők.
Ha hiba történik, vagy az adatok inkonzisztenssé válnak, a módosítások a ROLLBACK paranccsal visszavonhatók.
A tranzakció a COMMIT vagy a ROLLBACK végrehajtásával zárul le.
A tranzakció tehát két alapvető módon zárható le: COMMIT paranccsal, amely véglegesíti a változásokat, vagy ROLLBACK paranccsal, amely visszavonja azokat.

Példa COMMIT és ROLLBACK használatára
Az alábbi példa egy olyan tranzakciót mutat be, amelyben az egyik számláról 500 egységet levonunk, egy másik számlához pedig 500 egységet hozzáadunk.
BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 500 WHERE AccountID = 1;
UPDATE Accounts SET Balance = Balance + 500 WHERE AccountID = 2;
COMMIT;
Ha mindkét UPDATE művelet sikeres, a COMMIT véglegesíti a módosításokat. Ha valami hibásan történik, a tranzakció a ROLLBACK paranccsal visszavonható.
Példa SAVEPOINT használatára
A SAVEPOINT lehetővé teszi, hogy a tranzakció egy meghatározott pontjára térjünk vissza. Az alábbi példa az első UPDATE után mentési pontot hoz létre.
BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 500 WHERE AccountID = 1;
SAVEPOINT after_first_update;
UPDATE Accounts SET Balance = Balance + 500 WHERE AccountID = 2;
ROLLBACK TO SAVEPOINT after_first_update;
COMMIT;
Ha a második UPDATE után hiba történik, a tranzakció visszagörgethető az after_first_update mentési pontra. Ebben az esetben nem feltétlenül kell a teljes tranzakciót visszavonni.
Az automatikus véglegesítés
A SET AUTOCOMMIT paranccsal beállítható az aktuális munkamenet automatikus véglegesítési módja. Ha az autocommit engedélyezve van, minden SQL-utasítás külön tranzakcióként kezelhető, és befejezéskor automatikusan véglegesítődik.
Az automatikus véglegesítés egyszerűsítheti az egyedi műveletek kezelését, de összetett műveletsorozatoknál korlátozhatja a teljes tranzakció feletti ellenőrzést. Több, egymáshoz tartozó DML-utasítás esetén fontos lehet, hogy azok egyetlen logikai egységként legyenek végrehajtva.
Miért fontos a TCL?
Adatkonzisztencia és adatintegritás
A TCL-parancsok biztosítják, hogy az adatbázis adatai konzisztensek és pontosak maradjanak. Ha egy tranzakció során hiba történik, a módosítások visszagörgethetők, így megőrizhető az adatok integritása.
A tranzakciók használata különösen fontos akkor, amikor több, egymástól függő módosítást kell végrehajtani. Ha csak a műveletek egy része sikerülne, az adatbázis hibás vagy részlegesen módosított állapotba kerülhetne.
Atomitás
Az atomitás azt jelenti, hogy a tranzakció összes művelete vagy sikeresen végrehajtódik, vagy hiba esetén valamennyi módosítás vissza lesz vonva. A TCL a COMMIT és a ROLLBACK segítségével támogatja ezt a működést.
Az atomitás biztosítja, hogy a tranzakcióban szereplő utasítások egyetlen munkafolyamatként legyenek kezelve. Ez megakadályozza, hogy egy részben végrehajtott tranzakció maradandó, hibás változásokat hagyjon az adatbázisban.
Konzisztencia
A TCL segít abban, hogy az adatbázis a tranzakció végrehajtása után is konzisztens állapotban maradjon. Ha a tranzakció során hiba lép fel, a módosítások visszavonásával visszaállítható a korábbi konzisztens állapot.
Izoláció
A TCL lehetővé teszi a tranzakciók közötti izoláció szintjének szabályozását. Ez segíthet megakadályozni, hogy az egyidejű tranzakciók zavarják egymás működését.
Az izoláció különösen többfelhasználós környezetben fontos, ahol több felhasználó vagy alkalmazás egyszerre éri el és módosítja ugyanazokat az adatokat.
Tartósság
A tartósság azt jelenti, hogy a tranzakció COMMIT után véglegesített módosításai rendszerhiba esetén is megmaradnak az adatbázisban. Ez biztosítja, hogy a mentett adatok hosszú távon pontosak és megbízhatók legyenek.
A TCL és az ACID-tulajdonságok
A TCL-parancsok hozzájárulnak ahhoz, hogy az adatbázis-módosítások megfeleljenek az ACID-tulajdonságoknak. Az ACID az atomitást, a konzisztenciát, az izolációt és a tartósságot jelenti.
Atomicity - atomitás: a tranzakció vagy teljes egészében sikeres, vagy teljes egészében vissza lesz vonva.
Consistency - konzisztencia: a tranzakció után az adatbázis érvényes és konzisztens állapotban marad.
Isolation - izoláció: az egyidejű tranzakciók nem zavarják meg egymás működését.
Durability - tartósság: a COMMIT után véglegesített módosítások rendszerhiba esetén is megmaradnak.
A TCL szerepe egyidejű adatbázis-hozzáférésnél
Amikor több felhasználó vagy alkalmazás egyszerre olvassa és módosítja ugyanazokat az adatokat, a TCL segít abban, hogy az egyik felhasználó változásai ne ütközzenek a másik felhasználó módosításaival.
A tranzakciókezelés lehetővé teszi több tranzakció egyidejű feldolgozását. Ezt konkurenciavezérlésnek nevezik, és javíthatja az adatbázis teljesítményét.
A TCL használata ugyanakkor holtpontokhoz is vezethet. Holtpont akkor alakulhat ki, amikor két vagy több tranzakció egymás befejezésére vár, ezért egyik sem tud továbbhaladni.
Hibakezelés és helyreállítás
A TCL segíthet az olyan hibák utáni helyreállításban, mint az áramkimaradás vagy a rendszer összeomlása. A befejezetlen tranzakciók visszagörgethetők, az adatbázis pedig visszaállítható egy konzisztens állapotba.
A ROLLBACK az egész aktuális tranzakció módosításait visszavonhatja, míg a SAVEPOINT segítségével csak a tranzakció egy része görgethető vissza. Ez különösen hasznos hosszú vagy összetett műveletsorozatok esetén.
A TCL előnyei
A TCL lehetővé teszi több SQL-utasítás egyetlen tranzakcióba rendezését.
A COMMIT és a ROLLBACK segítségével szabályozható a módosítások véglegesítése és visszavonása.
A tranzakciók támogatják az adatbázis integritásának megőrzését.
A SAVEPOINT részleges visszagörgetést tesz lehetővé.
A TCL segíti az egyidejű tranzakciók kezelését.
A TCL hozzájárul az adatbázis helyreállításához rendszerhiba után.
A tranzakciók fenntartják az adatok konzisztenciáját összetett műveletek esetén is.
A COMMIT után a véglegesített változtatások tartósan megmaradnak az adatbázisban.
A TCL korlátai és hátrányai
Összetettség
A TCL használata összetett lehet azok számára, akik nem ismerik az SQL-t vagy az adatbázis-programozást. A helyes alkalmazáshoz meg kell érteni a tranzakciók működését és az adott adatbázisrendszer TCL-szintaxisát.
Teljesítményterhelés
A tranzakciók kezelése többletfeldolgozást igényelhet az adatbázistól. Ez nagy párhuzamosságú környezetben hatással lehet a teljesítményre.
Holtpontok
A TCL használata időnként holtpontokat eredményezhet. Ilyenkor két vagy több tranzakció egymás befejezésére vár, ami megakadást okoz, és manuális beavatkozást igényelhet.
Korlátozott funkcionalitás
A TCL a tranzakciók kezelésére szolgáló parancsok korlátozott készletét biztosítja, és nem minden rendszerben támogat olyan fejlettebb funkciókat, mint az elosztott tranzakciók vagy a kétfázisú véglegesítés.
Gyakori kérdések a TCL-ről
A Transaction Control Language milyen típusú parancs?
A Transaction Control Language az SQL tranzakcióvezérlő parancsainak csoportja. A TCL a tranzakciók elindítására, módosításainak kezelésére, véglegesítésére és visszavonására szolgál.
Melyik TCL-parancs menti el a végrehajtott munkát?
A COMMIT parancs menti el és véglegesíti az aktuális tranzakció során végrehajtott módosításokat.
Vissza lehet-e görgetni a tranzakciót COMMIT után?
A COMMIT végrehajtása után az aktuális tranzakció módosításai véglegessé válnak, ezért ugyanannak a tranzakciónak a ROLLBACK parancsával általában már nem vonhatók vissza.
Melyik két paranccsal zárható le egy tranzakció?
A tranzakció COMMIT vagy ROLLBACK paranccsal zárható le. A COMMIT véglegesíti a változásokat, a ROLLBACK pedig visszavonja őket.
Melyik utasítás jelöl és ment aktuális tranzakciós pontot?
A SAVEPOINT utasítás egy visszatérési pontot hoz létre az aktuális tranzakción belül. Erre a pontra később vissza lehet görgetni.
Melyik tranzakcióvezérlő utasítás véglegesít minden változtatást?
A COMMIT utasítás véglegesíti az aktuális tranzakció változtatásait.
Mit kezel a Transaction Control Language?
A TCL a DML-utasítások, például az INSERT, UPDATE és DELETE által végrehajtott adatbázis-módosításokat kezeli.
Mikor következhet be tranzakciós esemény?
Tranzakciós esemény akkor történik, amikor egy tranzakció elindul, DML-utasításokat hajt végre, mentési pontot hoz létre, véglegesíti a módosításokat vagy visszavonja azokat.
Fontos megkülönböztetés: TCL SQL-ben és más területeken
A TCL rövidítésnek más jelentései is lehetnek, ezért mindig a szövegkörnyezet alapján kell értelmezni. SQL-ben a TCL jelentése Transaction Control Language.
A TCL rövidítés a Tool Command Language nevű szkriptnyelvre is utalhat. A Tool Command Language magas szintű, általános célú, interpretált nyelv, amelyet automatizálásra, konfigurációkezelésre, tesztautomatizálásra és grafikus felületek fejlesztésére is használnak.
A TCL jelenthet továbbá tereftaloil-kloridot is, amelynek képlete C8H4Cl2O2. Ez egy szerves vegyület, amelyet többek között poliészterek, például polietilén-tereftalát előállításának köztes anyagaként használnak.
A távközlési területen a TCL különböző kifejezések rövidítése lehet, például Transmission Control Language, Test Control Language vagy Telecommunication Control Language.
Az SQL-lel, a COMMIT-tel, a ROLLBACK-kel és a SAVEPOINT-tal kapcsolatos kérdésekben azonban a TCL jelentése Transaction Control Language.
SQL tranzakciók megértése 5 percben
tags: #transaction #control #language #jelentes