Подсказки блокировки (SQL Server Compact Edition)
С помощью инструкций SELECT, INSERT, UPDATE и DELETE можно определять диапазон подсказок блокировки на уровне таблиц в целях изменения стандартного поведения блокировки в Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition). Рекомендуется использовать подсказки блокировки только при необходимости. Они могут отрицательно повлиять на параллелизм.
![]() |
---|
SQL Server Compact Edition автоматически получает блокировки, необходимые для операции. При использовании подсказок блокировки, приведенных в следующей таблице, в SQL Server Compact Edition увеличивается количество блокировок. Указания блокировки нельзя использовать для предупреждения блокировки ресурсов. |
В следующей таблице приводится описание подсказок блокировки, которые можно использовать в SQL Server Compact Edition.
Имя подсказки блокировки | Описание подсказки | ||
---|---|---|---|
ГРАНУЛЯРНОСТЬ |
|||
ROWLOCK |
Используйте блокировку на уровне строк при считывании и изменении данных. Данные виды блокировок получаются или освобождаются по мере необходимости. Операции SELECT накладывают блокировку S на строки. |
||
PAGLOCK |
Используйте блокировку на уровне страниц при считывании и изменении данных. Данные виды блокировок получаются или освобождаются по мере необходимости. Операции SELECT накладывают блокировку S на страницы. |
||
TABLOCK |
Используйте блокировку таблиц при считывании и изменении данных. Данная блокировка удерживается до окончания выполнения инструкции. Операции SELECT накладывают блокировку S на таблицы. |
||
DBLOCK |
Используйте блокировку баз данных при считывании и изменении данных. Данная блокировка удерживается до окончания выполнения инструкции. Операции SELECT накладывают блокировку S на базы данных. |
||
LOCKMODES |
|||
UPDLOCK |
При чтении таблиц используйте блокировки обновлений вместо общих блокировок, а также используйте блокировки удержаний до окончания выполнения инструкции или транзакции. Используя блокировку UPDLOCK, пользователь считывает данные, не блокируя других пользователей, а также обновляет эти данные впоследствии, будучи уверенным, что со времени последнего считывания они не изменились. Операции SELECT накладывают блокировку U. По умолчанию установлена гранулярность ROWLOCK. |
||
XLOCK |
При чтении таблиц до окончания выполнения инструкции или транзакции используйте вместо общих блокировок монопольные, а также блокировки удержания. Операции SELECT накладывают блокировку X. По умолчанию установлена гранулярность ROWLOCK. |
||
ДЛИТЕЛЬНОСТЬ |
|||
HOLDLOCK |
Используйте блокировку удержания, чтобы удержать блокировку до завершения транзакции и предотвратить ее освобождение в случае, если необходимые таблица, строка или данные более не требуются. Если гранулярность не указана, применяется блокировка ROWLOCK. |
||
NOLOCK |
Блокировки не используются. Этот параметр задан по умолчанию для операций SELECT. Он не применяется к инструкциям INSERT, UPDATE, и DELETE.
|
Дополнительные сведения об использовании подсказок блокировки см. в разделе "Подсказки блокировки" в электронной документации SQL Server.
Указание NOLOCK
Использование подсказок блокировки в SQL Server Compact Edition аналогично их использованию в SQL Server. Однако поведение подсказки NOLOCK в SQL Server Compact Edition значительно отличается от поведения в SQL Server. В SQL Server Compact Edition подсказка NOLOCK установлена по умолчанию для инструкций SELECT, но с принудительным включением чтения зафиксированных данных.
В SQL Server применение инструкции SELECT со стандартным уровнем изоляции чтения зафиксированных данных приводит к наложению на строки блокировки S, которая освобождается по мере чтения строк. Несмотря на принудительное включение уровня изоляции, это означает, что инструкция SELECT будет выжидать, если в строке, которой требуется блокировка S, существует несовместимая блокировка. Если задана подсказка NOLOCK, операция SELECT не будет применять блокировку S и разрешит считывание данных. Хотя операция и будет выполнена успешно, появляется вероятность считывания незафиксированных данных инструкцией SELECT.
Для обеспечения уровня чтения зафиксированных данных SQL Server Compact Edition не использует блокировку S. Поскольку при изменении данных в SQL Server Compact Edition используется механизм указания версий страниц, данные, необходимые инструкции SELECT, можно считать из соответствующей копии страницы. Ей не требуется применять блокировку S для обеспечения уровня чтения зафиксированных данных. Поэтому, хотя SQL Server Compact Edition и использует подсказку NOLOCK для инструкции SELECT, данные считываются на уровне изоляции чтения зафиксированных данных. В SQL Server Compact Edition некорректное чтение (чтение незафиксированных данных) невозможно.
![]() |
---|
Указание NOLOCK не влияет на блокировки Sch-S и Sch-X. |
См. также
Основные понятия
Основные принципы блокировки
Уровень изоляции транзакций
Отображение сведений о блокировке
Время ожидания блокировки