如何跟踪程序执行时间?

时间:2012-07-11 12:31:56

标签: sql sql-server

我有一些未优化的程序。我想分析这些程序是否得到优化,因为只有大量数据不能检查。

我想将sql查询放入所有过程中,该过程将插入一个表中,执行上述查询所需的时间是多少。我将创建一个表,我的过程将在其中插入查询执行时间。

有什么方法可以做到这一点。

4 个答案:

答案 0 :(得分:3)

如果要将其集成到过程中,请设置一个变量,该变量在开始时存储执行开始时间,并在过程结束时用当前时间减去它。

/* Start of your procedure */
Declare @startTime datetime = GETDATE()
Declare @duration varchar

/* Your procedure */
...

/* End of your procedure */
Set @duration = CONVERT(VARCHAR(8),GETDATE() - @startTime,108)
Insert into statisticTable 
Values ('procedureName', @duration)

答案 1 :(得分:1)

您是否尝试使用 SQL Profiler

在跟踪属性中,您可以定义存储过程的Start TimeEnd time。这是一个非常强大的工具。

答案 2 :(得分:0)

您可以使用Dynamic Management Views ....

查看上述内容

如果您使用的是旧版本的SQL SERVER,请使用SQL Server Profiler ....

答案 3 :(得分:-1)

为什么要这样做?有很多工具,比如DMV,trace,exevents等。如果你放了那种代码,你会增加你的proc的开销。对于程序,最好的是dm_procedure_stats DMV,但仅适用于2008 R2及更高版本。使用旧版本的dm_exec_query_stats。这些将为您提供有关时间,逻辑io,cputime和物理IO等的更好的统计信息。