濮阳杆衣贸易有限公司

主頁 > 知識庫 > SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會導致阻塞

SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會導致阻塞

熱門標簽:南京電銷外呼系統(tǒng)運營商 400電話申請需要開戶費嗎 西安青牛防封電銷卡 智能語音外呼系統(tǒng)哪個牌子好 山西語音外呼系統(tǒng)價格 北京辦理400電話多少 重慶防封電銷機器人供應商 威海智能語音外呼系統(tǒng) 溫州語音外呼系統(tǒng)代理

誤區(qū) #2: DBCC CHECKDB會引起阻塞,因為這個命令默認會加鎖

這是錯誤的!

    在SQL Server 7.0以及之前的版本中,DBCC CHECKDB命令的本質是C語言實現的一個不斷嵌套循環(huán)的代碼并對表加表鎖(循環(huán)嵌套算法時間復雜度是嵌套次數的N次方,作為程序員的你懂得),這種方式并不和諧,并且…..

    在SQL Server 2000時代,一個叫Steve Lindell的哥們(現在仍然在SQL Server Team)使用分析事務日志的方法來檢查數據庫的一致性的方式重寫了DBCC CHECKDB命令。DBCC CHECKDB會阻止截斷日志。當將日志從頭讀到尾時,在事務日志內部進行了某種Recovery操作,這實際上是另一種全新的實現Recovery的代碼,但是僅限于CHECKDB命令內部。但這種方式依然存在問題,比如這個命令存在檢查失敗的可能性,如果檢查失敗,你還需要重新執(zhí)行它看是否還會出現同樣的錯誤。并且有時候,這個命令還會使用SCH_S鎖,索然這個鎖僅僅阻塞表掃描和表構架的改變,但通過日志來檢查一致性的代碼也并不是盡善盡美,并且…..

    在SQL Server 2005時代,一個叫Paul Randal的家伙(譯者:也就是本文作者)再次重寫了DBCC CHECKDB命令。這次使用數據庫快照來檢查一致性(因為數據庫快照會提供在數據庫某一特定時間點的一致性視圖),因此不再有事務日志的分析代碼,不再有任何的鎖--因為訪問數據庫快照不需要對原數據庫加任何的鎖,緩沖池會自動處理可能出現的資源爭用。

   

    如果想了解更多內幕消息,你可以閱讀下面的文章:

  • CHECKDB From Every Angle: Complete description of all CHECKDB stages

  • CHECKDB From Every Angle: Why would CHECKDB run out of space?

  • Database snapshots - when things go wrong

  • Issues around DBCC CHECKDB and the use of hidden database snapshots

  • Do transactions rollback when DBCC CHECKDB runs?

  • Diskeeper 10 Intelliwrite corruption bug

    現在,在任何SQL Server版本中,如果你依然使用WITH TABLOCK提示,那將會產生表鎖來保證事務的一致性。但我不推薦這種方式。因為這種方式不僅需要更長的時間,還將會嘗試對數據庫加排他鎖,但已經活動在數據庫的連接有可能導致這種方式失敗。

    在SQL Server 2000中,這個命令阻止事務日志截斷將會導致日志不正常增長的相關問題,但對于SQL Server 2005來說,這個命令就會導致快照相關的問題(具體請看上面的鏈接)。

    但是在默認情況下,自從SQL SERVER 2000之后,DBCC CHECKDB不會再產生阻塞。

您可能感興趣的文章:
  • SqlServer中如何解決session阻塞問題
  • mysql的udf編程之非阻塞超時重傳
  • sql server 2000阻塞和死鎖問題的查看與解決方法
  • 利用sys.sysprocesses檢查SqlServer的阻塞和死鎖
  • SQL2008中SQL應用之-阻塞(Blocking)應用分析
  • sqlserver中幾種典型的等待
  • SQL語句實現查詢當前數據庫IO等待狀況
  • SQL語句練習實例之三——平均銷售等待時間
  • 系統(tǒng)隱形殺手——阻塞與等待(SQL)

標簽:貸款群呼 金昌 河源 中衛(wèi) 新余 黃山 濟寧 宜春

巨人網絡通訊聲明:本文標題《SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會導致阻塞》,本文關鍵詞  SQL,Server,誤區(qū),30日談,第,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會導致阻塞》相關的同類信息!
  • 本頁收集關于SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會導致阻塞的相關信息資訊供網民參考!
  • 推薦文章
    大兴区| 滨州市| 土默特右旗| 鸡西市| 荔浦县| 张家川| 望谟县| 丰原市| 正蓝旗| 大埔区| 山西省| 泾源县| 广饶县| 义乌市| 海晏县| 霸州市| 阜宁县| 海南省| 突泉县| 正宁县| 应用必备| 杭州市| 台北市| 建湖县| 栾川县| 祁连县| 临城县| 屯门区| 乌什县| 四平市| 军事| 溧水县| 舒兰市| 江城| 双流县| 叙永县| 吉林省| 紫阳县| 星子县| 宕昌县| 怀宁县|