Tranzakciókezelés adatbázis-kezelő rendszerekben: állapotok, típusok és ACID
⚡ Okos összefoglaló
Az adatbázis-tranzakciókezelés egy vagy több adatbázis-műveletet egyetlen logikai egységként kezel, amely az adatbázist egyik konzisztens állapotból a másikba mozgatja. ACID tulajdonságokra, definiált tranzakcióállapotokra és ütemezésekre támaszkodik a párhuzamos hozzáférések helyességének biztosítása érdekében.

Mi az adatbázis-tranzakció?
A Adatbázis-tranzakció egy logikai feldolgozási egység egy adatbázis-kezelő rendszerben, amely egy vagy több adatbázis-hozzáférési műveletet foglal magában. Dióhéjban az adatbázis-tranzakciók bármely vállalkozás valós eseményeit képviselik.
Az adatbázis-kezelő rendszerekben (DBMS) az adatbázis-hozzáférési műveletek kezdő és záró utasításai között végrehajtott összes művelet egyetlen logikai tranzakciónak minősül. A tranzakció során az adatbázis inkonzisztens. Csak a tranzakció véglegesítése után változik meg az állapota egyik konzisztens állapotból a másikba.

Tények az adatbázis-tranzakciókról
- A tranzakció olyan programegység, amelynek végrehajtása megváltoztathatja vagy nem módosíthatja az adatbázis tartalmát.
- A DBMS-ben a tranzakciós koncepció egyetlen egységként kerül végrehajtásra.
- Ha az adatbázisműveletek nem frissítik az adatbázist, hanem csak adatokat kérnek le, akkor ezt a típusú tranzakciót csak olvasható tranzakciónak nevezik.
- Egy sikeres tranzakció az adatbázist egyik KONZISZTENS ÁLLAPOTBÓL a másikba változtathatja.
- A DBMS tranzakcióknak atomiaknak, konzisztenseknek, izoláltaknak és tartósaknak kell lenniük.
- Ha az adatbázis inkonzisztens állapotban volt a tranzakció előtt, akkor a tranzakció után is inkonzisztens állapotban marad.
Miért van szükség párhuzamos működésre a tranzakciókban?
Az adatbázis egy megosztott erőforrás. Számos felhasználó és folyamat használja egyidejűleg. Ilyenek például a banki rendszerek, a vasúti és légi foglalási rendszerek, a tőzsdefigyelés, valamint a szupermarketek készletnyilvántartása és pénztárgépei.
Ha nem kezeli az egyidejű hozzáférést, az olyan problémákat okozhat, mint:
- Hardverhibák és rendszerösszeomlások.
- Ugyanazon tranzakció egyidejű végrehajtása, holtpont, vagy lassú teljesítmény.
Ennek a megosztott hozzáférésnek a szabályozása a feladata párhuzamosság ellenőrzése, amely zárolást és időbélyegeket használ a tranzakciók biztonságos összefonásához. Ezt megelőzően hasznos ismerni a tranzakció állapotait.
A tranzakciók állapotai
Az alábbiakban felsoroljuk a DBMS-ben a tranzakciókoncepció különféle állapotait:
| Állami | Leírás |
|---|---|
| Aktív állapot | Egy tranzakció aktív állapotba kerül, amikor a végrehajtási folyamat megkezdődik. Ebben az állapotban olvasási vagy írási műveletek hajthatók végre. |
| Részben elkötelezett | Egy tranzakció a tranzakció befejezése után részben véglegesített állapotba kerül. |
| Elkötelezett állam | Amikor a tranzakció eléri a véglegesített állapotot, a végrehajtása sikeresen befejeződött, és minden módosítás véglegesen rögzítésre kerül az adatbázisban. |
| Sikertelen állapot | Egy tranzakciót sikertelennek tekintünk, ha bármelyik ellenőrzés sikertelen, vagy ha a tranzakció aktív állapotban megszakad. |
| Megszűnt állapot | Egy tranzakció állapota akkor éri el a terminált állapotot, amikor a tranzakció elhagyja a rendszert, és nem indítható újra. |
Tanulmányozzunk egy állapotátmenet diagram amely rávilágít arra, hogy egy tranzakció hogyan mozog a különböző állapotok között.
- Amint egy tranzakció végrehajtása megkezdődik, aktívvá válik. READ vagy WRITE műveletet hajthat végre.
- Miután az OLVASÁS és ÍRÁS műveletek befejeződtek, a tranzakció eléri a részben véglegesített állapotot.
- Ezután néhány helyreállítási protokollnak biztosítania kell, hogy rendszerhiba esetén ne legyen lehetetlen a tranzakció változásainak végleges rögzítése. Ha ez az ellenőrzés sikeres, a tranzakció véglegesítésre kerül, és a véglegesített állapotba kerül.
- Ha az ellenőrzés sikertelen, a tranzakció sikertelen állapotba kerül.
- Ha a tranzakció aktív állapotban megszakad, akkor sikertelen állapotba kerül. A tranzakciót vissza kell görgetni, hogy visszavonjuk az írási műveletek adatbázisra gyakorolt hatását.
- A befejezett állapot a rendszerből kilépő tranzakcióra vonatkozik.
Mik azok az ACID tulajdonságok?
SAV Tulajdonságok az adatbázis integritásának megőrzésére szolgálnak a tranzakciófeldolgozás során. Az ACID a DBMS-ben a következőt jelenti: Atomicitás, Ckitartás, Imegnyugvást, és Dhasználhatóság.
- Atomicity: A tranzakció egyetlen műveleti egység. Vagy teljesen végrehajtja, vagy egyáltalán nem hajtja végre. Nem lehet részleges végrehajtás.
- Következetesség: A tranzakció végrehajtása után az egyik konzisztens állapotból a másikba kell lépnie.
- Szigetelés: Egy tranzakciót a többi tranzakciótól elkülönítve kell végrehajtani. Egyidejű végrehajtás során az egyidejűleg végrehajtott tranzakciók közbenső eredményeit nem szabad egymás számára elérhetővé tenni.
- Tartósság: Egy tranzakció sikeres befejezése után az adatbázisban végrehajtott módosításoknak meg kell maradniuk, még rendszerhibák esetén is.
ACID tulajdonság DBMS-ben példával
Az alábbiakban egy példa látható az ACID tulajdonságra a DBMS-ben:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Az 1. tranzakció 50 USD-t utal át az X számláról az Y számlára.
A 2. tranzakció minden számlán 10%-os kamatfizetést ír jóvá.
Ha mindkét tranzakciót együtt küldik be, nincs garancia arra, hogy az 1. tranzakció a 2. tranzakció előtt végrehajtódik, vagy fordítva. A sorrendtől függetlenül az eredménynek olyannak kell lennie, mintha a tranzakciók sorozatban, egymás után történnének.
A tranzakciók típusai
Alkalmazási területek alapján:
- Nem elosztott vs. elosztott.
- Kompenzáló tranzakciók.
- Tranzakció időzítése.
- Online vs. kötegelt.
A műveletek alapján:
- Kétlépéses.
- Korlátozott.
- Cselekvési modell.
Szerkezet alapján:
- Lapos vagy egyszerű tranzakciók: egy kezdő és egy befejező művelet között végrehajtott primitív műveletek sorozatából állnak.
- Beágyazott tranzakciók: olyan tranzakció, amely más tranzakciókat is tartalmaz.
- Munkafolyamat.
Mi az a menetrend?
Az ütemezés egy olyan folyamat, amelynek során több párhuzamos tranzakcióból álló egyetlen csoportot hozunk létre, és azokat egyenként végrehajtjuk. Meg kell őriznie az utasítások sorrendjét az egyes tranzakciókban. Ha két tranzakciót hajtunk végre egyszerre, az egyik tranzakció eredménye befolyásolhatja a másik kimenetét.
Példa
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Ha a 2. tranzakciót az 1. tranzakció előtt hajtják végre, akkor a termék mennyiségére vonatkozó elavult információk kerülnek beolvasásra. Ezért menetrendekre van szükség.
Az adatbázisokban a párhuzamos végrehajtás elkerülhetetlen. De a párhuzamos végrehajtás megengedett, ha az egyidejűleg végrehajtó tranzakciók között ekvivalencia-reláció van. Ez az ekvivalencia háromféle lehet.
Eredményegyenértékűség: Ha két ütemezés végrehajtás után ugyanazt az eredményt jeleníti meg, akkor azt eredményegyenértékű ütemezésnek nevezzük. Egyes értékek esetén ugyanazt az eredményt, egy másik értékkészlet esetén pedig eltérő eredményeket kínálhatnak. Például az egyik tranzakció frissíti a termék mennyiségét, míg a másik a vevő adatait.
Nézet egyenértékűsége: Nézet-ekvivalencia akkor következik be, amikor a két ütemezésben szereplő tranzakciók hasonló műveletet hajtanak végre. Például az egyik tranzakció beilleszti a termékadatokat a terméktáblába, míg egy másik tranzakció az archívumtáblába. A tranzakció ugyanaz, de a táblák eltérőek.
Konfliktus-ekvivalencia: Ebben az esetben két tranzakció frissíti vagy tekinti meg ugyanazt az adathalmazt. Ütközés van a tranzakciók között, mivel a végrehajtás sorrendje befolyásolja a kimenetet.
Mi az a szerializálhatóság?
A szerializálhatóság az a folyamat, amelynek során egy olyan párhuzamos ütemezést keresünk, amelynek kimenete megegyezik egy olyan soros ütemezéssel, ahol a tranzakciók egymás után hajtódnak végre. Az ütemezés típusától függően kétféle szerializálhatóság létezik:
- Konfliktusok sorosíthatósága.
- Szerializálhatóság megtekintése
A kettő abban különbözik, hogy mennyire szigorúan ítélik meg az egyenértékűséget, az alábbiakban összefoglalva.
| Aspect | Konfliktusok sorosíthatósága | Sorozatképesség megtekintése |
|---|---|---|
| Bázis | Az ütköző műveletek sorrendje | Olvasás-tól és végleges írás-kapcsolatok |
| Tesztelés | A precedenciagráfnak aciklikusnak kell lennie | Soros ütemezéssel való ekvivalencia megtekintése |
| Szigorúság | Szigorúbb, egy részhalmaz | Szélesebb körű, beleértve a vakon írt szövegeket is |
| Az ellenőrzés költsége | Hatékony | Számítási szempontból nehéz |
Minden konfliktus-szerializálható ütemezés nézet-szerializálható is, de fordítva nem, ezért a konfliktus-szerializálhatóság az a gyakorlati teszt, amelyet egy adatbázis-kezelő rendszer alkalmaz.

