有时候系统运行老感觉效率不高,并且有时候sql还有超时的报错,但是并发量并不高。通过排查定位sql是否有执行效率问题

-- 开事务, 以保持锁
BEGIN TRAN -- 更新
update table a
set column1 = 1
where idx = 1 -- 列出锁信息
EXEC sp_lock @@spid -- 提交或者回滚事务
COMMIT/ROLLBACK TRAN

通过执行sp_lock存储过程,查看锁信息(类似如下)

spid dbid ObjId IndId Type Resource Mode Status
52 8 0 0 DB                                  S GRANT
52 1 1.12E+09 0 TAB                                  IS GRANT
52 8 9.18E+08 1 PAG 1:425705                         IX GRANT
52 8 9.18E+08 0 TAB                                  IX GRANT
52 8 9.18E+08 1 KEY -1E+10 X GRANT

通过 dbid, ObjId 可以找到你更新的表相关的锁记录
如果 IndId 为 0 , 表示锁在表上, 否则在对应的索引上
通过 Type 列, 可以确定被锁定的是行/表, 或者是其他, 并且可以通过 Mode 看到是什么锁
在Status 中, 还可以看到锁是已经加上了, 还是在等待其他资源释放(以取得加锁的权利)

spid   dbid   ObjId       IndId  Type Resource                   Mode     Status
------ ------ ----------- ------ ---- -------------------------- -------- ------
53     1      1115151018  0      TAB                             IS       GRANT

锁的类型(Tyep 列值, RID 和 KEY 的话, 表示锁在行上) 有如下几种:
RID = 表中单个行的锁,由行标识符 (RID) 标识。
KEY = 索引内保护可串行事务中一系列键的锁。
PAG = 数据页或索引页的锁。
EXT = 对某区的锁。
TAB = 整个表(包括所有数据和索引)的锁。
DB = 数据库的锁。
FIL = 数据库文件的锁。
APP = 指定的应用程序资源的锁。
MD = 元数据或目录信息的锁。
HBT = 堆或 B 树索引的锁。在 SQL Server 2005 中此信息不完整。
AU = 分配单元的锁。在 SQL Server 2005 中此信息不完整。

显示的结果无法知道是哪个对象,可以使用下面的语句来查看
Select * From sysdatabases where dbid=[dbid]   --数据库
Select * from sysobjects where id=[ObjId]      --表或其他对象
Select * from sysindexes where id=[IndId]      --索引
--此处[]内为表中对应列的值

sql server锁检测的更多相关文章

  1. [转]了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密_Mr_Indigo的空间

    了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密 关系型数据库,如SQL Server,使用锁来避免多用户修改数据时的并发冲突.当一组数据被某个用户锁定时,除非第一个用户结束修 ...

  2. 了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密

    关系型数据库,如SQL Server,使用锁来避免多用户修改数据时的并发冲突.当一组数据被某个用户锁定时,除非第一个用户结束修改并释放锁,否则其他用户就无法修改该组数据. 有些数据库,包括SQL Se ...

  3. SQL Server锁类型

    SQL Server锁类型(SQL)收藏 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁. 2. NOLOCK:不添加共享锁和排它锁,当这个选项生 ...

  4. 转:sql server锁知识及锁应用

    sql server锁(lock)知识及锁应用 提示:这里所摘抄的关于锁的知识有的是不同sql server版本的,对应于特定版本时会有问题. 一 关于锁的基础知识 (一). 为什么要引入锁 当多个用 ...

  5. sql server 锁与事务拨云见日(上)

    一.概述 讲到sql server锁管理时,感觉它是一个大话题,因为它不但重要而且涉及的知识点很多,重点在于要掌握高并发要先要掌握锁与事务,涉及的知识点多它包括各式各样的锁,锁的组合,锁的排斥,锁延伸 ...

  6. SQL SERVER锁(LOCK)知识及锁应用

    提示:这里所摘抄的关于锁的知识有的是不同sql server版本的,对应于特定版本时会有问题. 一 关于锁的基础知识 (一). 为什么要引入锁 当多个用户同时对数据库的并发操作时会带来以下数据不一致的 ...

  7. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  8. SQL Server 锁表、查询被锁表、解锁相关语句

    SQL Server 锁表.查询被锁表.解锁相关语句,供参考. --锁表(其它事务不能读.更新.删除) BEGIN TRAN SELECT * FROM <表名> WITH(TABLOCK ...

  9. SQL Server— 存在检测、建库、 建表、约束、外键、级联删除

    /******************************************************************************** *主题: SQL Server- 存 ...

随机推荐

  1. 3dmax卡通渲染插件pencil+渲染线框

    转自:http://www.cr173.com/soft/179512.html http://www.psoft.co.jp/jp/ 官网和YTB有 2代的视频教程,平均每个2分钟长,无解说,是日文 ...

  2. 使用nginx反向代理进行负载均衡

    在这里简单记录一下,我使用Nginx反向代理进行负载均衡,将请求发送到两台tomcat上. 首先解压两个tomcat,解压Nginx,一台tomcat配置可以不用动,但是我为了更方便只是将它的端口改为 ...

  3. nginx与tomcat整合

    nginx与tomcat整合   1. 在/usr/local/nginx/conf下面添加文件proxy.conf # cat /usr/local/nginx/confg/proxy.conf p ...

  4. OD 实验(三) - 破解程序的文件验证

    需要破解的程序 双击程序,提示需要许可证文件 逆向程序 用 OD 打开 LoadIconA 为加载图标 LoadCursorA 为加载鼠标 F8 走一下程序 走到了这里,调用了 CreateFileA ...

  5. Tkinter place() 方法

    Python GUI - Tkinter place() 方法的使用例子:   这个的几何管理器组织放置在一个特定的位置,在他们的父widget部件. 语法: widget.place( place_ ...

  6. CentOS7.6安装JDK(Openjdk)

    安装开始: 第一步: 使用yum源安装 OpenJDK,yum install -y java-1.8.0-openjdk 第二步: 查看安装版本,java -version 运行时发现错误汇总: 错 ...

  7. 26_java之进程|线程|线程池

    01进程概念 *A:进程概念 *a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 02线程的概念 *A:线程的概 ...

  8. “C# 未在本地计算机上注册microsoft.Jet.OLEDB.12.0”的解决方案

    在进行Access数据库进行操作时,连接字符串为: OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLED ...

  9. StringUtils的isNotEmpty和isNotBlank

    StringUtils中一共有130多个方法,并且都是static的,所以我们可以这样调用StringUtils.xxx():今天笔者记录下常用的isNotEmpty和isNotBlank:这两个都是 ...

  10. VRRP概述

    随着Internet的发展,人们对网络的可靠性的要求越来越高.对于局域网用户来说,能够时刻与外部网络保持联系是非常重要的. 通常情况下,内部网络中的所有主机都设置一条相同的缺省路由,指向出口网关(即图 ...