Middle
Jakie rodzaje blokad istnieją w SQL?
sobes.tech AI
Odpowiedź od AI
Rodzaje blokad w SQL:
-
Na poziomie:
- Blokady tabel (Table Locks): Blokuje całą tabelę. Łatwe do implementacji, ale mogą znacznie obniżyć równoległość. Dobrze nadaje się do operacji modyfikujących całą tabelę (np.
ALTER TABLE). - Blokady wierszy (Row Locks): Blokuje pojedyncze wiersze. Zapewnia wysoką równoległość, ale wymaga więcej zasobów do zarządzania. Domyślnie używane w większości systemów zarządzania bazami danych dla
INSERT,UPDATE,DELETE.
- Blokady tabel (Table Locks): Blokuje całą tabelę. Łatwe do implementacji, ale mogą znacznie obniżyć równoległość. Dobrze nadaje się do operacji modyfikujących całą tabelę (np.
-
Według typu dostępu:
- Blokada współdzielona (Shared Lock - S Lock): Pozwala wielu transakcjom odczytywać dane jednocześnie, ale zabrania zapisu innym.
- Blokada wyłączna (Exclusive Lock - X Lock): Pozwala tylko jednej transakcji na dostęp do danych (czytanie i zapis) i blokuje dostęp innym.
- Blokada zamiaru (Intention Lock): Używana do wskazania systemowi zarządzania bazą danych, że transakcje planują ustawić blokadę na niższym poziomie (wiersze lub tabele). Na przykład,
IS(Intention Shared),IX(Intention Exclusive). Pomaga systemowi szybciej sprawdzić zgodność blokad.
-
Inne rodzaje:
- Blokada zakresu (Range Lock): Blokuje zakres wierszy w indeksie. Używana do zapobiegania odczytom fantomowym.
- Blokada metadanych (Metadata Lock): Blokuje metadane obiektu (tabela, widok itp.). Używana podczas operacji DDL.
Zgodność blokad określa, czy wiele transakcji może jednocześnie utrzymywać określone typy blokad na tym samym obiekcie.
| Typ blokady | S | X | IS | IX |
|---|---|---|---|---|
| S | Tak | Nie | Tak | Nie |
| X | Nie | Nie | Nie | Nie |
| IS | Tak | Nie | Tak | Tak |
| IX | Nie | Nie | Tak | Tak |