日期:2014-05-18  浏览次数:20451 次

mssql 2000 更新统计与重建索引区别
请问高手 在 MS SQL2000 维护计划中 最佳化操作 更新统计与重建索引区别
还有我的SQL2000维护计划中为什么不支持日志传送功能 我看网上都有介绍的! 而我的没有啊 谢谢俄

------解决方案--------------------
更新统计是更新保存在系统表中的数据库对象的统计信息,比如表的行数、页的填充率等等,而重建索引就是删除旧索引,根据表中的最新数据重新建立索引。
------解决方案--------------------
重建表的索引:
注释
DBCC DBREINDEX 重建表的索引或为表定义的所有索引。通过允许动态重建索引,可以重建强制 PRIMARY KEY 或 UNIQUE 约束的索引,而不必除去并重新创建这些约束。这意味着不必知道表的结构或约束就可以重建索引,将数据大容量复制到表中后就会出现这种情况。 

如果指定 index_name 或 fillfactor,还必须指定以前所有的参数。

DBCC DBREINDEX 可以使用一条语句重建表的所有索引,这比对多个 DROP INDEX 和 CREATE INDEX 语句进行编码容易。由于该工作是通过一条语句完成的,所以 DBCC DBREINDEX 自动为原子性,而单个 DROP INDEX 和 CREATE INDEX 语句要成为原子性则必须放在事务中。另外,与使用单个 DROP INDEX 和 CREATE INDEX 语句相比,DBCC DBREINDEX 可从 DBCC DBREINDEX 的优化性能中更多地获益。

不支持在系统表上使用 DBCC DBREINDEX。



碎片整理:
注释
DBCC INDEXDEFRAG 可以对表或视图上的索引和非聚集索引进行碎片整理。DBCC INDEXDEFRAG 对索引的叶级进行碎片整理,以便页的物理顺序与叶节点从左到右的逻辑顺序相匹配,从而提高索引扫描性能。

DBCC INDEXDEFRAG 还压缩索引页,并在压缩时考虑创建索引时指定的 FILLFACTOR。此压缩所产生的任何空页都将删除。有关 FILLFACTOR 的更多信息,请参见 CREATE INDEX。

如果索引跨越多个文件,则 DBCC INDEXDEFRAG 一次对一个文件进行碎片整理。页不在文件之间迁移。 

DBCC INDEXDEFRAG 每隔 5 分钟向用户报告预计完成的百分比。可在进程中的任一点结束 DBCC INDEXDEFRAG,任何已完成的工作都将保留。

与 DBCC DBREINDEX(一般的索引生成操作)不同,DBCC INDEXDEFRAG 是联机操作。它不长期控制锁,因此不会防碍运行查询或更新。若索引的碎片相对较少,则整理该索引的速度比生成一个新索引要快,这是因为碎片整理所需的时间与碎片的数量有关。对碎片太多的索引进行整理可能要比重建花更多的时间。另外,始终对碎片整理进行完整的日志记录,与数据库恢复模型设置无关(请参见 ALTER DATABASE)。对碎片太多的索引进行整理所生成的日志记录可能比完全记录的索引创建还要多。然而,若需经常进行日志备份或如果恢复模型设置是 SIMPLE,碎片整理将作为一系列短事务执行,因此不需要大量的日志。 

另外,如果两个索引在磁盘上交叉存取事务,DBCC INDEXDEFRAG 将没有作用,原因是 INDEXDEFRAG 打乱了已有的页。若要改善页的聚集,请重建索引。

不支持在系统表上使用 DBCC INDEXDEFRAG。