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.
- 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
-
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 |