主頁 > 知識庫 > SQL Server誤區(qū)30日談 第23天 有關(guān)鎖升級的誤區(qū)

SQL Server誤區(qū)30日談 第23天 有關(guān)鎖升級的誤區(qū)

熱門標(biāo)簽:呼叫中心市場需求 地方門戶網(wǎng)站 鐵路電話系統(tǒng) 百度競價(jià)排名 服務(wù)外包 網(wǎng)站排名優(yōu)化 AI電銷 Linux服務(wù)器
誤區(qū) #23: 鎖升級的過程是由行鎖升級到頁鎖,再由頁鎖升級到表鎖
錯誤
    實(shí)際不是,在SQL Server 2005和之前的版本,頁鎖會直接升級到表鎖。
    在SQL Server 2005或SQL Server 2008,你可以通過如下跟蹤標(biāo)志改變鎖升級的行為:

標(biāo)志1211-完全禁止鎖升級,但鎖使用的內(nèi)存會被限制在動態(tài)分配內(nèi)存的60%,當(dāng)超過這個值時,更多的鎖將會伴隨著內(nèi)存溢出錯誤而失敗。
  • 標(biāo)志1224-禁止鎖升級,但內(nèi)存使用超過40%時,會自動開啟鎖升級
    如果標(biāo)志1211和1224跟蹤標(biāo)志同時被設(shè)置了,只有標(biāo)志1211會生效。更詳細(xì)的內(nèi)容請看Books Online。

    在SQL Server 2008中,還可以以表為單位進(jìn)行鎖行為的設(shè)置,可以通過ALTER TABLE blah SET (LOCK_ESCALATION = XXX),在這個命令中XXX所代表的是下面幾項(xiàng)中的一項(xiàng):

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

  • AUTO:如果存在表分區(qū),則升級為分區(qū)鎖,但不會進(jìn)一步升級。

  • DISABLE:禁用鎖升級,這并不意味著禁用表鎖,就像BOL(Books Online entry)中所說,在序列化隔離等級的條件下進(jìn)行表掃描等操作時還需要表鎖。

        在2008年1月的時候,我寫了一篇包含分區(qū)鎖例子的博文,請看:SQL Server 2008: Partition-level lock escalation details and examples。
        或許你會想為什么LOCK_ESCALATION = XXX設(shè)置中AUTO不是默認(rèn)值,這時因?yàn)樵缙跍y試中某些人發(fā)現(xiàn)這個選項(xiàng)更容易引起死鎖。就像對于上述兩個有關(guān)鎖的跟蹤標(biāo)記一樣,對于這個選項(xiàng)設(shè)置為AUTO也同樣需要謹(jǐn)慎。
您可能感興趣的文章:
  • 圖解MYSQL的安裝和數(shù)據(jù)升級
  • MySQL 升級方法指南大全
  • mysql4.0升級到mysql5(4.1),解決字符集問題
  • MySQL 4.0 升級到mysql 5.0的方法
  • SQLServer 2000 升級到 SQLServer 2008 性能之需要注意的地方之一
  • 基于SQL2005 SQL2008 表結(jié)構(gòu)信息查詢升級版的詳解(含外鍵信息)
  • 詳細(xì)講解安全升級MySQL的方法
  • 升級SQL Server 2014的四個要點(diǎn)要注意

標(biāo)簽:湖南 崇左 蘭州 銅川 黃山 湘潭 仙桃 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server誤區(qū)30日談 第23天 有關(guān)鎖升級的誤區(qū)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266