SQL Server 查询死锁以及解决死锁的基本知识(图文)

news2024/9/19 10:35:31

目录

  • 1. 基本知识
  • 2. 查看和解锁被锁的表
  • 3. 查看和处理数据库堵塞

1. 基本知识

在 SQL Server 中,死锁是指两个或多个进程互相等待对方持有的资源,从而无法继续执行的现象

要解决死锁问题,首先需要识别并分析死锁的发生原因,然后采取相应的措施来预防和处理死锁

识别死锁的常用方法有以下几种:

  • 使用 SQL Server Profiler:可以捕获死锁事件,生成死锁图
  • 使用 Extended Events:更轻量级,适用于生产环境
  • 启用死锁跟踪标志:可以使用 DBCC TRACEON 命令启用死锁跟踪标志(如 1222 或 1204),以记录死锁信息到 SQL Server 错误日志中
-- 启用死锁跟踪标志
DBCC TRACEON (1222, -1);
DBCC TRACEON (1204, -1);

-- 关闭死锁跟踪标志
DBCC TRACEOFF (1222, -1);
DBCC TRACEOFF (1204, -1);
  • 查看系统健康报告:SQL Server 2016 及更高版本提供的系统健康报告可以捕获和记录死锁事件

在这里插入图片描述

可以使用以下查询查看当前活动的进程:

-- 查看活动的进程
SELECT 
    session_id, 
    blocking_session_id, 
    wait_type, 
    wait_time, 
    wait_resource, 
    last_wait_type, 
    status, 
    command, 
    sql_handle, 
    statement_start_offset, 
    statement_end_offset, 
    plan_handle, 
    database_id, 
    user_id, 
    cpu_time, 
    reads, 
    writes, 
    logical_reads, 
    row_count 
FROM 
    sys.dm_exec_requests;

截图如下:

在这里插入图片描述

杀死特定进程

一旦确定了要终止的会话ID,可以使用以下命令终止该进程:

KILL <session_id>;  -- 替换为实际的会话ID

2. 查看和解锁被锁的表

查看被锁的表
要查看当前被锁的表,可以使用以下查询:

SELECT 
    request_session_id AS spid, 
    OBJECT_NAME(resource_associated_entity_id) AS tableName
FROM 
    sys.dm_tran_locks 
WHERE 
    resource_type = 'OBJECT';

截图如下所示:

在这里插入图片描述

解锁被锁表:

DECLARE @spid INT;
SET @spid = 88;  -- 替换为要终止的会话ID

DECLARE @sql VARCHAR(1000);
SET @sql = 'KILL ' + CAST(@spid AS VARCHAR);
EXEC(@sql);

3. 查看和处理数据库堵塞

查看数据库是否堵塞
要查看数据库中的堵塞情况,可以使用以下查询:

SELECT * 
FROM sys.sysprocesses 
WHERE blocked <> 0;

截图如下:

在这里插入图片描述

这个查询会返回所有被阻塞的进程,blocked 列表示当前进程被哪个进程阻塞

根据ID查找对应的SQL进程
要查看特定会话正在执行的SQL语句,可以使用以下命令:(显示指定会话正在执行的最后一条SQL语句)

DBCC INPUTBUFFER(110);  -- 替换为实际的会话ID

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++基础语法:链表和数据结构

前言 "打牢基础,万事不愁" .C的基础语法的学习 引入 链表是最基础的数据集合,对标数组.数组是固定长度,随机访问,链表是非固定长度,不能随机访问.数组查找快,插入慢;链表是插入快,查找慢. 前面推导过"数据结构算法数据集合".想建立一个数据集合,就要设计数…

K8S中部署 Nacos 集群

1. 准备 GitK8Skubectlhelm 咱也没想到 K8S 部署系列能搞这么多次&#xff0c;我一个开发天天干运维的活&#xff0c;前端后端运维测试工程师实至名归。 2. 方案选择 https://github.com/nacos-group/nacos-k8s 我替你们看了一下&#xff0c;有好几种方式能部署&#xff…

极狐Gitlab安装部署

GitLab 是一个基于 Git 的开源 DevOps 平台&#xff0c;提供代码仓库管理、CI/CD&#xff08;持续集成和持续交付&#xff09;、项目管理、监控和安全等功能。它集成了多种工具&#xff0c;帮助开发团队在一个平台上进行代码开发、测试、部署和运维。以下是 GitLab 的主要功能和…

LLM - 绝对与相对位置编码 与 RoPE 旋转位置编码 源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140281680 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Transformer 是基于 MHSA (多头自注意力),然而,MHSA 对于位置是不敏感…

自定义类型:联合体

像结构体一样&#xff0c;联合体也是由一个或者多个成员组成&#xff0c;这些成员可以是不同的类型。 联合体类型的声明 编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫&#xff1a;共⽤体。 输出结果&#xff1a; 联合体…

AcWing 3381:手机键盘

【题目来源】https://www.acwing.com/problem/content/3384/【题目描述】 请你计算按照手机键盘&#xff08;9键输入法&#xff09;输入字母的方式&#xff0c;键入给定字符串&#xff08;由小写字母构成&#xff09;所花费的时间。 具体键入规则和花费时间如下描述&#xff1a…

科普文:Java对象在堆中的内存结构

概叙 今天来讲些抽象的东西 -- 对象头&#xff0c;因为我在学习的过程中发现很多地方都关联到了对象头的知识点&#xff0c;例如JDK中的 synchronized锁优化 和 JVM 中对象年龄升级等等。 对象内存构成# Java 中通过 new 关键字创建一个类的实例对象&#xff0c;对象存于内存的…

【人工智能】-- 反向传播

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f349;反向传播 &#x1f348;定义 &#x1f348;反向传播的作用 &#x1f34d;参数优化 &#x1f34d;学…

软件测试学习之-ADB命令

ADB命令 adb工具即Android Debug Bridge&#xff08;安卓调试桥&#xff09; tools。它就是一个命令行窗口&#xff0c;用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统&#xff0c;adb就派上用场啦&#xff01; Android程序的开发通常需要使用到一…

解决Anaconda下载pytorch常见问题

1.问题一 安装完Anaconda后&#xff0c;输入conda命令&#xff0c;出现 conda不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 分析原因&#xff1a;未配置环境到系统变量 解决方法&#xff1a;将Anaconda安装路径和Anaconda目录下的Scripts文件的路径配…

本地部署,GFPGAN: 实用的面部修复算法

目录 什么是 GFPGAN&#xff1f; 技术原理 主要功能 应用场景 本地安装 运行结果 结语 Tip&#xff1a; 在图像处理和计算机视觉领域&#xff0c;面部修复是一个重要且具有挑战性的研究方向。随着深度学习技术的不断进步&#xff0c;许多新的算法被提出&#xff0c;用于…

Linux笔记之使用系统调用sendfile高速拷贝文件

Linux笔记之使用系统调用sendfile高速拷贝文件 code review! 文章目录 Linux笔记之使用系统调用sendfile高速拷贝文件sendfile 性能优势sendfile 系统调用优点&#xff1a;缺点&#xff1a; cp 命令优点&#xff1a;缺点&#xff1a; 实际测试&#xff1a;拷贝5.8个G的文件&a…

《Windows API每日一练》9.1.5 自定义资源

自定义资源&#xff08;Custom Resources&#xff09;是在 Windows 程序中使用的一种资源类型&#xff0c;用于存储应用程序特定的数据、图像、音频、二进制文件等。通过自定义资源&#xff0c;开发者可以将应用程序所需的各种资源文件集中管理和存储&#xff0c;便于在程序中访…

开源可视化Flutter图表库:Graphic

Graphic&#xff1a;用Graphic绘制数据的无限可能- 精选真开源&#xff0c;释放新价值。 概览 Graphic&#xff0c;这个基于Flutter的图表库&#xff0c;以其源自《The Grammar of Graphics》的灵感&#xff0c;为数据可视化提供了一种全新的方法。它不仅仅是一个工具&#xf…

安全策略与用户认证综合实验

一、实验拓扑 二、实验需求 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器,仅能ping通10.0.3.10 4,办公区…

【运维】docker批量删除临时镜像(两种方式)

docker批量删除Tag<none>的临时镜像 在开发的时候&#xff0c;需要经常发布开发包&#xff0c;在使用docker build构建镜像的时候&#xff0c;同一个版本经常会使用相同tag&#xff0c;频繁打包一段时间后&#xff0c;本地会出现很多Tag<none>的临时镜像&#xff…

WordPress知识付费系统+自动采集插件

采集功能&#xff1a; 1.支持分类替换 将主站同步过来的文章分类进行替换 2.支持自定义文章作者&#xff08;选择多个作者则同步到的文章作者将会随机分配&#xff09; 3.支持添加黑名单分类 添加后 如果同步过来的文章包含黑名单分类将不会发布文章 4.自动检测同步&#xf…

禁止使用存储过程

优质博文&#xff1a;IT-BLOG-CN 灵感来源 什么是存储过程 存储过程Stored Procedure是指为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户可通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff09;来调用执行。 …

wifi ping ip地址可以但是域名失败

需求&#xff1a; 当连接上wifi之后获取&#xff0c;能正常获取IP并且能ping ip地址&#xff0c;但是不能ping域名&#xff0c;比如ping www.baidu.com 会显示坏地址 解决&#xff1a; 在/etc/resolv.conf中添加域名即可

NLP入门——词袋语言模型的搭建、训练与预测

卷积语言模型实际上是取了句子最后ctx_len个词作为上下文输入模型来预测之后的分词。但更好的选择是我们做一个词袋&#xff0c;将所有分词装在词袋中作为上下文&#xff0c;这样预测的分词不只根据最后ctx_len个分词&#xff0c;而是整个词袋中的所有分词。 例如我们的序列是&…