10

Вопрос по sql-server – Объяснения блокировок SQL Server

Ниже приведен список блокировок, которые SQL Server 2000 должен поддерживать. Я немного сбит с толку относительно того, что такое "намерение" замки на самом деле означают. Я посмотрел в Интернете, и ответы кажутся немного загадочными.

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

  • Shared (S)
    • Update (U)
    • Exclusive (X)
    • Intent
      • intent shared (IS)
      • intent exclusive (IX)
      • shared with intent exclusive (SIX)
      • intent update (IU)
      • update intent exclusive (UIX)
      • shared intent update (SIU)
    • Schema
      • schema modification (Sch-M)
      • schema stability (Sch-S)
    • Bulk Update (BU)
    • Key-Range
      • Shared Key-Range and Shared Resource lock (RangeS_S)
      • Shared Key-Range and Update Resource lock (RangeS_U)
      • Insert Key-Range and Null Resource lock (RangeI_N)
      • Exclusive Key-Range and Exclusive Resource lock (RangeX_X)
      • Conversion Locks (RangeI_S, RangeI_U, RangeI_X, RangeX_S, RangeX_U)

Разве этот тип вопроса не должен принадлежать сообществу? Я имею в виду, потому что это похоже на большую работу, чтобы ответить. Но это всего лишь предложение.

Sep 19, 2008, 10:18 AMот

согласен с Серхио, хотя, если его отредактирует достаточно представительный член, это будет публикация сообщества. больше людей смогут внести свой вклад, если ФП сделает это на основе сообщества.

Sep 19, 2008, 11:01 AMот

3ответа

6

Блокировки намерений размещаются на уровне таблицы и указывают на то, что транзакция установит соответствующие блокировки для некоторых строк в таблице.

Это ускоряет проверку конфликтов для транзакций, которым необходимо установить блокировки на уровне таблицы. Например, транзакция, нуждающаяся в исключительной блокировке таблицы, может обнаружить конфликт на уровне таблицы (там будет «намеренная общая» блокировка) вместо необходимости проверять все строки (или страницы) на наличие общих блокировок.

1

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

12

Страница MSDN сервера MSDN имеет разумное объяснение:

An intent lock indicates that SQL Server wants to acquire a shared (S) lock or exclusive (X) lock on some of the resources lower down in the hierarchy. For example, a shared intent lock placed at the table level means that a transaction intends on placing shared (S) locks on pages or rows within that table. Setting an intent lock at the table level prevents another transaction from subsequently acquiring an exclusive (X) lock on the table containing that page. Intent locks improve performance because SQL Server examines intent locks only at the table level to determine if a transaction can safely acquire a lock on that table. This removes the requirement to examine every row or page lock on the table to determine if a transaction can lock the entire table.

RelatedQuestions