3、更新统计数字
统计数据中包含了表中某个索引或者字段的数值分布的信息。你可以通过使用CREATE STATISTICS语句或者使用sp_createstatistics系统过程来创建统计数字。统计数字检索有关索引是否具有良好或者糟糕的选择性的信息,索引的选择性可以用来判断索引的效率是否足以满足查询的要求。当你创建索引的时候,SQL Server自动创建统计数字。此外,SQL Server还为那些没有定义索引的字段创建统计数字。
针对某个索引的统计数字可以通过使用DBCC SHOW_STATISTIC0S语句来查看。当数据发生改变的时候,统计数字就过时了。当选择索引来满足查询的时候,陈旧的统计数字会让SQL Server作出次优化的决定。
默认情况下,SQL Server 2000自动更新每个表上的统计数字。然而,在某些情况下,关闭统计数字的自动更新是有意义的。例如,我们假设你有某种类型的批处理例程,每个周末,系统具有最小利用率的时候,都会向你的表中添加上百万行数据。统计数字的自动更新只会降低你的批处理过程,而不会为系统带来任何好处。除了你可以在周末关闭自动更新,然后在每个周一早上首先更新统计数字之外,你还可以启用或者禁用统计数字的自动更新,通过使用sp_autostats过程。
如果你想要为单个的表或者索引更新统计数字,你可以使用UPDATE STATISTICS命令。或者你还可以执行sp_updatestats系统过程来更新当前数据库中所有表上的统计数字。
4、报告数据和日志文件中的空间利用率
也许你被要求扩展或者缩减一个数据文件或者事务日志文件的尺寸,那么这时候就可以使用DBCC SHRINKDATABASE 或者 DBCC SHRINKFILE命令了。
Sysindexes表在经过一段时间之后会变得不准确,特别是在增长频繁并且/或者缩减频繁的数据库中。DBCC UPDATEUSAGE命令报告并且纠正sysindexes表中不准确的数字。如果你认为你的数据库或者表的尺寸与sp_spaceused系统过程中报告的数字不符的话,那么你就应该使用这个语句。
每次在你使用DBCC SHRINKDATABASE 或者 DBCC SHRINKFILE缩减数据库文件之后,都执行DBCC UPDATEUSAGE,或者只是作为一个周期性的维护计划,都是个好主意。
作者简介:Kevin Kline是Quest软件公司负责SQL Server解决方案的主任。他还是国际SQL Server专家协会(Professional Association for SQL Server,PASS)的主席,并且经常为数据库技术杂志、网站以及论坛供稿。他编写了O''Reilly & Associates出版社出版的《SQL in a Nutshell》一书。作为SearchSQLServer.com 网站的监控和管理专家,Kline欢迎你向他提问。
Baya Pavliashvili是Healthstream公司(一家在线保健教育公司)的数据库管理员经理,他所管理的数据库支持了超过1百万用户。Pavliashvili主要的技术领域包括性能调整、复制和数据仓库。你可以通过baya.pavliashvili@healthstream.com来联系他。