(4.2)动态管理视图DMV

【1】常用 dmv

以下是一些您应该熟悉的更有用的DMV:

 

 

 

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。

posted @ 2018-06-28 17:54  郭大侠1  阅读(470)  评论(0编辑  收藏  举报