(4.2)动态管理视图DMV
【1】常用 dmv
以下是一些您应该熟悉的更有用的DMV:
- 1、sys.dm_exec_cached_plans - 可用于SQL Server的缓存查询计划
- 2、sys.dm_exec_sessions - SQL Server中的会话
- 3、sys.dm_exec_connections - 连接到SQL Server
- 4、sys.dm_db_index_usage_stats - 搜索,扫描,查找每个索引
- 5、sys.dm_io_virtual_file_stats - 数据库和日志文件的IO统计信息
- 6、sys.dm_tran_active_transactions - SQL Server实例的事务状态
- 7、sys.dm_exec_sql_text - 返回TSQL代码
- 8、sys.dm_exec_query_plan - 返回查询计划
- 9、sys.dm_os_wait_stats - 返回信息SQL正在等待的资源
- 10、sys.dm_os_performance_counters - 返回与SQL Server相关的性能监视器计数器
1.sys.dm_exec_cached_plans(缓存计划)
--缓存计划: select text,t1.* from sys.dm_exec_cached_plans t1 cross apply sys.dm_exec_sql_text(t1.plan_handle)
7、sys.dm_exec_text(获取运行文本)
系统进程: select * from sys.sysprocesses 用户进程:
dbcc inputBuffer(@@spid)--可以获得执行/调用语句
--下面可以获取当前执行语句 select start_time,command,percent_complete,text, session_id,blocking_session_id from sys.dm_exec_requests r cross apply sys.dm_exec_sql_text(r.sql_handle) s
9、sys.dm_os_wait_stats
SELECT TOP ( 10 ) wait_type , waiting_tasks_count ,wait_time_ms, ( wait_time_ms - signal_wait_time_ms ) AS resource_wait_time , max_wait_time_ms , CASE waiting_tasks_count WHEN 0 THEN 0 ELSE wait_time_ms / waiting_tasks_count END AS avg_wait_time FROM sys.dm_os_wait_stats WHERE wait_type NOT LIKE '%SLEEP%' -- 去除不相关的等待类型 AND wait_type NOT LIKE 'XE%' AND wait_type NOT IN -- 去除系统类型 ( 'KSOURCE_WAKEUP', 'BROKER_TASK_STOP', 'FT_IFTS_SCHEDULER_IDLE_WAIT', 'SQLTRACE_BUFFER_FLUSH', 'CLR_AUTO_EVENT', 'BROKER_EVENTHANDLER', 'BAD_PAGE_PROCESS', 'BROKER_TRANSMITTER', 'CHECKPOINT_QUEUE', 'DBMIRROR_EVENTS_QUEUE', 'SQLTRACE_BUFFER_FLUSH', 'CLR_MANUAL_EVENT', 'ONDEMAND_TASK_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'LOGMGR_QUEUE', 'BROKER_RECEIVE_WAITFOR', 'PREEMPTIVE_OS_GETPROCADDRESS', 'PREEMPTIVE_OS_AUTHENTICATIONOPS', 'BROKER_TO_FLUSH' ) ORDER BY wait_time_ms DESC
11、sys.dm_os_waiting_tasks(返回信息SQL正在等待的实例资源)
拓展应用参考:
1:sys.dm_os_waiting_tasks 引发的疑问(上)
2:sys.dm_os_waiting_tasks 引发的疑问(中)
3:sys.dm_os_waiting_tasks 引发的疑问(下)
waiting_task_address |
varbinary(8) |
等待任务的地址。 |
session_id |
smallint |
与任务关联的会话的 ID。 |
exec_context_id |
int |
与任务关联的执行上下文的 ID。 |
wait_duration_ms |
int |
此等待类型的总等待时间(毫秒)。此时间包含 signal_wait_time。 |
wait_type |
nvarchar(60) |
等待类型的名称。 |
resource_address |
varbinary(8) |
任务等待的资源的地址。 |
blocking_task_address |
varbinary(8) |
当前持有此资源的任务。 |
blocking_session_id |
smallint |
正在阻塞请求的会话的 ID。如果此列为 NULL,则表示请求未被阻塞,或锁定会话的会话信息不可用(或无法进行标识)。 -2 = 阻塞资源由孤立的分布式事务拥有。 -3 = 阻塞资源由延迟的恢复事务拥有。 -4 = 由于内部闩锁状态转换而无法确定阻塞闩锁所有者的会话 ID。 |
blocking_exec_context_id |
int |
正在阻塞的任务的执行上下文 ID。 |