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

Блокировка изменений

Режим блокировки изменений используется для случаев, когда в данный ресурс могут быть внесены изменения. Только одна транзакция может захватывать блокировку изменений по определённому ресурсу. Если транзакция вносит изменения (например, когда по условию поиска найдены строки для модификации), то блокировка изменений преобразуется в монопольную блокировку, иначе она преобразуется в разделяемую блокировку.

Монопольная блокировка

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

Блокировка намерения

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

  • разделяемое намерение (Intent shared) – указывает, что в транзакции предполагается наложить на ресурс разделяемую блокировку;

  • монопольное намерение (Intent exclusive) – указывает, что в транзакции предполагается наложить на ресурс монопольную блокировку;

  • разделяемо-монопольное намерение (Shared with intent exclusive) – указывает, что в транзакции предполагается наложить разделяемую блокировку на некоторые ресурсы и монопольную блокировку на другие ресурсы.

Блокировка схемы

Режим блокировки схемы используется в тех случаях, когда выполняется операция изменения схемы таблицы, такая как добавление колонки в таблицу, или когда компилируются запросы. Для таких случаев существует два типа блокировок схемы: блокировка модификации схемы (Sch-M) и блокировка стабильности схемы (Sch-S). Блокировка модификации схемы используется при выполнении операции языка определения данных. Блокировка стабильности схемы используется для компиляции запросов. Когда происходит компиляция запроса, другие транзакции могут одновременно с этим запускать и захватывать блокировки по данной таблице (даже монопольные блокировки), но операторы языка определения данных не могут применяться к таблице, если задана блокировка стабильности схемы.

Блокировка массовых изменений

Режим блокировки массовых изменений используется, когда нужно выполнить массовое копирование данных в таблицу с подсказкой блокировки TABLOCK или когда задаётся параметр table lock on bulk load с помощью хранимой процедуры sp_tableoption. Целью блокировки массовых изменений является предоставление процессам разрешения на параллельное массовое копирование данных в одну таблицу, запрещая при этом доступ к этой таблице любым процессам, которые не выполняют массового копирования.

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