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.

  • 🔁 Központi egység: Egy tranzakció csoportosítja a kapcsolódó olvasási és írási műveleteket, így azok együtt sikeresek vagy sikertelenek, soha nem félig mennek végbe.
  • 🧪 SAV tulajdonságai: AtomA sűrűség, a konzisztencia, az izoláció és a tartósság garantálják a helyes eredményeket még hiba vagy párhuzamos működés esetén is.
  • 🚦 Tranzakcióállapotok: Az aktív, részben véglegesített, véglegesített, sikertelen és megszakított állapotok írják le a tranzakció életciklusát.
  • 👥 Miért Párhuzamosság: Egy megosztott adatbázis miatt sok tranzakció fut egyszerre, és nem sérthetik meg egymás adatait.
  • 📋 menetrendek: Az ütemterv a párhuzamos tranzakciók műveleteit rendezi el, miközben megőrzi az egyes tranzakciók belső sorrendjét.
  • 🔗 Sorozatosíthatóság: Egy párhuzamos ütemezés akkor helyes, ha az eredménye megegyezik valamilyen soros végrehajtással, konfliktus vagy nézetekvivalencia alapján ítélve.
  • ↩️ Felépülés: Egy sikertelen tranzakciót visszagörget a rendszer, így a részleges írásai soha nem érik el a véglegesített adatbázist.

Tranzakciókezelés a DBMS-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.

Adatbázis tranzakciók konzisztens állapotok között történő mozgatása
Adatbázis-tranzakció

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.

Adatbázis-tranzakció állapotátmeneti diagramja

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.

  1. Amint egy tranzakció végrehajtása megkezdődik, aktívvá válik. READ vagy WRITE műveletet hajthat végre.
  2. Miután az OLVASÁS és ÍRÁS műveletek befejeződtek, a tranzakció eléri a részben véglegesített állapotot.
  3. 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.
  4. Ha az ellenőrzés sikertelen, a tranzakció sikertelen állapotba kerül.
  5. 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.
  6. 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.

GYIK

A commit (véglegesítés) véglegesíti a tranzakció módosításait az adatbázisban. A visszagörgetés (rollback) visszavonja a tranzakció kezdete óta végrehajtott összes módosítást, és visszaállítja az adatbázist a kezdet előtti konzisztens állapotba.

Atomicitás. Ha a folyamat közben összeomlás történik, az atomicitás biztosítja, hogy a részleges munka elvessen, így a tranzakciót úgy kezeli a rendszer, mintha soha nem futott volna le. A tartósság ezután megvédi a véglegesített munkát a helyreállítás után.

A mesterséges intelligencia elemzi a zárolási várakozások és a holtpontok grafikonjait, hogy kiszűrje azokat a tranzakciókat, amelyek másokat blokkolnak, majd olyan izolációs szintet vagy indexmódosítást javasol, amely csökkenti a versengést a helyesség gyengítése nélkül.

Bizonyos mértékig. A korábbi patthelyzeteket megelőző zárolási kérés minták megismerésével egy modell korán jelezheti a kockázatos tranzakció-kombinációkat, lehetővé téve az ütemező számára a késleltetést vagy az átrendezést, mielőtt egy ciklus kialakulna.

Egy soros ütemezés egy tranzakciót teljesen lefuttat, mielőtt a következő elindulna, így az összefonódás nem ronthatja az adatokat. Lassú, ezért a cél egy párhuzamos, hozzá sorosítható ütemezés.

Foglald össze ezt a bejegyzést a következőképpen: