Sp_Lock
SP_LOCK
其显示信息为:
Spid:进程ID号(要发现哪些用户和该spid相连,你就要执行存储过程sp_who)
Dbid:数据库ID号(可以在主数据库中的sysdatabases表格中找到它)
Objid:对象ID号(要查看这个对象,你可以在主数据库中的sysobjects表格中查询指定的objid)
Indid:索引ID号
Type:缩写的对象类型(DB:数据库、TAB:表、PG:页、EXT:簇、RID:行标等)
Resource:锁资源
Mode:锁模式(S:共享锁、U:修改锁、X:排它锁、IS共享意图锁、IX排它意图锁)
Status:当前该锁的状态(GRANT获得状态、WAIT被其它进程阻塞、CVNT当前锁正在转化)。
当你发现一个spid 获得了大量的数据库锁定时,这将有助于确定什么存储过程或语句正在运行。为了达到这个目的,运行以下 DBCC 命令:
DBCC INPUTBUFFER(spid)
这个DBCC命令将返回正在EventInfo字段中运行的语句的相关信息。
类型列
"类型"列显示当前锁定的资源类型。
资源类型 描述
RID 用于锁定表中的一行的行标识符。
KEY 索引中的行锁。用于保护可串行事务中的键范围。
PAG 数据或索引页。
EXT 相邻的八个数据页或索引页构成的一组。
TAB 包括所有数据和索引在内的整个表。
DB 数据库。
资源列
"资源"列提供有关正被锁定资源的信息。
资源类型 描述
RID 表内已锁定行的行标识符。行由 fileid:page:rid 组合进行标识,其中,rid 是页中的行标识符。
KEY SQL Server 内部使用的十六进制数字。
PAG 页码。页由 fileid:page 组合进行标识,其中,fileid 是 sysfiles 表中的 fileid,而 page 是该文件内的逻辑页码。
EXT 正被锁定的扩展盘区中的第一个页码。页由 fileid:page 组合进行标识。
TAB 由于 ObjId 列已包含表的对象 ID,所以没有提供任何信息。
DB 由于 dbid 列已包含数据库的数据库 ID,所以没有提供任何信息。
在sp_lock的结果集内,锁定的RID资源类型中的资源描述为1:1225:2。这表明在fileid1内、页码为1225的页中、行标识符为2的行上应用了锁。有关更多信息,请参见有关死锁的疑难解答。
模式列
"模式"列描述正应用于资源的锁类型。锁类型包括任何多粒锁。
状态列
"状态"列显示锁是已经获取(GRANT)、正在另一个进程中被阻塞(WAIT)、还是正在转换为另一个锁(CNVT)。正转换为另一种锁的锁会保持在一种模式中,但等待获取更强的锁模式(例如,从更新模式变为排它模式)。当遇到诊断阻塞问题时,会认为CNVT与WAIT类似。
监视锁定活动的其它工具
当持有和释放锁的速度比sp_lock显示的速度快时,使用sp_lock来显示锁定信息并不一定始终可行。在这种情况下,可以使用SQL事件探查器监视和记录锁定信息。此外,可以使用Windows性能监视器监视使用SQL Server锁对象计数器的锁活动。
(1)共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
(2)更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。
(3)排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时对同一资源进行多重更新。
(4)意向 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。
(5)架构 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。
(6)大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。
Sp_Lock的更多相关文章
- 用sp_lock诊断SQL Sever的死锁问题
找出什么被锁定了 系统的反应迟缓意味着你应该做一些调查了.你的查找最好从测定系统发生锁定的数量和频率开始.如果你的系统环境处理事务性很高的话,这样各个应用程序争夺资源就会很常见,从而引起锁定.解决这些 ...
- SQL实用
实用的SQL语句 行列互转 create table test(id int,name varchar(20),quarter int,profile int) insert into test ...
- sqlserver事务加锁机制
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...
- SQL Server中的事务与锁
了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器. 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写. 死锁: ...
- 实用的SQL语句
行列互转 ) select * from test2 --列转行 select id,name,quarter,profile from test2 unpivot ( profile for qua ...
- sql语句优化SQL Server
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...
- SQL性能优化案例分析
这段时间做一个SQL性能优化的案例分析, 整理了一下过往的案例,发现一个比较有意思的,拿出来给大家分享. 这个项目是我在项目开展2期的时候才加入的, 之前一期是个金融内部信息门户, 里面有个功能是收集 ...
- SQL Server 监控统计阻塞脚本信息
数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大.阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象. 但是阻塞的 ...
- MS SQL 日常维护管理常用脚本(二)
监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息 Code Snippet SELEC ...
随机推荐
- 2017最新PHP面试题
这几天在面试,下面分享一下这几天面试所遇到的笔试题,目前还不打算工作,面试题会持续更新的,有些不想写答案了,有心的可以自己看着面试题查一下感觉记忆更深点.下面分享一下这几天遇到的php面试题. 掌贝面 ...
- Java开发小技巧(一)
前言 相信许多程序员在看别人写的代码的时候,会有怀疑人生的感想,面对一堆天书一样的代码,很难摸清作者的思路,最后选择了重构,如果你认同上面这个作法,说明了两个问题:要么原来的开发者技术菜.要么你技术菜 ...
- Java内存模型—JMM
有时候编译器.处理器的优化会导致runtime与我们设想的不一样,为此Java对编译器和处理器做了一些限制,JAVA内存模型(JMM)将这些抽象出来,这样编写代码时就无需考虑那么多底层细节,并保证& ...
- JAVA入门[17]-ControllerAdvice处理exception
1.关于@ControllerAdvice @ControllerAdvice注解本身已经使用了@Component,因此@ControllerAdvice注解所标注的类将会自动被组件扫描获取到,就像 ...
- Unity For Android Cardboard App ( 1 ):基础入门
作者: ericzwhuang 前言 目前Google官方推出的VR设备有DayDream(2016年推出)和Cardboard(2014年推出)两种. Daydream是消费级VR解决方案,提供了手 ...
- 【maven教程】(1)---maven环境配置
maven环境配置 刚开始学习maven,现在项目需要用到maven,而且他确实很好用,也比较容易上手,我也是主要通过视频学习,在写博客的时候也会总结其它人所写 博客,从简到难,如果你也是初学者那接下 ...
- iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...
- 【ANT】java项目生成文件示例
<?xml version="1.0" ?> <project default="dist"> <property name=&q ...
- wordpress 登录实例(一)
wordpress搭建参考 关于wordpress环境的搭建,地址是:http://easonhan007.github.io/2014/04/08/install-wamp-and-wordpres ...
- listbox控件使用
1. 属性列表: SelectionMode 组件中条目的选择类型,即多选(Multiple).单选(Single) Rows 列表框中显示总共多少行 Sel ...