-
SQLServer误区30日谈第25天有关填充因子的误区
误区#25:多个有关填充因子的误区 都是错误的25a)填充因子是一直存在的 不是的,通过BooksOnline可以看到(译者:我在新版的BOL没有找到这句话):重要:填充因子仅仅在索引创建或重建时生效,SQLServer存储引擎并不会一直保证页内的空闲值和填充因子保持一致。如果为了保证页内的空余值和指定的填充因子保持一直那么填充因子就会失去意义...
数据库操作教程 2022-09-23 17:04:53 -
SQLServer误区30日谈第2天DBCCCHECKDB会导致阻塞
误区#2:DBCCCHECKDB会引起阻塞,因为这个命令默认会加锁这是错误的! 在SQLServer7.0以及之前的版本中,DBCCCHECKDB命令的本质是C语言实现的一个不断嵌套循环的代码并对表加表锁(循环嵌套算法时间复杂度是嵌套次数的N次方,作为程序员的你懂得),这种方式并不和谐,并且….. 在SQLServer2000时代,一个叫SteveLindell的哥们(现在仍然在SQLServerTeam)使用分析事务日志的方法来检查数据库的一致性的方式重写了DBCCCHECKDB命令。DBCCCHECKDB会阻止截断日志...
数据库操作教程 2022-09-23 17:04:37 -
SQLServer误区30日谈第17天有关页校验和的误区
其实我之前已经有文章详细解释了页校验和:HowtotelliftheIOsubsystemiscausingcorruptions?误区#17:几个有关页校验和的误区坊间流传的基本是错误的 17a)页校验和(PageCheckSum)在从SQLServer2000或7.0升级上来之后自动开启 其实不是,从旧的实例升级上来的数据库不会自动开启页校验和,除非你显式使用ALTERDATABASEdatabasenameSETPAGE_VERIFYCHECKSUM进行开启。而在SQLServer2005或2008新建的数据库页校验和是默认开启的...
数据库操作教程 2022-09-23 17:04:11 -
SQLServer误区30日谈第22天资源调控器可以调控IO
误区#22:资源调控器可以调控IO错误 资源调控器无法调控IO,希望下一个版本的SQLServer支持调控IO,调控IO对于对于减少对于大表的scan操作带来的性能影响很有帮助。 下面列表中的功能资源调控器同样也无法完成:调控BufferPool的内存,内存调控器仅仅可以调控执行计划所占的内存,但对于BufferPool中缓存的数据页是无法调控的可以对多个实例进行当作一个逻辑实体进行资源调控...
数据库操作教程 2022-09-23 17:04:02 -
SQLServer误区30日谈第11天镜像在检测到故障后瞬间就能故障转移
误区#11:镜像在检测到故障后瞬间就能故障转移错误 数据库镜像的故障转移既可以自动发起,也可以手动发起。 在自动发起的情况下,是由镜像服务器执行故障转移操作(你没有看错,并不是由见证服务器来做故障转移的决定),在见证服务器和镜像服务器都发现无法和主体服务器交换信息(这个过程被称为”形成仲裁”,译者注:也就是通过程序对集群进行监管,集群可用的依据来自监管程序的算法,比如根据:每个节点的配置,文件共享情况,磁盘访问情况,每个节点的可用性等来确定集群是否可用)并且镜像方式是同步时,可以进行故障转移...
数据库操作教程 2022-09-23 17:03:54 -
SQLServer误区30日谈第24天26个有关还原(Restore)的误区
本系列文章一直所没有触及的就是有关”还原(Restore)”的话题,因为一旦牵扯到这个话题就会涉及大量的误区,多到我无法通过一篇文章说完的地步。事实上,我希望用字母表的顺序为每一个误区进行编号,希望你看了不要昏昏欲睡...
数据库操作教程 2022-09-23 17:03:52 -
SQLServer误区30日谈第20天破坏日志备份链之后,需要一个完整备份来重新开始日志链
误区#20:在破坏日志备份链之后,需要一个完整备份来重新开始日志链错误事务日志备份会备份自上次事务日志备份以来所有的事务日志(如果从来没有过日志备份的话,那就从上一次完整备份开始)。有好几种类型的操作会中断事务日志的连续性,也就是说除非重新开始新的日志链,SQLServer无法再进行日志备份...
数据库操作教程 2022-09-23 17:03:48 -
SQLServer误区30日谈第23天有关锁升级的误区
误区#23:锁升级的过程是由行锁升级到页锁,再由页锁升级到表锁错误 实际不是,在SQLServer2005和之前的版本,页锁会直接升级到表锁。 在SQLServer2005或SQLServer2008,你可以通过如下跟踪标志改变锁升级的行为:标志1211-完全禁止锁升级,但锁使用的内存会被限制在动态分配内存的60%,当超过这个值时,更多的锁将会伴随着内存溢出错误而失败...
数据库操作教程 2022-09-23 17:03:27 -
SQLServer误区30日谈第27天使用BACKUPWITHCHECKSUM可以替代DBCCCheckDB
误区#27:使用BACKUP...WITHCHECKSUM可以替代DBCCCheckDB错误 乍一看,由于BACKUPWITHCHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下: 由SQLServer2000或是更早版本升上来的数据库pagechecksums必须开启,在开启后,并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP...WITHCHECKSUM就有可能导致一些损坏页不被发现,造成的后果…… 除此之外,还有一个问题是完整备份的时间间隔相对比较长,假如说一个月,而相对于DBCCCheckDB的最佳实践是一个礼拜,这导致WITHCHECKSUM不能替代CHECKDB...
数据库操作教程 2022-09-23 17:03:22 -
SQLServer误区30日谈第29天有关堆碎片的误区
误区#29:可以通过对堆建聚集索引再DROP后进行堆上的碎片整理Nooooooooooooo!!! 对堆建聚集索引再DROP在我看来是除了收缩数据库之外最2的事了。 如果你通过sys.dm_db_index_physical_stats(或是老版本的DBCCSHOWCONTIG)看到堆上有碎片,绝对不要通过建立聚集索引再删除聚集索引来整理堆碎片...
数据库操作教程 2022-09-23 17:02:43 -
SQLServer误区30日谈第6天有关NULL位图的三个误区
这样还能减少CPU缓存命中失效的问题(点击这个链接来查看CPU的缓存是如何工作的以及MESI协议)。下面让我们来揭穿三个有关NULL位图的普遍误区...
数据库操作教程 2022-09-23 17:02:22 -
SQLServer误区30日谈第1天正在运行的事务在服务器故障转移后继续执行
误区#1:在服务器故障转移后,正在运行的事务继续执行这当然是错误的!每次故障转移都伴随着某种形式的恢复。但是如果当正在执行的事务没有Commit时,由于服务器或实例崩溃导致连接断开,SQLServer可没有办法在故障转移后的服务器重新建立事务的上下文并继续执行事务-无论你使用的故障转移方式是集群,镜像,日志传送或是SAN复制...
数据库操作教程 2022-09-23 17:01:50