Transakční zpracování

Transakční zpracování

[[Transakce.pdf]]

ACID

  1. Popis ACID vlastností:
    • Atomicity (Atomicita): Transakce je buď zcela provedena, nebo vůbec neprovedena.
      • Buď všechno, nebo nic
      • Pomocí nějakého logovacího systému, dokáže systém číst historii
    • Consistency (Konzistence): Transakce převádí databázi z jednoho konzistentního stavu do jiného konzistentního stavu.
      • Dodržuje pravidla
      • Například, pro bankovní databázi nedovolíme záporný zůstatek
    • Isolation (Izolace): Transakce probíhají nezávisle na sobě.
    • Durability (Trvalost): Jakmile je transakce potvrzena, její výsledek je trvalý i při výpadku systému.
      • Řešení je například duplikovat na jinou databázi

Vlastnosti rozvrhů

Stav databáze se mění během vícevlákonové exekuce, kde vlákno dává přístup k datům pro jiné vlákno?
-> porušuje Izolaci a konzistenci

Rozvrh poskytuje :

Uspořádatelnost (Serializability):

Definice: Rozvrh je uspořádatelný, pokud jeho výsledky odpovídají nějakému serialnímu rozvrhu, tj. transakce lze uspořádat tak, že dávají stejný výsledek jako při jejich sekvenčním vykonávání.
Pasted image 20240813094400.png
Problém je, jak poznat že jsou dva rozvrhy uspořádané.

Konflikty

Definice: Rozvrhy jsou konfliktně ekvivalentní pokud sdílí konfliktní pár

Definice: Rozvrh je konfliktně uspořádaný pokud je konfliktně ekvivalentní pro nějaký uspořádaný rozvrh (pro tu stejnou transakci)

Pozorování: Pokud rozvrh je konfliktně uspořádaný, pak je uspořádaný
Pasted image 20240813114833.png

Potřebujeme ale stále nějak rozpoznat jestli je rozvrh konfliktně uspořádané

Definice: Precedenční graf, kde
- vrcholy jsou commitnuté transakce
- hrany reprezentují RW, WR, WW konflikt na rozvrhu
Platí: Rozvrh je konfliktně uspořádaný, pokud je graf acyklický
Pasted image 20240813122349.png
Pasted image 20240813122356.png
Teď víme kdy je rozvrh konfliktně uspořádané a kdy ne. Nyní si zavedeme ještě přísnější pravidlo pro uspořádaní

Definice: Rozvrhy jsou pohledově ekvivalentní pokud:
- Transakce Ti čte iniciální hodnotu X v jednom rozvrhu, právě tehdy když, čte původní hodnotu v druhém rozvrhu (Stejné původní čtení)
- Operace Oi v transakci Ti čte hodnotu X, vyprodukovanou operací Oj v transakci Tj právě tehdy když čte stejnou hodnotu v druhém rozvhru (Stejná závislost při psaní)
- Transakce Ti píše finální hodnotu X do jednoho rozvrhu právě tehdy když píše původní hodnotu v druhém rozvrhu (Stejné konečné write)
Definice Rozvrh je pohledově uspořádaný, pokud je pohledově ekvivalentní s nějakým uspořádaným rozvrhem
Pasted image 20240813133611.png
Návod na pohledově uspořádaný

Shrnutí

Nejdřív graf, pak pokud je cyklický, tak pak pohledově uspořádání.

POZOR: Při určování pohledově uspořádaný, tak initial read znamená, že nebylo před ní, žádný write. Pokud v tabulce nebudeme mít transakci, to znamená, že u téhle transakce nezáleží na pořadí, tzn. že může mít jaké pořadí chce.

Zotavitelnost (Recoverability):

Rozšířili jsme transakční model o operaci, ABORT. Přináší to ale svoje rizika:
Pasted image 20240813141014.png
Dostáváme zde nezotavitelný rozvrh. Tohle nám ničí v #ACID durability.

Definice: V zotavitelném rozvrhu transakce T je commitnutá po tom, co všechny ostatní transakce, ovlivňující T jsou commitnuté
Video s příkladem

Jak zjistit jestli je rozvrh zotavitelný? Pokud je v #Strict 2PL. Také funguje na převod z nezotavitelného na zotavitelný

Uzamykací protokoly

Zamykání databázových entit se používá ke kontrole pořadí čtení a zápisů, a také k zabezpečení konfliktového uspořádání.

Definice: Exkluzivní zámek:

?? Nejsem si jistý ale SX

Dobře formátované transakce

Transakce je dobře formátovaná, právě tehdy když

Dvoufázový uzamykací protokol (2PL)

2PL přidává navíc jedno pravidlo k dobře formátovaným transakcím.

Dvě fáze: Zamykání a odemykání
Pasted image 20240813153251.png

Vlastnosti 2PL

Strict 2PL

Přidává následující pravidla

Vlastnosti Strict 2PL

Podobně jako v #Vlastnosti 2PL navíc s

Blokování

  1. Popis:
    • Blokování (Deadlock): Situace, kdy dvě nebo více transakcí čekají na uvolnění zdrojů držených jinými transakcemi, což vede k nekonečnému čekání.
    • Řešení: Použití detekce blokování a rollbacku jedné z transakcí.
      Pasted image 20240813162508.png
      Pasted image 20240813162519.png