Transakce, ACID

Cite

Transakce a jejich vlastnosti - ACID

Požadavky na databázi

  • Ochrana dat před chybami, havárií serveru - řeší recovery modul, při chybách se DB vrátí vždy do konzistentního stavu
  • Korektní, rychlý, asynchronní přístup pro větší počet uživatelů - řeší concurency control modul, každý uživatel vidí konzistentní stav

Transakce

  • Transakce je sekvence akcí, které spolu logicky souvisí

    • Dostane DB z jednoho konzistentního stavu do druhého
    • Mění stav databáze
    • Provádí TCL (Transaction Control Language) příkazy (COMMIT, ROLLBACK, SAVEPOINT)
  • Transakční zpracování

    • Zajišťují ochranu před chybným zpracováním dat (nekonzistencí)
      • Po vykonání transakce je databáze vždy konzistentní
    • Dodržení vlastností ACID
    • Začátek transakce - vznik session, nebo konec předchozí transakce
    • Konec transakce - ukončení session, nebo klíčová slova COMMIT/ROLLBACK
    • Buď se provede celá, nebo vůbec
  • Session - připojení k databázi, může jich být i více pro jednoho uživatele

  • Autocommit transakcí

    • Řídí chování na úrovni session
    • AUTOCOMMIT ON - Každý DML příkaz je automaticky potvrzen
    • AUTOCOMMIT OFF - Musí přijít explicitní COMMIT nebo ROLLBACK
  • Stavový diagram transakce
    ../../Attachments/Pasted image 20260601212942.png

    • A (Active) - vykonává DML (Data Manipulation Language) příkazy (INSERT, UPDATE, DELETE, MERGE)
    • PC (Partially Commited) - po provedení poslední části transakce
    • F (Failed) - chyba při transakci, nelze pokračovat
    • AB (ABorted) - stav po revertu změn v transakci (příkaz ROLLBACK)
    • C (Commited) - potvrzení po úspěšném dokončení transakce

ACID

  • Jedná se o soubor vlastností transakce, které by měla splňovat každá databáze

  • Atomicity (atomicita)

    • transakce se provede buď celá, nebo vůbec
    • selhání z důvodu pádu DBMS, nebo např. porušení integritního omezení
  • Consistency (konzistence)

    • transformuje DB z jednoho konzistentního stavu do druhého konzistentního stavu
  • Independence (nezávislost)

    • dílčí efekty jedné transakce nejsou viditelné jiným transakcím
    • na stejných datech se neprovádí více transakcí najednou
  • Durability (trvanlivost)

    • všechny změny provedené transakce jsou na perzistentním médiu
    • můžeme ztratit pouze změny rozpracovaných transakcí
  • Proti tomu BASE u non SQL databází

    • Basically Available (concurrent accessibility by users at all times)
    • Soft State (data can have transient or temporary states that may change over time)
    • Eventually Consistent (record will achieve consistency when all the concurrent updates have been completed)
  • Splňuje SQLL relační databáze, PostGress

    • Transaction jurnal
    • Dvoufázový uzávěr

Obnova databáze po chybě (recovery modul)

  • Používá se transakční žurnál

    • Ukládá všechny vektory změn ( transakce)
    • Řeší A,D z ACID
    • Pomalé, nouzové
    • Data se ukládají do bloků
    • Transakce se můžou prokládat
    • vektor ukládá:
      • ID transakce
      • ID dat bloku
      • timestamp
  • Typy chyb

    • Globální
      • Vliv na více transakcí
      • HW chyba, pád serveru, ztráta spojení, selhání disku, ...
    • Lokální
      • Vliv pouze na konkrétní transakci
      • Logické chyby, např. dělení nulou, nesplnění integritních omezení, ...
  • Řešení při pádu

    • ROLL Forward
      • Provádí transakce znovu dle žurnálu
      • Potvrzená transakce, jejichž efekt se nestihl zapsat na disk
    • ROLL Back
      • Vrací stav do předchozího
      • Nedokončené transakce

Rozvrhování transakcí

  • Transakce a jejich dílčí operace se musí rozplánovat

  • Transakce se s omezením mohou prokládat

    • Sekvenčně
    • Paralelně -> prokládání operací
      • Uspořádaný rozvrh (sekvenční ale ekvivalentní)
  • Nesmí nastat

    • Ztráta aktualizace -> dvojita změna bez uložení
    • odvolání jedné transakce -> rozpad dat, na kterých staví následující
    • fantom -> jedna operace přidá/odebere řádky
  • Izolace

    • Každá transakce je v určitém stupni izolace
    • Určují prováděné operace
    • posuzuje se, které operace transakcí jsou kompatibilní ??
  • Uzamčené tabulky

    • Realizace izolace transakce
    • Zamčenou tabulku modifikuje jen jedna transakce
    • Pro zamezení deadlocku se využívá dvoufázový model
      • I z ACID
        1. fáze - pouze se zamyká, co je potřeba (klidně postupně s dílčími operacemi transakcí)
        1. fáze - pouze se odemyká, po prvním odemčení se již nesmí nic zamykat

Vytvořeno: 27. 5. 2026, 11:55
Poslední aktualizace: 9. 6. 2026, 12:18