程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL Server誤區30日談 第23天 有關鎖進級的誤區

SQL Server誤區30日談 第23天 有關鎖進級的誤區

編輯:MSSQL

SQL Server誤區30日談 第23天 有關鎖進級的誤區。本站提示廣大學習愛好者:(SQL Server誤區30日談 第23天 有關鎖進級的誤區)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server誤區30日談 第23天 有關鎖進級的誤區正文


誤區 #23: 鎖進級的進程是由行鎖進級到頁鎖,再由頁鎖進級到表鎖
毛病
    現實不是,在SQL Server 2005和之前的版本,頁鎖會直接進級到表鎖。
    在SQL Server 2005或SQL Server 2008,你可以經由過程以下跟蹤標記轉變鎖進級的行動:

標記1211-完整制止鎖進級,但鎖應用的內存會被限制在靜態分派內存的60%,當跨越這個值時,更多的鎖將會隨同著內存溢失足誤而掉敗。
  • 標記1224-制止鎖進級,但內存應用跨越40%時,會主動開啟鎖進級
    假如標記1211和1224跟蹤標記同時被設置了,只要標記1211會失效。更具體的內容請看Books Online。

    在SQL Server 2008中,還可以以表為單元停止鎖行動的設置,可以經由過程ALTER TABLE blah SET (LOCK_ESCALATION = XXX),在這個敕令中XXX所代表的是上面幾項中的一項:

TABLE: 直接從行鎖進級到表鎖。

  • AUTO:假如存在表分區,則進級為分區鎖,但不會進一步進級。

  • DISABLE:禁用鎖進級,這其實不意味著禁用表鎖,就像BOL(Books Online entry)中所說,在序列化隔離品級的前提下停止表掃描等操作時還須要表鎖。

        在2008年1月的時刻,我寫了一篇包括分區鎖例子的博文,請看:SQL Server 2008: Partition-level lock escalation details and examples。
        也許你會想為何LOCK_ESCALATION = XXX設置中AUTO不是默許值,這時候由於晚期測試中某些人發明這個選項更輕易惹起逝世鎖。就像關於上述兩個有關鎖的跟蹤標志一樣,關於這個選項設置為AUTO也異樣須要謹嚴。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved