Sql-Server

禁用頁面鎖定的風險

  • July 25, 2014

在另一個問題中,使用者詢問如何強制行級鎖定。他收到的答案告訴他們如何通過更改表和索引來強制行級鎖定。回答這個問題的使用者也提到了阻止索引重組的副作用。

我想知道的是是否有人可以進一步解釋這種副作用,因為我們擔心如果強制行級鎖定的副作用符合我們的想法,那麼插入和刪除的表可能會隨著時間的推移而變慢確實如此。

原帖:

如何強制使用行鎖?

提前謝謝了

在引用的連結中如何強制使用行鎖?Paul White 展示瞭如果索引禁用了頁鎖,則不會發生索引重組。

當然,您可以在進行重組之前重新打開頁面鎖定,然後再將其關閉:

-- Allow page locks on Index
ALTER INDEX indexname ON tablename SET (ALLOW_PAGE_LOCKS = ON);

對於它的價值,為了回答這個問題https://stackoverflow.com/questions/3114826/is-it-possible-to-force-row-level-locking-in-sql-server Remus Rusanu 給出了關於禁用索引上的頁面鎖定。但他也評論說:“我永遠不會在我的數據庫上關閉此功能。解決方案始終是正確設計架構和查詢,以便一開始就不會發生掃描(這是升級的罪魁禍首)。”

這並不意味著禁用頁面鎖定是錯誤的,但它指出還有其他方法可以解決該問題。

您也可能有興趣閱讀關於鎖升級(SQL Server 2008 R2 是我能找到的最新文件):http://technet.microsoft.com/en-us/library/ms184286(v=sql.105) .aspx

引用自:https://dba.stackexchange.com/questions/72369