如何在SQL Server中获取分隔开始和结束SQL查询的时间片段?如果我设置统计时间,有没有办法将结果cpu /已用时间添加到当前日期时间?
由于
答案 0 :(得分:1)
您可以使用
1)SQL Trace(包括SQL Profiler)拦截{SP:StmtCompleted | SP:StmtCompleted}具有以下列CPU时间,持续时间/经过时间,开始和时间;每个查询的结束时间
或
2)扩展事件会话(SQL2008 +)
在这两种情况下,这些事件(%:StmtCompleted
)都可能对服务器性能产生负面影响,因此请勿在使用频繁的服务器(生产)上使用此方法。如果生产服务器上存在性能问题,则可能会加剧问题。
3)相反,如果你想检测那些有性能问题的{queries / sql modules}你可以使用
SQL2005 + sys.dm_exec_query_stats
SQL2008 + sys.dm_exec_proc_stats
SQL2008 + sys.dm_exec_trigger_stats
示例:
SELECT TOP(50) ...
total_worker_time *1.00 / execution_count AS Avg_CPU_time,
total_elapsed_time *1.00 / execution_count AS Avg_Duration,
total_logical_reads *1.00 / execution_count AS Avg_LIO_time
FROM sys.dm_..._stats
ORDER BY Avg_LIO_time DESC
你可以使用Glenn Berry的剧本 http://sqlserverperformance.wordpress.com/2013/11/15/sql-server-diagnostic-information-queries-for-november-2013/