科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[SQL Server]维护为SQL Server保驾护航(3)

[SQL Server]维护为SQL Server保驾护航(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

每个新发布的SQL Server都具有越来越多的自我维护能力,但是“安全比抱歉好得多”的原则仍然是正确的:实际的数据库管理包含了对系统和用户数据库进行的周期性维护,这样才能在你的用户发现问题之前把它解决掉。

作者:Baya Pavliashvili 来源:it专家网 2007年9月15日

关键字: 维护 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
 2、重建索引

  当数据行从表中INSERTED, UPDATED and DELETED的时候,索引就产生了碎片。碎片越多,索引的效率越低。数据库管理员必需确保碎片的级别很低或者根本不存在。碎片级别可以通过在某个索引上执行DBCC SHOWCONTIG语句来找到。

  这里有三种方法可以去掉碎片:

  1、 使用CREATE INDEX……WITH DROP EXISTING语句来删除并重新创建索引

  2、 执行DBCC DBREINDEX

  3、 执行DBCC INDEXDEFRAG

  DBCC DBREINDEX重新构建一个特定的索引或者某个特定的表上的所有的索引。这个语句允许强制PRIMARY KEY和UNIQUE约束的索引重新构建,而不需要删除约束。你不需要知道索引的类别和名称,你同样可以使用。使用DBCC DBREINDEX比单独为表上的每个索引编写DROP INDEX 和CREATE INDEX语句简单。时刻记住,重新构建聚簇索引也会引起非聚簇索引的重建。

  DBCC INDEXDEFRAG可以删除某个聚簇索引或者非聚簇索引的碎片。与DBCC DBREINDEX不同,这个语句需要指定某个特别的索引,并且不能运行在表上所有索引上。删除碎片也是一项在线操作,因此不会妨碍用户对表进行操作。DBCC INDEXDEFRAG给系统增加了额外的负担,因为它产生了额外的I/O负担。它还会影响到索引页面,并且会在压缩之后删除所有遗留的没有数据的页面。

  删除碎片的频率依赖于在你的数据库中,数据修改的级别。需要每天处理几百万个事务的系统应该至少每个星期都进行一次索引重建。另一方面,在几乎没有修改的数据库上,即使你每个月进行一次索引重建,数据库都会运行得不错。

  2、重建索引

  当数据行从表中INSERTED, UPDATED and DELETED的时候,索引就产生了碎片。碎片越多,索引的效率越低。数据库管理员必需确保碎片的级别很低或者根本不存在。碎片级别可以通过在某个索引上执行DBCC SHOWCONTIG语句来找到。

  这里有三种方法可以去掉碎片:

  1、 使用CREATE INDEX……WITH DROP EXISTING语句来删除并重新创建索引

  2、 执行DBCC DBREINDEX

  3、 执行DBCC INDEXDEFRAG

  DBCC DBREINDEX重新构建一个特定的索引或者某个特定的表上的所有的索引。这个语句允许强制PRIMARY KEY和UNIQUE约束的索引重新构建,而不需要删除约束。你不需要知道索引的类别和名称,你同样可以使用。使用DBCC DBREINDEX比单独为表上的每个索引编写DROP INDEX 和CREATE INDEX语句简单。时刻记住,重新构建聚簇索引也会引起非聚簇索引的重建。

  DBCC INDEXDEFRAG可以删除某个聚簇索引或者非聚簇索引的碎片。与DBCC DBREINDEX不同,这个语句需要指定某个特别的索引,并且不能运行在表上所有索引上。删除碎片也是一项在线操作,因此不会妨碍用户对表进行操作。DBCC INDEXDEFRAG给系统增加了额外的负担,因为它产生了额外的I/O负担。它还会影响到索引页面,并且会在压缩之后删除所有遗留的没有数据的页面。

  删除碎片的频率依赖于在你的数据库中,数据修改的级别。需要每天处理几百万个事务的系统应该至少每个星期都进行一次索引重建。另一方面,在几乎没有修改的数据库上,即使你每个月进行一次索引重建,数据库都会运行得不错。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章