Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Уровни блокировок

Блокировки могут захватываться по целому ряду ресурсов; тип ресурса определяет уровень детализации данной блокировки. В таблице 11.2 приводится список ресурсов, которые может блокировать SQL Server, начиная с самого подробного и до самого крупного уровня детализации.

Таблица 11.2.

Блокируемые ресурсы

Ресурс

Тип блокировки

Описание

Идентификатор строки

Уровень строки

Блокирует отдельную строку в таблице

Ключ

Уровень строки

Блокирует отдельную строку в индексе

Страница

Уровень страницы

Блокирует отдельную страницу размером 8 Кб в таблице или индексе

Экстент

Уровень экстента

Блокирует экстент – группу из 8 последовательных страниц данных или страниц индекса

Таблица

Уровень таблицы

Блокирует всю таблицу

База данных

Уровень базы данных

Блокирует всю базу данных

При снижении уровня детализации снижается степень параллельности. Например, блокировка всей таблицы с помощью определённого типа блокировки может заблокировать доступ к этой таблице другим пользователям. Но при этом снижается объём передачи дополнительной служебной информации (непроизводительные затраты), поскольку используется меньшее количество блокировок. По мере повышения уровня детализации, например, до уровня блокировки страниц и строк, уровень параллельности возрастает, поскольку увеличивается количество пользователей, одновременно получающих доступ к различным страницам и строкам в таблице. В этом случае увеличиваются также непроизводительные затраты, поскольку при отдельном доступе к большому числу строк или страниц требуется больше блокировок.

SQL Server автоматически выбирает тип блокировки, подходящий для данной задачи, минимизируя при этом непроизводительные затраты на блокировку. SQL Server также автоматически определяет режим блокировки для каждой транзакции, касающейся блокируемого ресурса; ниже приводится описание этих режимов.

Режимы блокировки

Режим блокировки указывает, каким образом одновременно работающие пользователи (или транзакции) могут осуществлять доступ к какому-либо ресурсу. Захват каждого типа блокировки происходит в одном из этих режимов. Имеется шесть режимов блокировки: разделяемая блокировка (shared), блокировка изменений (update), монопольная блокировка (exclusive), блокировка намерения (intent), блокировка схемы (schema) и блокировка массовых изменений (bulk update).

Разделяемая блокировка

Режим разделяемой блокировки используется только для операций чтения, таких как операции с помощью оператора SELECT. Этот режим позволяет одновременно выполняемым транзакциям выполнять чтение одного и того же ресурса, но при этом ни одна из транзакций не может модифицировать этот ресурс. Разделяемые блокировки освобождаются сразу после окончания чтения, за исключением случаев, когда степень изолированности задана на уровне повторяемого чтения или более высоком уровне или в транзакции задана подсказка блокировки, подавляющая это поведение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]