2008-09-19 60 views
9

下面是SQL Server 2000旨在支持的鎖的列表。對於「意圖」鎖實際上意味着什麼,我有點困惑。我在網上看了一下,答案似乎有點神祕。解釋SQL Server鎖

除了獲得我的具體問題的答案,我希望將這個問題用作維基,以瞭解每個鎖的含義,以及在什麼情況下會獲得這種類型的鎖。

  • 共享(S)
    • 更新(U)
    • 互斥(X)
    • 意圖
      • 意向共享(IS)
      • 意向排(IX)
      • 與intent exclusive共享(SIX)
      • 意圖更新(IU)
      • 更新意圖獨佔(UIX)
      • 共享意圖更新(SIU)
    • 架構
      • 架構修改(Sch-M)
      • 架構穩定性( Sch-S)
    • 批量更新(BU)
    • 鍵範圍
      • 共享鍵範圍和共享資源的鎖(RangeS_S)
      • 共享鍵範圍和更新資源鎖(RangeS_U)
      • 插入鍵範圍和空資源鎖(RangeI_N)
      • 專屬鍵範圍和獨佔資源鎖(RangeX_X)
      • 轉換鎖(RangeI_S,RangeI_U,RangeI_X,RangeX_S,RangeX_U)
+0

此類問題不應該由社區擁有嗎?我的意思是,因爲它看起來有很多工作要回答。但這只是一個建議。 – 2008-09-19 10:18:09

回答

6

意向鎖放置在表級別上,並指示事務將在表中的某些行上放置適當的鎖。

這加快了對需要在表級鎖定的事務的衝突檢查。例如,需要對錶進行排它鎖定的事務可以檢測表級別的衝突(「意向共享」鎖定將在那裏),而不必檢查共享鎖的所有行(或頁面)。

11

SQL server MSDN page有一個合理的解釋:

意向鎖表示SQL Server有意收購一些資源的低了下去層次結構中的共享(S)鎖或排它(X)鎖。例如,放置在表級別的共享意向鎖意味着事務意圖將共享(S)鎖放置在該表內的頁面或行上。在表級別設置意向鎖可防止其他事務隨後在包含該頁的表上獲取獨佔(X)鎖。意圖鎖可以提高性能,因爲SQL Server僅在表級別檢查意向鎖以確定事務是否可以安全地獲取該表上的鎖。這消除了檢查表上的每個行或頁面鎖以確定事務是否可以鎖定整個表的要求。

1

的意向鎖的另一個重要特點是,你不要」 t明確地將它們放在代碼中,當您放置非意圖鎖時,它們會被隱式請求。