您的位置:首页 > 数据库

MSSQL 性能调优心得(二)

2009-02-24 13:43 218 查看
救火算是救完了,接下来的几天都在用Profiler跟踪SQL语句,主要关注Duration, Reads/CPU。

首先关注Duration,把时间特别长的语句拿出来分析。一般把捕获的语句放在查询分析器中,如果需要参数自己手动提供。人肉观测下where条件,比如 where 字段1= 1 AND 字段2='ABC',那么看看字段1和字段2是不是至少有一个已经被索引了。如果有多表关联,检查两边关联字段上是否都有索引。

更精确的做法是在查询分析器中按下Ctrl L看下SQL Server的执行计划。

从右往左看。看最末级,最糟糕的情况是表扫描(除非这个表小到加了索引还不如不加)。比较理想的情况是索引查找,或者索引扫描(通常发生在有不是“等于”条件的查找)。另外如果出现了聚集索引扫描有时候不是好事,只能说明这个表存在聚集索引,但是给出的条件不能利用现有的任何索引。

如果实在想偷懒,可以用查询分析器中的“查询” -〉“数据库引擎中的优化顾问中的分析查询”来自动优化。一般而言会给出有价值的建议,但也不能盲目迷信。

通常索引做对了基本上就成功大半了。然后重点关注查询的IO性能和执行时间。

首先打开两个数据分析的开关:

set statistics io on
set statistics time on

这样执行语句的时候会给出具体的性能数据。

当然最重要的是尽量消灭物理读。大家都知道服务器最慢的部件就是磁盘了,物理读就是真的要在物理磁盘上读取数据。通常在服务器本身硬件性能良好、索引合理的情况下还算比较容易办到。然后就是看逻辑读,当然也希望越低越好。这就需要些技巧了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: