Sobes.tech
Middle

Какви видове блокировки съществуват в SQL?

sobes.tech AI

Отговор от AI

Видове блокировки в SQL:

  • По ниво:

    • Блокировки на таблици (Table Locks): Блокира цялата таблица. Лесни за реализиране, но могат значително да намалят паралелизма. Подходящи за операции, които променят цялата таблица (например ALTER TABLE).
    • Блокировки на редове (Row Locks): Блокира отделни редове. Осигурява висок паралелизъм, но изисква повече ресурси за управление. По подразбиране в повечето СУБД за INSERT, UPDATE, DELETE.
  • По тип на достъпа:

    • Споделена блокировка (Shared Lock - S Lock): Позволява на няколко транзакции да четат данни едновременно, но забранява писане от други.
    • Ексклузивна блокировка (Exclusive Lock - X Lock): Позволява само на една транзакция да получи достъп до данните (за четене и писане) и блокира другите.
    • Заявка за блокировка (Intention Lock): Използва се, за да указва на СУБД, че транзакциите планират да поставят блокировка на по-ниско ниво (редове или таблици). Например, IS (Intention Shared), IX (Intention Exclusive). Помага на СУБД по-бързо да провери съвместимостта на блокировките.
  • Други видове:

    • Диапазонна блокировка (Range Lock): Блокира диапазон от редове в индекс. Използва се за предотвратяване на фантомно четене.
    • Блокировка на метаданни (Metadata Lock): Блокира метаданните на обекта (таблица, изглед и т.н.). Използва се при изпълнение на DDL операции.

Съвместимостта на блокировките определя дали няколко транзакции могат да поддържат едновременно определени типове блокировки върху един и същи обект.

Тип блокировка S X IS IX
S Да Не Да Не
X Не Не Не Не
IS Да Не Да Да
IX Не Не Да Да