名站网址导航为大家提供关于数据库教程相关的教程网站知识。
SQL Server误区30日谈 第2天 DBCC ChECKDB会导致阻塞
误区 #2: DBCC ChECKDB会引起阻塞,因为这个开始执行命令默认会加锁,这是错误的!,在SQL Server 7.0以及之前的版本中,DBCC ChECKDB开始执行命令的本质是C语言实现的一个不断嵌套循环的具体相关代码并对表加表锁(循环嵌套算法时间复杂度是嵌套次数的N次方,作为程序员的您懂得),这种,在SQL Server 2000时代,一个叫Steve Lindell的哥们(现在仍然在SQL Server Team)使用分析事务日志的具体相关方法来检查网站数据库的一致性的相关方式重写了DBCC ChECKDB命,在SQL Server 2005时代,一个叫Paul Randal的家伙(译者:也就是本文作者)再次重写了DBCC ChECKDB开始执行命令。这次使用网站数据库快照来检查一致性(因为网站数据库快照会提供在网站数据库某一,假如如果想了解更多内幕消息,您可以阅读下面的文章:,现在,在任何SQL Server版本中,假如如果您依然使用WITh TABLOCK提示,那将会产生表锁来保证事务的一致性。但我不推荐这种相关方式。因为这种相关方式不仅需要更长的时间,还将会尝试对网站数据库加排他锁,但,在SQL Server 2000中,这个开始执行命令阻止事务日志截断将会导致日志不正常增长的相关问题,但对于SQL Server 2005来说,这个开始执行命令就会导致快照相关的问题(具体请看上面的链接)。,但是在默认情况下,自从SQL SERVER 2000之后,DBCC ChECKDB不会再产生阻塞。
本系列文章是我在sqlskill.com的PAUL的博客看到的,很多误区都比较具有典型性和代表性,原文来自T-SQL Tuesday #11: Misconceptions about.... EVERYThING!!,经过咱们团队的翻译和整理发布在AgileSharp和博客园上。希望对大家有所帮助。
误区 #3: 即时网站网站文件初始化特性可以在SQL Server中 a)开启 和 b)关闭
a)是不允许的 b)是允许的
即时网站网站文件初始化是一个在SQL Server 2005以及之上的版本鲜为人知的特性。这个特性允许数据网站网站文件(仅仅是数据网站网站文件,不包括日志网站网站文件)初始化的过程跳过填0初始化过程。这种相关方式是在发生灾难时大大减少Downtime的好办法---在恢复网站数据库时由于免去了填0初始化的过程而直接开始恢复过程。
我之前已经写过关于即时网站网站文件初始化误区的文章了(见Misconceptions around instant initialization),但这并没有谈到这方面误区。
您并不能在SQL Server中开启这个特性。在SQL Server启动时会检查启动SQL Server的账户是否拥有适当的Windows权限(也就是“执行卷维护任务”这个权限),当启动SQL Server实例的账户拥有这个权限后,这个特性就会针对这个实例开启,见图1.Kimberly有一篇关于讲述如何开启这个特性细节的文章Instant Initialization - What, Why, and how。
您可以在SQL Server中通过追踪标志1806设置为ON来暂时停止即时网站网站文件初始化特性。假如如果您想永久的禁止这个特性,请把启动SQL Server账户中”执行卷维护任务”这个权限删除。
这两个追踪标志是在SQL Server Premier Field Engineer Blog和how and Why to Enable Instant File Initialization这两篇博文中首次被提到的。
假如如果可以的话,尽量打开这个特性。
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。