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


Блокировки (SQL Server Compact)

Блокировка предотвращает одновременное внесение изменений в данные, доступ к которым получают в одно и тоже время несколько пользователей или приложений. Блокировки управляются внутренними механизмами компонента Microsoft SQL Server Compact Database Engine. Блокировки устанавливаются или освобождаются автоматически на основании действий пользователя.

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

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

SQL Server Compact автоматически определяет, когда установить или освободить блокировки для всех ресурсов. По умолчанию для страниц данных используется блокировка на уровне страниц, а для страниц индексов — блокировка на уровне страницы. Для сохранения системных ресурсов диспетчер блокировок автоматически выполняет расширение блокировки, когда превышен настраиваемый порог числа блокировок строк. За сеанс диспетчер блокировок выделяет не более 262 143 блокировок.

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

SQL Server Compact может заблокировать следующие ресурсы:

  • Строки

  • Страницы данных или индексов размером 4 КБ

  • Схемы таблиц

  • Таблицы

  • Базы данных

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

В этом разделе

Раздел

Описание

Основные принципы блокировки

Объяснение общих сведений о блокировке в SQL Server Compact.

Отображение сведений о блокировке

Описание отображаемых сведений, возвращаемых представлением sys.lock_information.

Настройка блокировки

Описание способов настройки блокировки.