简单的SQL Server性能调优
目的是查看系统(应用程序+数据库)调用SQL Stored Procedure存储过程和SQL语句的性能,查出哪儿慢?哪个存储过程最耗用时间?
有的时候你在一个表设了好几个索引 ( Clustered / Non-clustered Index ),结果还是很慢(全表扫描),因为你的索引根本没有被命中,根本没有被出现在WHERE或者ORDER BY里面!
1. 打开Profiler:
"Start - Programs - SQL Server2005 - Performance Tools - Sql Server Profiler"
2. 点击工具栏第一个button - "New Trace..."
3. 在第一个Tab : General中打勾 "Save to table", 输出到表。
在弹出的窗口中选择master数据库, 表名随意,例如jq
4. 在第二个Tab : Events Selection中,不要选择Security安全和Session部分,只选择存储过程和SQL。
5. 点击RUN。
如果出现错误:“only TrueType fonts are supported. There id not a TrueType font”,则在Profiler的 Tools菜单->Options中选择"Choose Font..."选择其他字体即可。
6. 开始监控后,启动Application,运行多久随意,可以监控高峰时段也可以。监控结束后,点击Stop。
7. 打开SQL Server management studio, 链接到master数据库,输入sql语句:
select top 500 * from jq order by duration desc;
8. 可以看到耗时最久的存储过程。接下来具体分析每个存储过程的SQL语句。
可以通过执行计划( Execution Plan )来检测。
菜单:"Query" - "Display Estimated Execution Plan."
9. 修改SQL语句并调优,重复以上步骤。