SQL优化中的重要概念:阻塞
上一篇讲到锁定的概念,那么接下来就是如何找到由于锁定而发生阻塞的进程,并解决阻塞问题。
1、会话1,修改数据,但没有提交事务
-
BEGIN TRAN
-
-
select @@SPID --输出:287
-
-
UPDATE t
-
SET v = '88888'
-
WHERE idd = 1
2、会话2,由于会话一事务没有提交,导致阻塞
-
BEGIN TRAN
-
-
select @@SPID --输出:105
-
-
UPDATE t
-
SET v = '888'
-
WHERE idd = 1
-
--查询会话1的等待信息
-
select session_id, --查询的会话,也就是被阻塞的会话
-
wait_duration_ms, --等待毫秒数
-
wait_type, --等待类型,如:LCK_M_X表示正在等待获取排他锁
-
-
-
blocking_session_id --阻塞session_id会话的会话
-
from sys.dm_os_waiting_tasks
-
where session_id = 105
3、查询这个被阻塞的会话请求的资源情况
从输出结果看,会话2在update时一共获取了4个锁,共享数据库锁、2个意向独占锁(锁定表、数据页),
一个键锁锁住那条要更新的记录,只有这个键锁的请求状态时wait,
其他3个锁状态为grant表示已经会话2已经获得了锁。
-
select resource_type,
-
-
request_status,
-
request_mode,
-
request_session_id
-
-
from sys.dm_tran_locks
-
where request_session_id = 105
另一种查看阻塞会话的方法,查看当前会话的执行请求:
-
select session_id,
-
status,
-
-
blocking_session_id,
-
wait_type,
-
wait_time
-
from sys.dm_exec_requests
-
where session_id = 105
4、 设置等待锁释放的时间
由于阻塞一段时间后,可能会超过设置的等待时间,返回锁定错误,所以,我们可以设置超时时段,以毫秒为单位。
SQL优化中的重要概念:阻塞的更多相关文章
- SQL优化中的重要概念:事务
原文:SQL优化中的重要概念:事务 sql 优化和事务有关系? 从表面上看,让sql跑的更快,似乎和事务这个概念没什么联系,但是关系数据库中最重要的2个概念就是 关系.事务. 关系,对应到sql中,是 ...
- SQL优化中的重要概念:锁定
原文:SQL优化中的重要概念:锁定 上篇文章讲的是事务,这篇就引出另一个重要概念,就是锁定. 当一个用户要读取另一个用户正在修改的数据,或者一个用户正在修改另一个用户正在读取的数据,或者一个用户要修改 ...
- SQL优化中的重要概念:死锁
原文:SQL优化中的重要概念:死锁 上面几篇文章讲到 事务.锁定.阻塞,最后还有一种比较极端的情况,就是死锁,这也是锁定.阻塞的一种情况. 死锁是当两个事务分别锁定了资源,而又继续请求对方已获取的资源 ...
- Sql Server 中锁的概念(1)
Sql Server 中锁的概念 锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破 ...
- SQL Server中SELECT会真的阻塞SELECT吗?
在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.T ...
- 理解SQL Server中索引的概念
T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...
- Sql Server 中锁的概念
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...
- 面试被问之-----sql优化中in与exists的区别
曾经一次去面试,被问及in与exists的区别,记得当时是这么回答的:''in后面接子查询或者(xx,xx,xx,,,),exists后面需要一个true或者false的结果",当然这么说也 ...
- T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...
随机推荐
- mac、windows、linux版jdk1.8下载
链接: https://pan.baidu.com/s/1Yjs6GIxURiocq30zZ7heYQ 提取码: g6i8
- Angular 中的 dom 操作(ViewChild)以及父子组件中通过 ViewChild 调用子组件的方法
<app-header #header></app-header> <div #myBox> 我是一个dom节点 </div> <button ( ...
- osg::GraphicsContext::WindowingSystemInterface Screen Resolution(屏幕分辨率)
unsigned int width, height; //获取系统分辨率 osg::GraphicsContext::WindowingSystemInterface *wsInterface = ...
- Greenwich.SR2版本的Spring Cloud Ribbon实例
上次我们了解了eureka(参见Greenwich.SR2版本的Spring Cloud Eureka实例),里面的服务消费方(服务实例a-beautiful-client)我们其实已经用到了ribb ...
- 最简易的python web框架的后端实现
1.源代码 #!/usr/bin/python #encoding=utf-8 from flask import json, Flask, request app = Flask(__name__) ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_04-用户认证技术方案-SpringSecurityOauth2
2.3 Spring security Oauth2认证解决方案 本项目采用 Spring security + Oauth2完成用户认证及用户授权,Spring security 是一个强大的和高度 ...
- 运行时给java对象动态的属性赋值
运行时给java对象动态的属性赋值 如何给java对象动态的属性赋值(也就是在代码执行的时候才决定给哪个属性赋值) 1.自定义一个工具类ReflectHelper,代码如下所示: pa ...
- building confluentinc kafka-connect-hdfs
When I try to compile I get an error about a missing SNAPSHOT dependency. The error looks something ...
- 【AI教育】可以看看行业痛点分析
http://www.woshipm.com/it/2801582.html 至于解决方案嘛,还在堆砌技术的阶段.
- CGAffineTransform的使用大概:
1. CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平移操作: transform我们一般称为形变属性,其本 ...