Блокировка (SQL Server Compact Edition)
Блокировка предотвращает одновременное внесение изменений в данные, доступ к которым получают в одно и тоже время несколько пользователей или приложений. Блокировки управляются внутренними механизмами Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) Database Engine. Блокировки устанавливаются или освобождаются автоматически на основании действий пользователя.
Если блокировка не используется и несколько пользователей одновременно обновляют одни и те же данные в базе, эти данные могут стать логически неверными, а их запросы могут выдать непредвиденные результаты.
Приложение не делает непосредственных запросов блокировки. Вместо этого в начале транзакции и выполнения в ней команд на языке запросов, языке управления данными (DML) или языке определения данных (DDL) SQL Server Compact Edition блокирует любые запрашиваемые ресурсы, чтобы защитить ресурсы на необходимом уровне изоляции.
SQL Server Compact Edition автоматически определяет, когда установить или освободить блокировки для всех ресурсов. По умолчанию для страниц данных используется блокировка на уровне страниц, а для страниц индексов — блокировка на уровне страницы. Для сохранения системных ресурсов диспетчер блокировок автоматически выполняет расширение блокировки, когда превышен настраиваемый порог числа блокировок строк. За сеанс диспетчер блокировок выделяет не более 262 143 блокировок.
Для некоторых операций можно изменить гранулярность блокировки. Выполнять это необходимо с осторожностью, поскольку изменение гранулярности блокировки может оказать неблагоприятное влияние на параллелизм.
SQL Server Compact Edition может заблокировать следующие ресурсы:
- Строки
- Страницы данных или индексов размером 4 КБ
- Схемы таблиц
- Таблицы
- Базы данных
Блокировка на меньших уровнях грануляции, например на уровне строк, увеличивает параллелизм, но вместе с ним и нагрузку, поскольку блокирование большого количества строк требует удержания большего количества блокировок. Блокировка на более крупных уровнях грануляции, например на уровне таблиц, уменьшает параллелизм, поскольку блокировка полной таблицы ограничивает для других транзакций доступ к любой части таблицы. Однако блокировка на этом уровне создает меньшую нагрузку, поскольку при этом поддерживается меньшее количество блокировок.
В этом разделе
Раздел | Описание |
---|---|
Объяснение общих сведений о блокировке в SQL Server 2005 Compact Edition. |
|
Описание отображаемых сведений, возвращаемых представлением sys.lock_information. |
|
Описание способов настройки блокировки. |