死锁和阻塞是数据库中最常见的问题,一般遇到的时候如何查找阻塞的源头:

首先查看 sys.sysprocesses 中blocked 情况,然后查看对应的lastwaitype and waitresource .

对于waitresource 主要有几种情况:

举个常用的例子:

(一)

Page:20:11:1635088

20:database Id

11:File Id

1635088    :Page Id

1 .首先找到数据库名字

select object_name(20) 

2.找到数据库的文件名字

use DBNameselect * from sys.database_files
where file_id =11

3. 通过page id 找到具体的对象:

打开DBCC 3604 开关,然后运行DBCC Page (databaseName,fileId,pageId,dumStyle)

DBCC TRACEON(3604)DBCC Page (DBNAME,11,1635088 ,2) 

我们会看到如下的数据:

ge @0x000000A93DC34000

m_pageId = (11:1635088) m_headerVersion = 1 m_type = 1
m_typeFlagBits = 0x0 m_level = 0 m_flagBits = 0xa200
m_objId (AllocUnitId.idObj) = 13777 m_indexId (AllocUnitId.idInd) = 256
Metadata: AllocUnitId = 72057594940817408
Metadata: PartitionId = 72057594859618304 Metadata: IndexId = 1
Metadata: ObjectId = 727829805 m_prevPage = (12:691363) m_nextPage = (11:1635089)
pminlen = 22 m_slotCnt = 99 m_freeCnt = 4
m_freeData = 7990 m_reservedCnt = 0 m_lsn = (2091562:262743:114)
m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0
m_tornBits = 816587892 DB Frag ID = 1

...

SELECT sc.name as schema_name, so.name as object_name, si.name as index_name
FROM sys.objects as so
JOIN sys.indexes as si on so.object_id=si.object_id
JOIN sys.schemas AS sc on so.schema_id=sc.schema_id
WHERE so.object_id = 727829805and si.index_id = 1;
GO

在SQLserver2014的版本上,我们可以利用无文档的系统视图 sys.dm_db_database_page_allocations ,但是这个查询是一个非常消耗性能的操作。

在看到对象之后我们可以继续查找锁定的数据,同样的这个操作也是消耗性能的操作 (sqlserver2008版本以上) ,如下:

use DBNameSELECT sys.fn_PhysLocFormatter (%%physloc%%),*
FROM dbo.TableName (NOLOCK)
WHERE sys.fn_PhysLocFormatter (%%physloc%%) like '(1:1635088%'
GO

(二)

对于KEY: 6:72057594041991168 (ce52f92a058c)

database =6;

hotbt_id=72057594041991168

hash value=ce52f92a058c

同样的我们通过如下的脚本获取对象

--get database name
select db_name(6) ;--get object name and index name
use databasename;SELECT sc.name as schema_name, so.name as object_name, si.name as index_name
FROM sys.partitions AS p
JOIN sys.objects as so on p.object_id=so.object_id
JOIN sys.indexes as si on p.index_id=si.index_id and p.object_id=si.object_id
JOIN sys.schemas AS sc on so.schema_id=sc.schema_id
WHERE hobt_id = 72057594041991168;
GO

对于最后的hash value ,我们也有函数找到对应的行数据

SELECT*
FROM dbo.TableName(NOLOCK)
WHERE %%lockres%% = '(ce52f92a058c)';
GO

转载于:https://www.cnblogs.com/sky1225/p/9646935.html

SQLServer 阻塞的等待类型解析相关推荐

  1. 通过分析等待类型解决系统产生问题

    等待分类与解决基本流程: 步骤1.定位问题 系统等待往往能直观的反映出系统问题.通过一些常见的等待类型,同样可以找到系统瓶颈,结合性能计数器往往定位更准确. 如:系统中存在大量IO类等待,那么可能表示 ...

  2. 减少SQL Server ASYNC_NETWORK_IO等待类型

    The ASYNC_NETWORK_IO wait type is one of those wait types that can be seen very often by DBAs, and i ...

  3. 7月12日 SQL Server 等待类型

     sys.dm_os_wait_stats (Transact-SQL) SQL Server 2014 其他版本 SQL Server 2012 SQL Server 2008 R2 SQL S ...

  4. SQL 各种锁等待类型 wait type--sys.dm_os_wait_stats 表

    返回执行的线程所遇到的所有等待的相关信息.可以使用该聚合视图来诊断 SQL Server 以及特定查询和批处理的性能问题. 列名 数据类型 说明 wait_type nvarchar(60) 等待类型 ...

  5. sql server等待类型

    sql server 各种等待类型-转 sql server各个等待类型及解决办法:https://www.sqlskills.com/help/waits/writelog/ 其他等待类型的描述和解 ...

  6. sql server 各种等待类型-转

    等待的类型 资源等待 当某个工作线程请求访问某个不可用的资源(因为该资源正在由其他某个工作线程使用,或者该资源尚不可用)时,便会发生资源等待.资源等待的示例包括锁等待.闩锁等待.网络等待以及磁盘 I/ ...

  7. 传值类型_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅

    前言 哈哈,今天来给大家讲解一下关于C#中方法及参数的几种类型解析,没有看过的朋友,可以仔细的来瞧瞧了! 那么,还是话不多说,直接给大家献上今天的干货. 一.方法中参数的类型 1.in型参数 int ...

  8. 转:SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究

    SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00 :00,C# ...

  9. Python静态类型解析工具简介和实践

    简介: Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型,但类型不匹配的操作是不被允许的.动态类型帮助开发者写代码轻松愉快,然而,俗话说:动态一时爽,重构火葬场.动态类型也带来了许 ...

最新文章

  1. 安装SQL Server2008错误解决方案
  2. OpenStack(四)——Nova组件
  3. 【转】“你不适合做程序员”
  4. spyder python调试查看类信息_使用Spyder进行Python调试
  5. 用Dell光盘安装系统
  6. Redis应用场景一
  7. azure java_使用 Java 的 Azure 存储示例 | Microsoft Docs
  8. 使用Python的pip方法安装第三方包时,很慢或者失败的问题
  9. 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
  10. hsqldb mysql_hsqldb简单使用总结
  11. MATLAB中的单相与三相dq变换模块
  12. 苹果企业开发者账号证书申请(保姆级)
  13. 架构设计说明书该怎么写?
  14. UCF Local Programming Contest 2018题解
  15. php代码画表情包,canvas绘制表情包的示例代码
  16. pythonweb全栈开发_Python web全栈学习路线
  17. 直坐标机械手的优缺点都有哪些?
  18. 【软考|软件设计师】专业英语(软考真题)
  19. dashucoding记录2019.6.7
  20. mysql uid怎么获取_新浪微博API如何获取uid,并根据uid获取用户的基本信息

热门文章

  1. cap流程图_3D流程图
  2. mysql主从授权_MySQL主从复制(10)读写分离授权多种方案
  3. android获取文件上级目录,Android 文件存储
  4. c++指针引用导出文件
  5. 雷赛运动控制卡_EeIE智博会展商推荐雷赛智能—智能装备运动控制领域的知名品牌和行业领军企业...
  6. zabbix icmp ping 监控主机_Zabbix监控 MySQL 性能
  7. MySQL复制数据库
  8. 大气波导计算MATLAB,基于抛物方程的大气波导环境下电波传播的研究rbedacv8.ppt
  9. php mysql 登录注销_PHP与MYSQL实现用户登录注销
  10. win7访问linux共享路径不存在,win7系统访问网络共享找不到网络路径如何解决