DBA通常想知道正在运行的语句已经执行了多久了?可以使用Sqlserver profiler来捕获语句的开始时间,和现有时间比较,但是在生产环境下通常会对性能有负面影响,所以通常不建议在非必要的前提下在生产环境使用SQL Server Profiler。
此时,可以使用DMV来查询:
sys.dm_exec_requests中有一个重要字段:start_time,表示request的开始时间,一个批处理就是一个request,一个request对应一个task,如果批处理是并发,则对应多个tasks。下面脚本不考虑并发情况。在DMV中的sys.dm_os_workers里面有一个字段task_bound_ms_ticks表示线程(worker)拿到task的时间(单位是tick)。
由于sys.dm_exec_requests没有包含语句文本,所以需要借助sys.dm_exec_sql_text转换sql_handle而得到。然后从sys.dm_exec_query_plan得到执行计划。还输出正在执行的哪一句具体的stmt。这对于一个批处理包含多条语句时特别有用:
DECLARE @ms_per_tick DECIMAL(10, 6)
--millisecond per tick
SELECT @ms_per_tick = 1.0 * DATEDIFF(millisecond, sqlserver_start_time,
GETDATE()) / ( ms_ticks
- sqlserver_start_time_ms_ticks )
FROM sys.[dm_os_sys_info] ;
--select @ms_per_tick
SELECT req.session_id ,
req.start_time request_start_time ,
( ( SELECT ms_ticks
FROM sys.dm_os_sys_info
) - workers.task_bound_ms_ticks ) * @ms_per_tick 'ms_since_task_bound' ,
DATEDIFF(ms, req.start_time, GETDATE()) 'ms_since_request_start' ,
tasks.task_state ,
workers.state worker_state ,
req.status request_state ,
st.text ,
SUBSTRING(st.text, ( req.statement_start_offset / 2 ) + 1,
( ( CASE req.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE req.statement_end_offset
END - req.statement_start_offset ) / 2 ) + 1) AS stmt ,
qp.query_plan ,
req.*
FROM sys.dm_exec_requests req
LEFT JOIN sys.dm_os_tasks tasks ON tasks.task_address = req.task_address
LEFT JOIN sys.dm_os_workers workers ON tasks.task_address = workers.task_address
CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) st
CROSS APPLY sys.dm_exec_query_plan(req.plan_handle) qp
WHERE ( req.session_id > 50
OR req.session_id IS NULL
)
go
上面的@ms_per_tick用来计算一个tick相当与多少ms(毫秒),一般一个tick基本就是一毫秒。输出如下:
分享到:
相关推荐
SQL server从2005开始,引入了DMV和DMF来监控数据库的信息。可以用于监控服务器实例的运行状况、诊断问题和优化性能。 DMF和DMV有挺多,做为DBA应该掌握经常用到的语句。。
sql2000,2005,2008DMV系统视图工具,性能分析的利器
Sql Server 数据库优化常用脚本,性能排查,sql server性能分析--查询死锁的sql语句,sql server性能分析--检测数据库阻塞语句
双阻尼DMV16 32 56性能参数 PDF文件
中达电通机器视觉系统DMV系列rar,中达电通机器视觉系统DMV系列
从2005以后引入了DMO(DMV+DMF)作为SQLServer管理工具,本书通过使用DMO,专注于SQLServer的性能优化。性能优化的手段有多种,但是DMO具有便捷的特性,使其在SQLServer的管理中具有不可替代并越来越重要的作用,...
SQL SERVER DBA DMV PERFORMANCE
Delta DMV1000产品说明书,是了解机器视觉产品的很好资料。
台达DMV视觉影像系统说明书pdf,台达DMV视觉影像系统说明书
DMV(从DMV中提取有用的信息) 可用性组信息查找活动锁在计划缓存中查找密钥查找在PlanCache中查找长期运行的查询在PlanCache中查找最昂贵的查询在PlanCache中查找查询的计划在PlanCache中查找隐式转换查询在一段...
其中包含了3本想成为SQLServerDBA或专家必看的书:1.Microsoft SQL Server 2008 Internals能够帮助你深入理解SQLServer2008的内部结构和...3.SQL Server DMVs in Action是DMV使用的最全的参考书,DBA必备。欢迎下载。
为了进一步加剧该问题,很难知道附近有什么DMV。 使用此工具,您可以搜索您所在位置一定半径内的所有DMV。 调度队列如果您想在DMV上进行预约,他们可能会安排您几个月的时间。 实际上,可能会有更早的约会,但这些...
台达机器视觉DMV系统,描述台达机器视觉系统实现及实例
the bible of Sql server mointor and performance tunning
DeathMach for css v34
达梦V8数据库java链接驱动jar包
使用DMV和DMF分析数据库性能.docx
DMV 加急调度程序快速获得 CA DMV 预约! 抓取 ca.dmv.gov 网站以生成一个json文件,该文件按具有最快可用约会的办公室排序。 在撰写本文时,这是一个星期的路程,一个小时的车程。 在finalResult.json中生成如下所...
dmv 一个快速而肮脏的命令行程序,用于学习我的驾照考试。 (并且很好,这是我的第一个 Python 脚本......欢迎提出友好的建议。)等等问题数据于 13 年 1 月 27 日从获得。 IANAL,但将其包含在这里似乎是合理使用。...