MSSQL 性能调优心得(二)

救火算是救完了,接下来的几天都在用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

 

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

 

当然最重要的是尽量消灭物理读。大家都知道服务器最慢的部件就是磁盘了,物理读就是真的要在物理磁盘上读取数据。通常在服务器本身硬件性能良好、索引合理的情况下还算比较容易办到。然后就是看逻辑读,当然也希望越低越好。这就需要些技巧了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值