原文:SQL优化中的重要概念:阻塞


上一篇讲到锁定的概念,那么接下来就是如何找到由于锁定而发生阻塞的进程,并解决阻塞问题。

1、会话1,修改数据,但没有提交事务


  1. BEGIN TRAN
  2. select @@SPID --输出:287
  3. UPDATE t
  4. SET v = '88888'
  5. WHERE idd = 1

2、会话2,由于会话一事务没有提交,导致阻塞


  1. BEGIN TRAN
  2. select @@SPID --输出:105
  3. UPDATE t
  4. SET v = '888'
  5. WHERE idd = 1
  6. --查询会话1的等待信息
  7. select session_id, --查询的会话,也就是被阻塞的会话
  8. wait_duration_ms, --等待毫秒数
  9. wait_type, --等待类型,如:LCK_M_X表示正在等待获取排他锁
  10. blocking_session_id --阻塞session_id会话的会话
  11. from sys.dm_os_waiting_tasks
  12. where session_id = 105

3、查询这个被阻塞的会话请求的资源情况

从输出结果看,会话2在update时一共获取了4个锁,共享数据库锁、2个意向独占锁(锁定表、数据页),

一个键锁锁住那条要更新的记录,只有这个键锁的请求状态时wait,

其他3个锁状态为grant表示已经会话2已经获得了锁。


  1. select resource_type,
  2. request_status,
  3. request_mode,
  4. request_session_id
  5. from sys.dm_tran_locks
  6. where request_session_id = 105

另一种查看阻塞会话的方法,查看当前会话的执行请求:


  1. select session_id,
  2. status,
  3. blocking_session_id,
  4. wait_type,
  5. wait_time
  6. from sys.dm_exec_requests
  7. where session_id = 105

4、 设置等待锁释放的时间

由于阻塞一段时间后,可能会超过设置的等待时间,返回锁定错误,所以,我们可以设置超时时段,以毫秒为单位。

发布了416 篇原创文章 · 获赞 135 · 访问量 94万+

SQL优化中的重要概念:阻塞的更多相关文章

  1. SQL优化中的重要概念:事务

    原文:SQL优化中的重要概念:事务 sql 优化和事务有关系? 从表面上看,让sql跑的更快,似乎和事务这个概念没什么联系,但是关系数据库中最重要的2个概念就是 关系.事务. 关系,对应到sql中,是 ...

  2. SQL优化中的重要概念:锁定

    原文:SQL优化中的重要概念:锁定 上篇文章讲的是事务,这篇就引出另一个重要概念,就是锁定. 当一个用户要读取另一个用户正在修改的数据,或者一个用户正在修改另一个用户正在读取的数据,或者一个用户要修改 ...

  3. SQL优化中的重要概念:死锁

    原文:SQL优化中的重要概念:死锁 上面几篇文章讲到 事务.锁定.阻塞,最后还有一种比较极端的情况,就是死锁,这也是锁定.阻塞的一种情况. 死锁是当两个事务分别锁定了资源,而又继续请求对方已获取的资源 ...

  4. Sql Server 中锁的概念(1)

    Sql Server 中锁的概念   锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破 ...

  5. SQL Server中SELECT会真的阻塞SELECT吗?

    在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...

  6. 理解SQL Server中索引的概念

    T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他   简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...

  7. Sql Server 中锁的概念

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...

  8. 面试被问之-----sql优化中in与exists的区别

    曾经一次去面试,被问及in与exists的区别,记得当时是这么回答的:''in后面接子查询或者(xx,xx,xx,,,),exists后面需要一个true或者false的结果",当然这么说也 ...

  9. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

随机推荐

  1. Linux 基于WEB开源的系统管理工具webmin

    Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作.目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的l ...

  2. SQL-W3School-函数:SQL FIRST() 函数

    ylbtech-SQL-W3School-函数:SQL FIRST() 函数 1.返回顶部 1. FIRST() 函数 FIRST() 函数返回指定的字段中第一个记录的值. 提示:可使用 ORDER ...

  3. 骑行川藏--新都桥&塔公草原

    新都桥 塔公草原 新都桥,位于四川省甘孜藏族自治州康定市西部地区,距市区81公里: 别名:东俄罗,一个镇名.海拔约3300米,没有突出的标志性景观,沿线有10余公里被称为“摄影家走廊”. 神奇光线,无 ...

  4. ASP如何将table导出EXCEL表格

    网页导出excel表格非常常用,对于一些加载<table>的数据网页,经常会用到这种功能,下面和大家分享一下ASP如何导出EXCEL表格 工具/原料   ASP编辑器 方法/步骤     ...

  5. 开启windows ping端口功能

    1.打开控制面板,选择程序 2.选择打开和关闭windows功能 3.将Tenet客户端选项勾上 4.运行栏中输入cmd,进入到命令窗口 5.输入命令   ping    ip地址     端口号  ...

  6. Django之model.form创建select标签

    前言 之前我们学习了form表单验证用户输入格式和自动创建HTML,那么如果用户创建select标签时怎么办呢,先来看下这个东西: models.py 数据格式: class UserInfo(mod ...

  7. easyui datagrid设置一开始不加载数据

    解决办法就是:一开始的url属性设置为空,例如: <table id="dg" title="用户管理" class="easyui-datag ...

  8. SLAM十四讲中Sophus库安装

    Sophus截止目前有很多版本,其中大体分为两类,一种是用模板实现的方法,一种是用非模板类实现的,SLAM十四讲中使用的是非模板类库,clone Sophus: git clone http://gi ...

  9. 【Leetcode_easy】707. Design Linked List

    problem 707. Design Linked List 参考 1. Leetcode_easy_707. Design Linked List; 完

  10. (CVE-2017-7494)Samba远程代码执行[Linux]

    简介 此漏洞是针对开启了共享的smb服务 漏洞利用 启动msfconsole search is_known_pipename   搜索此模块 use exploit/linux/samba/is_k ...