Sobes.tech
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.
  • 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