我在使用不支持分析器的SQL Server 2005版本,想要找出比较两个存储过程性能的最佳方法。我已经运行了每个过程的执行计划,但是我不确定应该关注提供的哪些指标。我是否需要逐个加总各种成本?什么是最好的方法?
谢谢。
谢谢。
看看这篇文章:测量 SQL 性能
如果你不想注册免费账户,这里有一个解决方案 1:
DECLARE @start datetime, @stop datetime
SET @start = GETDATE()
EXEC your_sp
SET @stop = GETDATE()
第二点:
SET STATISTICS TIME ON
EXEC your_sp
第三方:
SET STATISTICS IO ON
EXEC your_sp
顺便说一下,这个网站有一些不错的文章。我建议您注册一下。这是免费的。
问题在于你优化的目标是什么?是速度还是资源利用率?
如果是速度,那么在查询分析器中,我会查看多次运行之间的执行情况,进行更改并再次计时。
如果是资源利用率,我会查看执行计划。在这种情况下,我会从最糟糕的问题开始,并逐个解决。将它们加起来可以告诉你整体性能,但大多数情况下只有一两个项目是瓶颈。
像大多数问题一样,答案取决于... 最终的分析中,唯一重要的度量标准是最终用户的感知,这可能会受到许多因素的影响,包括不仅仅是存储过程,还有网络性能、使用模式(sProc每天被调用20次还是每秒1000次?)等等,而且sProc可能不是决定性因素。
但是,如果存储过程是某个功能对最终用户感知产生重大负面影响的“拼图块”,那么您必须查看运行存储过程的经过时间。但是,这本身可能会受到许多潜在指标的影响,为了解决这个问题,您需要分析它们所有来确定哪一个是整体存储过程性能的主要或支配贡献者。
简单粗暴的解决方案是使用打印语句来输出各个部分的执行时间。如果性能问题更加微妙,只在生产环境中出现,这种方法可能无法帮助,但如果你能在测试环境中重现该问题,那么应该没问题。