Správa transakcí v DBMS: Co jsou vlastnosti ACID?
Co je to databázová transakce?
A Databázová transakce je logická jednotka zpracování v DBMS, která zahrnuje jednu nebo více operací přístupu k databázi. Stručně řečeno, databázové transakce představují skutečné události jakéhokoli podniku.
Všechny typy operací přístupu k databázi, které jsou drženy mezi příkazy začátku a konce transakce, jsou v DBMS považovány za jednu logickou transakci. Během transakce je databáze nekonzistentní. Pouze jakmile je databáze potvrzena, stav se změní z jednoho konzistentního stavu na jiný.
Fakta o databázových transakcích
- Transakce je programová jednotka, jejíž provedení může nebo nemusí změnit obsah databáze.
- Transakční koncept v DBMS je realizován jako jeden celek.
- Pokud databázové operace neaktualizují databázi, ale pouze načítají data, tento typ transakce se nazývá transakce pouze pro čtení.
- Úspěšná transakce může změnit databázi z jednoho KONZISTENTNÍHO STAVU do jiného
- Transakce DBMS musí být atomické, konzistentní, izolované a trvalé
- Pokud by byla databáze před transakcí v nekonzistentním stavu, zůstala by v nekonzistentním stavu i po transakci.
Proč potřebujete souběžnost v transakcích?
Databáze je sdílený zdroj, ke kterému se přistupuje. Používá jej mnoho uživatelů a procesů současně. Například bankovní systém, železniční a letecké rezervační systémy, monitorování akciového trhu, zásoby v supermarketech a pokladny atd.
Nespravování souběžného přístupu může způsobit problémy jako:
- Selhání hardwaru a pády systému
- Souběžné provádění stejné transakce, zablokovánínebo pomalý výkon
Stavy transakcí
Níže jsou uvedeny různé stavy konceptu transakce v DBMS:
Stát | Typy transakcí |
---|---|
Aktivní stav | Transakce vstoupí do aktivního stavu, když začne proces provádění. Během tohoto stavu lze provádět operace čtení nebo zápisu. |
Částečně odsouhlaseno | Transakce přejde do stavu částečně potvrzeného po ukončení transakce. |
Oddaný stát | Když je transakce potvrzena do stavu, byla již úspěšně dokončena. Navíc jsou všechny jeho změny trvale zaznamenávány do databáze. |
Neúspěšný stav | Transakce se považuje za neúspěšnou, když některá z kontrol selže nebo pokud je transakce přerušena, když je v aktivním stavu. |
Ukončený stát | Stav transakce dosáhne stavu ukončeno, když určité transakce, které opouštějí systém, nelze restartovat. |
Pojďme studovat a diagram přechodu stavu který zdůrazňuje, jak se transakce pohybuje mezi těmito různými stavy.
- Jakmile transakce uvede provedení, stane se aktivní. Může spustit operaci READ nebo WRITE.
- Po dokončení operací READ a WRITE se transakce stanou částečně potvrzenými.
- Dále je třeba, aby některé protokoly obnovy zajistily, že selhání systému nebude mít za následek nemožnost trvale zaznamenávat změny v transakci. Pokud je tato kontrola úspěšná, transakce se potvrdí a přejde do stavu potvrzení.
- Pokud je kontrola neúspěšná, transakce přejde do stavu Failed.
- Pokud je transakce přerušena, když je v aktivním stavu, přejde do neúspěšného stavu. Transakce by měla být vrácena zpět, aby se zrušil účinek jejích operací zápisu na databázi.
- Stav ukončeno označuje transakci opouštějící systém.
Jaké jsou vlastnosti ACID?
Vlastnosti kyseliny se používají pro zachování integrity databáze během zpracování transakcí. ACID v DBMS znamená Atomicity, Cstálost, Iútěcha a Dužitkovost.
- Atomicity: Transakce je jedna jednotka operace. Buď ji provedete úplně, nebo ji neprovedete vůbec. Nemůže dojít k částečnému provedení.
- Konzistence: Jakmile je transakce provedena, měla by se přesunout z jednoho konzistentního stavu do druhého.
- Izolace: Transakce by měla být provedena izolovaně od ostatních transakcí (bez zámků). Během souběžného provádění transakcí by si výsledky meziproduktů ze současně prováděných transakcí neměly vzájemně zpřístupňovat. (Úroveň 0,1,2,3)
- Trvanlivost:· Po úspěšném dokončení transakce by změny v databázi měly přetrvávat. A to i v případě selhání systému.
Vlastnost ACID v DBMS s příkladem
Níže je uveden příklad vlastnosti ACID v DBMS:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Transakce 1 je převod 50 USD z účtu X na účet Y.
Transakce 2 je připsání 10% úroku na každý účet.
Pokud jsou obě transakce zadány společně, není zaručeno, že Transakce 1 bude provedena před Transakcí 2 nebo naopak. Bez ohledu na pořadí musí výsledek vypadat, jako by transakce probíhaly sériově jedna za druhou.
Typy transakcí
Na základě oblastí použití
- Nedistribuované vs
- Kompenzační transakce
- Načasování transakcí
- On-line vs
Na základě akcí
- Dva kroky
- Omezený
- Akční model
Na základě struktury
- Ploché nebo jednoduché transakce: Skládá se ze sekvence primitivních operací prováděných mezi počáteční a koncovou operací.
- Vnořené transakce: Transakce, která obsahuje další transakce.
- Workflow
Co je rozvrh?
Plán je proces, který vytváří jednu skupinu více paralelních transakcí a provádí je jednu po druhé. Mělo by zachovat pořadí, ve kterém se pokyny objevují v každé transakci. Pokud jsou současně prováděny dvě transakce, může výsledek jedné transakce ovlivnit výstup jiné.
Příklad
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Pokud je transakce 2 provedena před transakcí 1, budou načteny zastaralé informace o množství produktu. Proto jsou nutné rozvrhy.
Paralelní provádění v databázi je nevyhnutelné. Paralelní provádění je však povoleno, pokud existuje vztah ekvivalence mezi současně prováděnými transakcemi. Tato ekvivalence je 3 typů.
EKVIVALENCE VÝSLEDKU:
Pokud dva plány po provedení zobrazují stejný výsledek, nazývá se to plán ekvivalentní výsledku. Mohou nabízet stejný výsledek pro určitou hodnotu a jiné výsledky pro jinou sadu hodnot. Jedna transakce například aktualizuje množství produktu, zatímco jiná aktualizuje údaje o zákazníkovi.
Zobrazit ekvivalenci
Ekvivalence zobrazení nastane, když transakce v obou plánech provede podobnou akci. Například jedna transakce vloží podrobnosti o produktu do tabulky produktů, zatímco jiná transakce vloží podrobnosti o produktu do tabulky archivu. Transakce je stejná, ale tabulky jsou jiné.
KONFLIKT Ekvivalence
V tomto případě dvě transakce aktualizují/zobrazují stejnou sadu dat. Mezi transakcemi je konflikt, protože pořadí provedení ovlivní výstup.
Co je serializovatelnost?
Serializovatelnost je proces hledání souběžného plánu, jehož výstup se rovná sériovému plánu, kde jsou transakce prováděny jedna po druhé. V závislosti na typu plánů existují dva typy serializace:
- Konflikt
- Zobrazit
Shrnutí
- Správa transakcí je logická jednotka zpracování v DBMS, která zahrnuje jednu nebo více operací přístupu k databázi
- Transakce je programová jednotka, jejíž provedení může, ale nemusí změnit obsah databáze.
- Nespravování souběžného přístupu může způsobit problémy, jako je selhání hardwaru a selhání systému.
- Aktivní, Částečně odevzdaný, Zadaný, Neúspěšný a Ukončený jsou důležité stavy transakce.
- Plná forma ACID Properties v DBMS is AtomIcity, Konzistence, Izolace a Trvanlivost
- Tři typy transakcí DBMS jsou Base on Application Areas, Action a Structure.
- Plán je proces, který vytváří jednu skupinu více paralelních transakcí a provádí je jednu po druhé.
- Serializovatelnost je proces hledání souběžného plánu, jehož výstup se rovná sériovému plánu, kde jsou transakce prováděny jedna po druhé.