SqlServer运维——查询阻塞

news/2024/12/18 18:31:47/文章来源:https://www.cnblogs.com/shanzhiming/p/18615625

目录
  • 0. 演示阻塞
  • 1. 基于sys.dm_exec_requests视图
  • 2. 在MSSM中通过“活动和监视器”查看
  • 3. 完整脚本查询阻塞

0. 演示阻塞

  1. 首先MSSM中打开一个查询会话,这个是进程68

执行一个更新操作,但是不提交事务

BEGIN TRANSACTION
UPDATE dbo.AAMyTestMsg SET	Mes='1' WHERE CreateTime='2024-07-18 15:04:46.873'
--COMMIT TRANSACTION
  1. 另开一个查询界面,进程:92

执行如下删除语句

DELETE	 dbo.AAMyTestMsg WHERE CreateTime='2024-07-18 15:04:46.873'

此时,会话92一直处于:正在执行查询

1. 基于sys.dm_exec_requests视图

  1. 使用sys.dm_exec_requests视图,查询一个进程被另外一个进程阻塞
SELECT session_id,blocking_session_id,wait_time,wait_type,last_wait_type,wait_resource,transaction_isolation_level,lock_timeout
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
GO

若是没有阻塞,则查询无结果。

在上述构造的阻塞的情形下,执行上述查询脚本,可以看到如下结果

session_id blocking_session_id wait_time wait_type last_wait_type wait_resource transaction_isolation_level lock_timeout
92 68 275165 LCK_M_U LCK_M_U RID: 13:1:3829888:1 2 -1
  • 说明1:进程92被进程68阻塞。
  • 说明2:session_id(被阻塞会话),blocking_session_id(阻塞者)

2. 在MSSM中通过“活动和监视器”查看

可以在MSSM中的直接右键服务器连接-->活动和监视器-->查看:进程

这里我们简单的摘录几个主要字段如下:

会话ID 任务状态 命令 阻塞者 头阻塞程序
68 1
92 SUSPENED DELETE 68

在界面商可以直接选中行右键-->详细信息,可以查看当前会话在执行的语句

3. 完整脚本查询阻塞

  • 基于该脚本,可以查询阻塞的的会话ID,阻塞者ID,以及当前会话的执行的SQL语句

  • 来源金蝶官方提供

SELECT t1.resource_type AS [锁类型], DB_NAME(resource_database_id) AS [数据库名], t1.resource_associated_entity_id AS [阻塞资源对象],t1.resource_description AS [资源描述信息], t1.request_mode AS [请求的锁], t1.request_session_id AS [等待会话],t2.wait_duration_ms AS [等待时间], (SELECT [text]FROM  sys.dm_exec_requests AS r WITH(NOLOCK)CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle])WHERE r.session_id=t1.request_session_id) AS [等待会话执行的批SQL],(SELECT SUBSTRING(qt.[text], r.statement_start_offset / 2,(CASE WHEN r.statement_end_offset=-1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.[text]))* 2 ELSE r.statement_end_offset END)/ 2)FROM  sys.dm_exec_requests AS r WITH(NOLOCK)CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qtWHERE r.session_id=t1.request_session_id) AS [等待会话执行的SQL], t2.blocking_session_id AS [阻塞会话],(SELECT [text]FROM  sys.sysprocesses AS pCROSS APPLY sys.dm_exec_sql_text(p.[sql_handle])WHERE p.spid=t2.blocking_session_id) AS [阻塞会话执行的批SQL]
FROM  sys.dm_tran_locks AS t1 WITH(NOLOCK)INNER JOIN sys.dm_os_waiting_tasks AS t2 WITH(NOLOCK)ON t1.lock_owner_address=t2.resource_address
OPTION(RECOMPILE);

结果:

锁类型 数据库名 阻塞资源对象 资源描述信息 请求的锁 等待会话 等待时间 等待会话执行的批SQL 等待会话执行的SQL 阻塞会话 阻塞会话执行的批SQL
RID AIS20241115140817 72057600326893500 1:3829888:1 U 92 893096 (@1 varchar(8000))DELETE [dbo].[AAMyTestMsg] WHERE [CreateTime]=@1 )DELETE [dbo].[AAMyTestMsg] WHERE [CreateTime]=@1 68 BEGIN TRAN UPDATE dbo.AAMyTestMsg SET Mes='1' WHERE CreateTime='2024-07-18 15:04:46.873'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854917.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.13

实验2 熟悉常用的HDFS操作1.实验目的 (1)理解HDFS在Hadoop体系结构中的角色; (2)熟练使用HDFS操作常用的Shell命令; (3)熟悉HDFS操作常用的Java API。 2. 实验平台 (1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); (2)Hadoop版本:3.1.3; (3)JDK版本:1.…

12.10

实验八:随机森林算法实现与测试一、实验目的 深入理解随机森林的算法原理,进而理解集成学习的意义,能够使用 Python 语言实现随机森林算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容 (1)从 scikit-learn 库中加载 iris 数据集,使用留出法…

Tengine:Nginx二次开发-高性能进化

前言:在当今的互联网时代,Web 服务器的性能和稳定性对于网站的成功至关重要。Nginx 以其高性能和可扩展性而闻名,但有时候,我们需要更多的特性来满足特定的业务需求。Tengine,作为一个由淘宝网发起的 Nginx 二次开发版本,不仅继承了 Nginx 的所有特性,还添加了许多高级功…

【亲测能用】专业科学图形和数据分析软件:OriginPro 2024(附绿色补丁+安装教程)

软件介绍 OriginPro 2024是一款先进的数据分析和图形绘制工具,它在科研、工程、商业和生物医学等多个领域中被广泛采用。这款软件支持导入和导出多种数据格式,例如Excel、CSV和文本文件,使得数据处理变得简单快捷。它不仅提供数据清洗、转换和统计分析功能,以提升数据的准确…

Spring MVC与Swagger常用注解

Swagger工作原理 Swagger的核心功能之一就是通过注解来描述接口和模型,从而生成文档。 Swagger基于springfox-swagger2和springfox-swagger-ui依赖库,进行自动扫描Spring框架,并生成相应的API文档‌。 Spring MVC是Spring框架主要重要的部分,专门用于构建web应用,遵循MVC设…

深度学习基础理论————学习率优化方法(AdaGrad/RMSprop/Adam/Warm-UP)

学习率基础[1] 学习率(Learning Rate)在优化算法,尤其是梯度下降和其变体中,扮演着至关重要的角色。它影响着模型训练的速度和稳定性,并且是实现模型优化的关键参数之一。如何理解呢?在统计学中,线性方程的优化过程通常包括以下步骤:构建方程:定义一个模型,例如线性方…

解锁 AI 编码潜力:提升代码补全精准度的秘诀

在当今快速发展的技术领域,AI 编码辅助工具正逐渐成为开发者的得力助手。这些工具通过学习和预测开发者的编码习惯,提供代码补全建议,极大地提高了编码效率。然而,为了最大化这些工具的潜力,开发者需要了解和应用一些最佳实践。 引言在当今快速发展的技术领域,AI 编码辅助…

jquery多文件上传插件

jquery.imageuploader.js是一款jquery多文件上传插件。该jquery多文件上传插件主要用于上传图片,它允许你选择多个图片文件,也可以直接拖拽图片到指定区域,然后显示图片的预览图和信息,最后通过Ajax一次性上传选择的图片到服务器上。在线预览 下载该jquery多文件上传插件的…

VLM中的适配器adapter起什么作用

An Introduction to VLMs: The Future of Computer Vision Models | by Ro Isachenko | Nov, 2024 | Towards Data Science

模型参数量计算(以transformer为例)

前言 模型中常见的可训练层包括卷积层和线性层,这里将给出计算公式并在pytorch下进行验证。 计算模型的参数: import torch.nn as nndef cal_params(model: nn.Module):num_learnable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)num_non_learna…

文献解读:采用波浪前缘的风电机组翼型后缘降噪实验研究

在半消声室内进行了仿生正弦波形前缘控制风力机翼型尾缘自噪声的实验研究,基于声波束形成结果,展示了波浪前缘的噪声控制效果,波浪形前缘振幅越大、波长越小,对翼型后缘降噪效果越好。最大声压级降低可达33.9dB。题目:采用波浪前缘的风电机组翼型后缘降噪实验研究 关键词:…