目的是查看系统(应用程序+数据库)调用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。

 

    

如何建立sql server性能基线 sql server 性能调优_存储过程

 

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."

    

如何建立sql server性能基线 sql server 性能调优_如何建立sql server性能基线_02

     

 

   

   

如何建立sql server性能基线 sql server 性能调优_存储过程_03

9. 修改SQL语句并调优,重复以上步骤。

 

   

如何建立sql server性能基线 sql server 性能调优_性能_04