SQLServer 阻塞的等待类型解析
死锁和阻塞是数据库中最常见的问题,一般遇到的时候如何查找阻塞的源头: 首先查看 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 DBName select * 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 ... 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 = 727829805 and si.index_id = 1; GO ? 在SQLserver2014的版本上,我们可以利用无文档的系统视图?sys.dm_db_database_page_allocations ,但是这个查询是一个非常消耗性能的操作。 在看到对象之后我们可以继续查找锁定的数据,同样的这个操作也是消耗性能的操作 (sqlserver2008版本以上) ,如下: use DBName SELECT 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,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 软件开发人员电脑配置——传智播客电脑配置
- sqlserver 2008 r2企业版、开发版、标准版下载地
- SQLServer 2008以上误操作数据库恢复方法——日志
- sql – 快速关系存储树数据的方法(例如对文章的线
- SQL Server 跨域查询(权限、语句、过程)
- sql-server – 将最后一个标识插入表中的最佳方法
- MongoDB 3.4 安装以 Windows 服务方式运行的详细
- sql-server – 为什么不将IGNORE_DUP_KEY设置为O
- sql-server – SQL Server 2008 R2错误:15023,用
- sql-server – 集群索引和非集群索引之间的性能差