sql-server – 如何最好地衡量查询性能?

前端之家收集整理的这篇文章主要介绍了sql-server – 如何最好地衡量查询性能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有2个存储过程,其中第二个存储过程是对第一个存储过程的改进.

我试图通过确切的改进量来衡量.

1 /测量时钟时间似乎不是一个选项,因为我得到不同的执行时间.更糟糕的是,有时(很少,但它会发生)第二个存储过程的执行时间大于第一个过程的执行时间(我猜是由于当时的服务器工作负载).

2 /包括客户统计信息也提供不同的结果.

3 / DBCC DROPCLEANBUFFERS,DBCC FREEPROCCACHE很好,但同样的故事……

4 / SET STATISTICS IO ON可能是一个选项,但是如果我的存储过程涉及很多表,我怎么能得到总分?

5 /包括实际执行计划也可以是一个选项.第一个存储过程的估计子树成本为0.3253,第二个存储过程的子树成本为0.3079.我能说第二个存储过程快6%(= 0.3253 / 0.3079)吗?

6 /使用sql Server Profiler中的“读取”字段?

那么,无论执行条件如何(服务器的工作负载,执行这些存储过程的服务器等),我怎么能说第二个存储过程比第一个过程快x%?

如果不可能,我怎样才能证明第二个存储过程的执行时间比第一个存储过程好?

解决方法

我喜欢在比较之前和之后的场景时使用 SQLQueryStress免费工具.使用sqlQueryStress,您可以根据需要多次执行每个存储过程,并获取所有执行的总平均值.

例如,您可以执行100次每个存储过程,然后使用统计信息来备份您的改进. “超过100次执行,我的改进总共节省了30秒,而存储过程每次执行的读取次数减少了1500次.”我想你应该已经明白了.

如果存储过程中有参数,那么仔细检查您的改进是否适用于许多不同的参数集总是一个好主意. sqlQueryStress做了一些很酷的事情,让你在查询中替换参数,以更好地了解存储过程如何执行.

sqlQueryStress文档:http://www.datamanipulation.net/sqlquerystress/documentation/documentation.asp

猜你在找的MsSQL相关文章