码迷,mamicode.com
首页 > 数据库 > 详细

SQL SERVER ->> Wait Stats

时间:2015-06-30 14:34:12      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

等待状态是隔离SQL SERVER性能问题的一个重要手段,从实例级别入手。可以大概看出SQL SERVER在过去某段时间内是否处于某种资源的吃紧状态。不过取决于你是否有建立有效的性能数据收集机制。sys.dm_os_wait_stats这张DMV的数据是从实例上次启动起收集的。

WITH Waits AS 
 ( 
 SELECT  
   wait_type,  
   wait_time_ms / 1000. AS wait_time_s, 
   100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct, 
   ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn 
 FROM sys.dm_os_wait_stats 
 WHERE wait_type  
   NOT IN 
     (CLR_SEMAPHORE, LAZYWRITER_SLEEP, RESOURCE_QUEUE, 
   SLEEP_TASK, SLEEP_SYSTEMTASK, SQLTRACE_BUFFER_FLUSH, WAITFOR, 
   CLR_AUTO_EVENT, CLR_MANUAL_EVENT) 
   ) -- filter out additional irrelevant waits 
    
SELECT W1.wait_type, 
 CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s, 
 CAST(W1.pct AS DECIMAL(12, 2)) AS pct, 
 CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct 
FROM Waits AS W1 
 INNER JOIN Waits AS W2 ON W2.rn <= W1.rn 
GROUP BY W1.rn,  
 W1.wait_type,  
 W1.wait_time_s,  
 W1.pct 
HAVING SUM(W2.pct) - W1.pct < 95; -- percentage threshold;

可以通过下面命令reset数据收集

DBCC SQLPERF (sys.dm_os_wait_stats, CLEAR);
GO

 

参考:

https://msdn.microsoft.com/en-us/library/ms179984.aspx

SQL SERVER ->> Wait Stats

标签:

原文地址:http://www.cnblogs.com/jenrrychen/p/4610231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!