Поделиться через


Общие сведения о блокировке

Чтобы уяснить принцип работы блокировки в Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5), необходимо ознакомиться с ресурсами, которые можно заблокировать, а также различными режимами блокировки ресурсов.

Гранулярность блокировки

Гранулярность блокировки определяет уровень, на котором происходит блокировка.

  • Строка
  • Таблица
  • Страница
  • База данных

Блокировка на более мелких уровнях грануляции, например на уровне строки, увеличивает параллелизм, однако блокирование большого количества строк требует удержания большего количества блокировок. Блокировка на более крупных уровнях грануляции, например на уровне таблиц, уменьшает параллелизм, поскольку блокировка всей таблицы ограничивает для других транзакций доступ к любой части таблицы. Однако при блокировке на уровне таблиц необходимо удерживать меньше блокировок.

По умолчанию SQL Server Compact 3.5 использует блокировку на уровне строк для страниц данных и блокировку на уровне страниц — для страниц индексов.

В следующей таблице представлены ресурсы, которые могут быть заблокированы SQL Server Compact 3.5.

Блокировки Описание

RID

Идентификатор строк. Используется для блокировки одной строки таблицы.

PAG

Страница данных или индексов.

TAB

Вся таблица, в том числе все данные и индексы

MD

Метаданные таблицы. Используются для защиты схемы таблиц

DB

База данных

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

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

В следующей таблице описаны режимы блокировок, поддерживаемые в SQL Server Compact 3.5.

Режим блокировки Описание

Общая блокировка (S)

Ресурс становится доступен только для чтения. Другие транзакции не могут изменить данные, пока к ресурсу применены общие блокировки (S).

Монопольная (X)

Указание изменений данных, например вставки, обновления или удаления. Запрет одновременных обновлений одного ресурса.

Блокировка обновления (U)

Предотвращение обычной взаимоблокировки. Единовременно только одна транзакция может получить блокировку U для ресурса. Если транзакция изменяет ресурс, то блокировка U преобразуется в блокировку X.

Схема

Используется при выполнении операции, которая зависит от схемы таблицы. Существуют два типа блокировок схем: модификация схемы (Sch-M) и стабильность схемы (Sch-S).

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

Определение иерархии блокировок. Наиболее распространены блокировки намерения IS, IU и IX. Эти блокировки указывают, что транзакция выполняет операции с некоторыми, но не со всеми ресурсами с нижних уровней иерархии. Ресурсы нижнего уровня получают блокировку S, U либо X.

Важно!

Для стандартного уровня изоляции чтения зафиксированных данных инструкция SELECT в SQL Server Compact 3.5 не требует использования блокировок S для чтения данных. Хотя они требуются для Microsoft SQL Server, SQL Server Compact 3.5 не нуждается в блокировке S для принудительного включения чтения зафиксированных данных. Единственная блокировка, которая требуется для инструкции SELECT, — это Sch-S, защищающая схему при исполнении операции. В результате обеспечивается значительный параллелизм инструкций SELECT. Дополнительные сведения см. в разделе Уровень изоляции транзакций.

См. также

Основные понятия

Блокировки (SQL Server Compact)
Основные принципы блокировки
Настройка блокировки

Справка и поддержка

Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)