SQL Server 2000优化之高级篇
一、优化索引
可以使用的SQL Server 2000的索引优化向导来优化你的索引,可以通过SQL Server2000安装目录中的“事件控查器”程序来访问索引优化向导。
二、数据与索引碎片情况
SQL Server 2000中提供了一个命令,用于供用户查询指定的表的数据和索引的碎片信息,命令名DBCC SHOWCONTIG,该命令的详细用法请参考Microsoft的Transact-SQL 参考。
显示索引碎片时会要求指定索引的ID,可以使用OBJECT_ID函数获得表ID,可以再通过表ID查询系统表sysindexes 获得索引 ID。
三、整理索引碎片
一般有两种方法解决,一是利用DBCC INDEXDEFRAG整理索引碎片,二是利用DBCC DBREINDEX重建索引。二者各有优缺点。
调用微软的原话如下:
DBCC INDEXDEFRAG 命令是联机操作,所以索引只有在该命令正在运行时才可用。而且可以在不丢失已完成工作的情况下中断该操作。这种方法的缺点是在重新组织数据方面没有聚集索引的除去/重新创建操作有效。
重新创建聚集索引将对数据进行重新组织,其结果是使数据页填满。填满程度可以使用 FILLFACTOR 选项进行配置。这种方法的缺点是索引在除去/重新创建周期内为脱机状态,并且操作属原子级。如果中断索引创建,则不会重新创建该索引。
具体使用何种方式还需要根据实际情况决定,DBCC INDEXDEFRAG与DBCC DBREINDEX的详细用法请参考Microsoft的Transact-SQL 参考。
四、数据碎片的整理
1、简单整理
停止数据库服务使用Windows自带的碎片整理程序即可。
2、精确整理
您可以备份数据库然后还原它。如果存在能够容纳连续文件的空间,则会连续地写入数据库。也就是说,正常情况下没有必要停机尝试整理物理文件。通常不会存在很多外部碎片。更有效的做法是定期对数据重新编制索引,以尽可能减少内部碎片。这将在最大程度上提高预读的效率和缓冲的数据量。
五、减少数据碎片的方法
使磁盘 I/O 高效的最重要因素有:
确保磁盘对齐以及 RAID 配置正确,调整磁盘阵列以正确处理 I/O 负载,以及维护日志、数据、TempDB 和备份文件的正确布局。如果您避免使用自动增长和自动缩减作为调整数据文件大小的主要方法,就会减少所创建的卷级文件碎片的数量。例如,每执行 10 个 500MB 的自动增长,可能会增加 10 个新物理文件碎片。相比之下,手动增长5GB 仅添加一个碎片。
六、其他注意事项
1、主键
主键是一个聚集索引,进行索引碎片整理时,不要忘记整理主键对应索引。主键的索引的ID,可以使用OBJECT_ID函数获得表ID,再通过表ID查询系统表sysindexes 获得主键对应的索引ID。
2、收缩数据库操作
收缩数据库操作会产生碎片,所以应该尽量的少的进行收缩数据库操作。
暂时只想起这么多了,以后有空再慢慢添加吧。