SQL Server誤區(qū)30日談 第23天 有關鎖升級的誤區(qū)
發(fā)布日期:2022-01-07 14:29 | 文章來源:CSDN
誤區(qū) #23: 鎖升級的過程是由行鎖升級到頁鎖,再由頁鎖升級到表鎖
錯誤
實際不是,在SQL Server 2005和之前的版本,頁鎖會直接升級到表鎖。
在SQL Server 2005或SQL Server 2008,你可以通過如下跟蹤標志改變鎖升級的行為: 標志1211-完全禁止鎖升級,但鎖使用的內存會被限制在動態(tài)分配內存的60%,當超過這個值時,更多的鎖將會伴隨著內存溢出錯誤而失敗。
錯誤
實際不是,在SQL Server 2005和之前的版本,頁鎖會直接升級到表鎖。
在SQL Server 2005或SQL Server 2008,你可以通過如下跟蹤標志改變鎖升級的行為: 標志1211-完全禁止鎖升級,但鎖使用的內存會被限制在動態(tài)分配內存的60%,當超過這個值時,更多的鎖將會伴隨著內存溢出錯誤而失敗。
- 標志1224-禁止鎖升級,但內存使用超過40%時,會自動開啟鎖升級
- AUTO:如果存在表分區(qū),則升級為分區(qū)鎖,但不會進一步升級。
- DISABLE:禁用鎖升級,這并不意味著禁用表鎖,就像BOL(Books Online entry)中所說,在序列化隔離等級的條件下進行表掃描等操作時還需要表鎖。
在2008年1月的時候,我寫了一篇包含分區(qū)鎖例子的博文,請看:SQL Server 2008: Partition-level lock escalation details and examples。
或許你會想為什么LOCK_ESCALATION = XXX設置中AUTO不是默認值,這時因為早期測試中某些人發(fā)現這個選項更容易引起死鎖。就像對于上述兩個有關鎖的跟蹤標記一樣,對于這個選項設置為AUTO也同樣需要謹慎。
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯系alex-e#qq.com處理。
相關文章