Sobes.tech
Middle

Jaké druhy blokování existují v SQL?

sobes.tech AI

Odpověď od AI

Typy zámků v SQL:

  • Podle úrovně:

    • Zámky tabulek (Table Locks): Zámkuje celou tabulku. Snadná implementace, ale může výrazně snížit paralelismus. Vhodné pro operace, které mění celou tabulku (například ALTER TABLE).
    • Zámky řádků (Row Locks): Zámkuje jednotlivé řádky. Poskytuje vysoký paralelismus, ale vyžaduje více zdrojů pro správu. Výchozí většinou v DBMS pro INSERT, UPDATE, DELETE.
  • Podle typu přístupu:

    • Sdílený zámek (Shared Lock - S Lock): Umožňuje více transakcím číst data současně, ale zakazuje zápis jiným.
    • Exkluzivní zámek (Exclusive Lock - X Lock): Umožňuje pouze jedné transakci přístup k datům (čtení i zápis) a blokuje ostatní.
    • Zámek záměru (Intention Lock): Signalizuje DBMS, že transakce plánují nastavit zámek na nižší úrovni (řádky nebo tabulky). Například, IS (Intention Shared), IX (Intention Exclusive). Pomáhá DBMS rychleji ověřit kompatibilitu zámků.
  • Další typy:

    • Rozsahový zámek (Range Lock): Zámkuje rozsah řádků v indexu. Používá se k prevenci fantomového čtení.
    • Zámek metadat (Metadata Lock): Zámkuje metadata objektu (tabulka, pohled atd.). Používá se při DDL operacích.

Kompatibilita zámků určuje, zda mohou více transakcí současně držet určité typy zámků na stejném objektu.

Typ zámku S X IS IX
S Ano Ne Ano Ne
X Ne Ne Ne Ne
IS Ano Ne Ano Ano
IX Ne Ne Ano Ano