SQL Server误区30日谈 第2天 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
但是在默认情况下,自从SQL SERVER 2000之后,DBCC CHECKDB不会再产生阻塞。
如果想了解更多内幕消息,你可以阅读下面的文章:
在SQL Server 2000中,这个命令阻止事务日志截断将会导致日志不正常增长的相关问题,但对于SQL Server 2005来说,这个命令就会导致快照相关的问题(具体请看上面的链接)。
在SQL Server 7.0以及之前的版本中,DBCC CHECKDB命令的本质是C语言实现的一个不断嵌套循环的代码并对表加表锁(循环嵌套算法时间复杂度是嵌套次数的N次方,作为程序员的你懂得),这种方式并不和谐,并且…..
现在,在任何SQL Server版本中,如果你依然使用WITH TABLOCK提示,那将会产生表锁来保证事务的一致性。但我不推荐这种方式。因为这种方式不仅需要更长的时间,还将会尝试对数据库加排他锁,但已经活动在数据库的连接有可能导致这种方式失败。
在SQL Server 2005时代,一个叫Paul Randal的家伙(译者:也就是本文作者)再次重写了DBCC CHECKDB命令。这次使用数据库快照来检查一致性(因为数据库快照会提供在数据库某一特定时间点的一致性视图),因此不再有事务日志的分析代码,不再有任何的锁--因为访问数据库快照不需要对原数据库加任何的锁,缓冲池会自动处理可能出现的资源争用。
Diskeeper 10 Intelliwrite corruption bug
Do transactions rollback when DBCC CHECKDB runs?
在SQL Server 2000时代,一个叫Steve Lindell的哥们(现在仍然在SQL Server Team)使用分析事务日志的方法来检查数据库的一致性的方式重写了DBCC CHECKDB命令。DBCC CHECKDB会阻止截断日志。当将日志从头读到尾时,在事务日志内部进行了某种Recovery操作,这实际上是另一种全新的实现Recovery的代码,但是仅限于CHECKDB命令内部。但这种方式依然存在问题,比如这个命令存在检查失败的可能性,如果检查失败,你还需要重新执行它看是否还会出现同样的错误。并且有时候,这个命令还会使用SCH_S锁,索然这个锁仅仅阻塞表扫描和表构架的改变,但通过日志来检查一致性的代码也并不是尽善尽美,并且…..
误区 #2: DBCC CHECKDB会引起阻塞,因为这个命令默认会加锁
Issues around DBCC CHECKDB and the use of hidden database snapshots
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/sql/mssql/2490.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
sql server 关于设置null的一
时间:2020-12-28
-
详解SQL游标的用法
时间:2020-12-27
-
vs code连接sql server数据库步
时间:2020-12-27
-
图书管理系统的sqlserver数
时间:2020-12-25
-
详解SQL 通配符
时间:2020-12-25
-
sql四大排名函数之ROW_NUM
时间:2020-12-25
-
SQLServer数据库处于恢复挂
时间:2020-12-24
-
Win10 64位安装个人版SQL20
时间:2020-12-24
热门文章
-
sqlserver中查询横表变竖表的sql语句简析
时间:2020-12-08
-
关于SQL Server查询语句的使用
时间:2020-12-13
-
SQL Server简单模式下误删除堆表记录恢复方
时间:2020-12-12
-
MSSQL教程_mssql数据库教程_MSSQL基础教程_第
时间:2020-12-13
-
详解SQL游标的用法
时间:2020-12-27
-
sql server 关于设置null的一些建议
时间:2020-12-28
-
jdbc连接sql server数据库问题分析
时间:2020-12-10
-
mssql关于一个表格结构的另外一种显示(表
时间:2020-12-11
-
SQL Server数据库入门学习总结
时间:2020-12-10
-
使用SqlBulkCopy时应注意Sqlserver表中使用缺
时间:2020-12-09
