2008-09-19 3 views
9

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

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

  • Shared (S)
    • Update (U)
    • Exclusive (X)
    • Намерение
      • намерение совместно (IS)
      • намерения эксклюзивные (IX)
      • с эксклюзивным эксклюзивом (SIX)
      • намерение обновления (IU)
      • Намерение обновление эксклюзивные (UIX)
      • разделяет цель обновления (ССО)
    • Схема
      • модификация схемы (Sch-M)
      • устойчивости схемы (Sch-S)
    • Массовое обновление (BU)
    • Key-Range
      • Shared Key-Range и замок Shared Resource (RangeS_S)
      • Shared Key-Range и ресурсосбережение Update замок (RangeS_U)
      • Insert Key-Range и блокировка Null ресурсов (RangeI_N)
      • Эксклюзивный замок Ключ-Range и Exclusive ресурсов (RangeX_X)
      • Замки Conversion (RangeI_S, RangeI_U, RangeI_X, RangeX_S, RangeX_U)
+0

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

ответ

6

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

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

11

SQL server MSDN page имеет разумное объяснение:

намерение блокировки указывает, что SQL Server хочет получить общую (S) блокировку или эксклюзивного (X) блокировку на некоторых ресурсах ниже в иерархии.Например, блокировка общего намерения, размещенная на уровне таблицы, означает, что транзакция намеревается размещать блокировки общего доступа (S) на страницах или строках в этой таблице. Установка блокировки намерения на уровне таблицы предотвращает последующую транзакцию другой транзакции с исключительной (X) блокировкой в ​​таблице, содержащей эту страницу. Блокировки Intent повышают производительность, поскольку SQL Server проверяет блокировки намерений только на уровне таблицы, чтобы определить, может ли транзакция безопасно получить блокировку в этой таблице. Это устраняет необходимость проверки каждой строки или блокировки страницы в таблице, чтобы определить, может ли транзакция заблокировать всю таблицу.

1

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

Смежные вопросы