【问题标题】:SQL Server query start end timesSQL Server 查询开始结束时间
【发布时间】:2013-11-27 19:31:08
【问题描述】:

如何在 SQL Server 中获取分隔开始和结束 SQL 查询的时间点?如果我设置了统计时间,有没有办法将得到的 cpu / 经过时间添加到当前日期时间?

谢谢

【问题讨论】:

  • 通过在我们的免费工具SQL Sentry Plan Explorer 中运行查询来生成实际执行计划。无需摆弄任何 SET 命令 - 这一切都是自动为您完成的。
  • 属于 dba.stackexchange.com

标签: sql-server performance response-time


【解决方案1】:

你可以使用

1) SQL Trace(包括 SQL Profiler)拦截 { SP:StmtCompleted | SP:StmtCompleted } 包含以下列 CPU 时间、持续时间/已用时间、每个查询的开始和结束时间

或

2) 扩展事件会话 (SQL2008+)

在这两种情况下,这些事件 (%:StmtCompleted) 都可能对服务器性能产生负面影响,因此不要在大量使用的服务器(生产)上使用此方法。如果您在生产服务器上遇到性能问题,这可能会加剧问题。

3) 相反,如果您想检测那些有性能问题的 { 查询 / sql 模块 },您可以使用

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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多