在我们的系统出现性能问题时,往往避不开调查各种类型 Lock Wait,如Row Lock Wait、Page Lock Wait、Page IO Latch Wait等。从中找出可能的异常等待,为性能优化做一定的参考 。具体的查询语句分享如下,

/*******************************************************************************************

Row Lock Wait

*******************************************************************************************/

SELECT '[' + DB_NAME(ddios.[database_id]) + '].[' + su.[name] + '].['

+ o.[name] + ']' AS [statement] ,
i.[name] AS 'index_name' ,
ddios.[partition_number] ,
ddios.[row_lock_count] ,
ddios.[row_lock_wait_count] ,
CAST (100.0 * ddios.[row_lock_wait_count]
/ ( ddios.[row_lock_count] ) AS DECIMAL(5, 2)) AS [%_times_blocked] ,
ddios.[row_lock_wait_in_ms] ,
CAST (1.0 * ddios.[row_lock_wait_in_ms]
/ ddios.[row_lock_wait_count] AS DECIMAL(15, 2))
AS [avg_row_lock_wait_in_ms]
FROM sys.dm_db_index_operational_stats(DB_ID(), NULL, NULL, NULL) ddios
INNER JOIN sys.indexes i ON ddios.[object_id] = i.[object_id]
AND i.[index_id] = ddios.[index_id]
INNER JOIN sys.objects o ON ddios.[object_id] = o.[object_id]
INNER JOIN sys.sysusers su ON o.[schema_id] = su.[UID]
WHERE ddios.row_lock_wait_count > 0
AND OBJECTPROPERTY(ddios.[object_id], 'IsUserTable') = 1 and OBJECT_NAME(ddios.[object_id]) like 'POS_TRANSMST'
AND i.[index_id] > 0
ORDER BY ddios.[row_lock_wait_count] DESC ,
su.[name] ,
o.[name] ,
i.[name]

/*******************************************************************************************

--Page Lock Wait

*******************************************************************************************/

 SELECT OBJECT_NAME(ddios.object_id, ddios.database_id) AS object_name ,

i.name AS index_name ,

ddios.object_id,
ddios.partition_number ,
ddios.page_lock_wait_count ,
ddios.page_lock_wait_in_ms ,
CASE WHEN DDMID.database_id IS NULL THEN 'N'
ELSE 'Y'
END AS missing_index_identified
FROM sys.dm_db_index_operational_stats(DB_ID(), NULL, NULL, NULL) ddios
INNER JOIN sys.indexes i ON ddios.object_id = i.object_id
AND ddios.index_id = i.index_id
LEFT OUTER JOIN ( SELECT DISTINCT
database_id ,
object_id
FROM sys.dm_db_missing_index_details
) AS DDMID ON DDMID.database_id = ddios.database_id
AND DDMID.object_id = ddios.object_id
WHERE ddios.page_lock_wait_in_ms > 0 and OBJECT_NAME(ddios.[object_id]) like 'POS_TRANSMST'
ORDER BY ddios.page_lock_wait_count DESC ;

/*******************************************************************************************

--Page IO Latch Wait

*******************************************************************************************/
SELECT '[' + DB_NAME() + '].[' + OBJECT_SCHEMA_NAME(ddios.[object_id])
+ '].[' + OBJECT_NAME(ddios.[object_id]) + ']' AS [object_name] ,
i.[name] AS index_name ,
ddios.page_io_latch_wait_count ,
ddios.page_io_latch_wait_in_ms ,
( ddios.page_io_latch_wait_in_ms / ddios.page_io_latch_wait_count )
AS avg_page_io_latch_wait_in_ms
FROM sys.dm_db_index_operational_stats(DB_ID(), NULL, NULL, NULL) ddios
INNER JOIN sys.indexes i ON ddios.[object_id] = i.[object_id]
AND i.index_id = ddios.index_id
WHERE ddios.page_io_latch_wait_count > 0 and OBJECT_NAME(ddios.[object_id]) like 'POS_TRANSMST'
AND OBJECTPROPERTY(i.object_id, 'IsUserTable') = 1
ORDER BY ddios.page_io_latch_wait_count DESC ,
avg_page_io_latch_wait_in_ms DESC

/*******************************************************************************************

SameZhao

最新文章

  1. SQL Server中的高可用性(2)----文件与文件组
  2. Python中的socket 模块
  3. python+php+redis+shell实现几台redis的同步数据
  4. 转:Tomcat安装配置及站点说明
  5. Rule of Modularity
  6. 深入理解java虚拟机【Java内存结构】
  7. Ubuntu中设置永久的DNS
  8. WebSocket API
  9. CSS 选择器之基本选择器 属性选择器 伪类选择器
  10. SQLite: sql script demo
  11. 21 go并发编程-下
  12. 从零开始学 Web 之 CSS(四)CSS初始化、定位、overflow、标签规范
  13. MyBatis基础入门《五》核心配置文件
  14. PHP安全之Web攻击(转)
  15. C# Notes
  16. codeforces水题100道 第十四题 Codeforces Round #321 (Div. 2) A. Kefa and First Steps (brute force)
  17. ALTERA FPGA Quartus 指定memory综合使用 M4K块
  18. P4878 [USACO05DEC]layout布局
  19. 剑指offer-矩形覆盖-斐波那契数列(递归,递推)
  20. 鼓捣phantomjs,做ajax网站的信息采集

热门文章

  1. Android请求网络共通类——Hi_博客 Android App 开发笔记
  2. Android 获取系统相册中的所有图片
  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(74)-微信公众平台开发-自定义菜单
  4. 了不起的 nodejs-TwitterWeb 案例 bug 解决
  5. Coroutine in Java - Quasar Fiber实现--转载
  6. PHP-----文件系统的交互
  7. 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理
  8. Java中常用集合操作
  9. AutoMapper使用中的问题
  10. Linux服务器安全配置