濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會(huì)導(dǎo)致阻塞

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

熱門標(biāo)簽:南京電銷外呼系統(tǒng)運(yùn)營(yíng)商 400電話申請(qǐng)需要開(kāi)戶費(fèi)嗎 西安青牛防封電銷卡 智能語(yǔ)音外呼系統(tǒng)哪個(gè)牌子好 山西語(yǔ)音外呼系統(tǒng)價(jià)格 北京辦理400電話多少 重慶防封電銷機(jī)器人供應(yīng)商 威海智能語(yǔ)音外呼系統(tǒng) 溫州語(yǔ)音外呼系統(tǒng)代理

誤區(qū) #2: DBCC CHECKDB會(huì)引起阻塞,因?yàn)檫@個(gè)命令默認(rèn)會(huì)加鎖

這是錯(cuò)誤的!

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

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

    在SQL Server 2005時(shí)代,一個(gè)叫Paul Randal的家伙(譯者:也就是本文作者)再次重寫了DBCC CHECKDB命令。這次使用數(shù)據(jù)庫(kù)快照來(lái)檢查一致性(因?yàn)閿?shù)據(jù)庫(kù)快照會(huì)提供在數(shù)據(jù)庫(kù)某一特定時(shí)間點(diǎn)的一致性視圖),因此不再有事務(wù)日志的分析代碼,不再有任何的鎖--因?yàn)樵L問(wèn)數(shù)據(jù)庫(kù)快照不需要對(duì)原數(shù)據(jù)庫(kù)加任何的鎖,緩沖池會(huì)自動(dòng)處理可能出現(xiàn)的資源爭(zhēng)用。

   

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

  • 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

    現(xiàn)在,在任何SQL Server版本中,如果你依然使用WITH TABLOCK提示,那將會(huì)產(chǎn)生表鎖來(lái)保證事務(wù)的一致性。但我不推薦這種方式。因?yàn)檫@種方式不僅需要更長(zhǎng)的時(shí)間,還將會(huì)嘗試對(duì)數(shù)據(jù)庫(kù)加排他鎖,但已經(jīng)活動(dòng)在數(shù)據(jù)庫(kù)的連接有可能導(dǎo)致這種方式失敗。

    在SQL Server 2000中,這個(gè)命令阻止事務(wù)日志截?cái)鄬?huì)導(dǎo)致日志不正常增長(zhǎng)的相關(guān)問(wèn)題,但對(duì)于SQL Server 2005來(lái)說(shuō),這個(gè)命令就會(huì)導(dǎo)致快照相關(guān)的問(wèn)題(具體請(qǐng)看上面的鏈接)。

    但是在默認(rèn)情況下,自從SQL SERVER 2000之后,DBCC CHECKDB不會(huì)再產(chǎn)生阻塞。

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會(huì)導(dǎo)致阻塞》,本文關(guān)鍵詞  SQL,Server,誤區(qū),30日談,第,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會(huì)導(dǎo)致阻塞》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會(huì)導(dǎo)致阻塞的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    阿拉善左旗| 新河县| 赤峰市| 虎林市| 孟连| 克拉玛依市| 前郭尔| 剑川县| 增城市| 黄冈市| 金秀| 平舆县| 镇巴县| 河东区| 颍上县| 余庆县| 白水县| 铁岭市| 莲花县| 陆川县| 遵义市| 苗栗市| 武乡县| 额济纳旗| 襄垣县| 奇台县| 唐山市| 固阳县| 汉阴县| 年辖:市辖区| 和田县| 黄大仙区| 滨州市| 搜索| 双牌县| 翁牛特旗| 新津县| 敦煌市| 磴口县| 天津市| 于田县|