问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何查看死锁的”SQL语句“或”存储过程“

发布网友 发布时间:2022-04-25 15:16

我来回答

2个回答

热心网友 时间:2022-04-07 19:22

假如发生了死锁,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程?此时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句。

Sql代码
usemaster
go
create proceresp_who_lock
as
begin
declare @spid int,@blint,
@intTransactionCountOnEntryint,
@intRowcountint,
@intCountPropertiesint,
@intCounter int

create table #tmp_lock_who(
id intidentity(1,1),
spidsmallint,
blsmallint)

IF @@ERROR<>0 RETURN@@ERROR

insert into#tmp_lock_who(spid,bl) select 0 ,blocked
from (select * fromsysprocesses where blocked>0 ) a
where not exists(select *from
(select * from sysprocesseswhere blocked>0 ) b
wherea.blocked=spid)
union select spid,blockedfrom sysprocesses where blocked>0

IF @@ERROR<>0 RETURN@@ERROR

-- 找到临时表的记录数
select @intCountProperties= Count(*),@intCounter = 1
from#tmp_lock_who

IF @@ERROR<>0 RETURN@@ERROR

if@intCountProperties=0
select '现在没有阻塞和死锁信息' as message

-- 循环开始
while @intCounter <=@intCountProperties
begin
-- 取第一条记录
select @spid = spid,@bl =bl
from #tmp_lock_who where Id= @intCounter
begin
if @spid=0
select '引起数据库死锁的是: '+ CAST(@bl ASVARCHAR(10))
+ '进程号,其执行的SQL语法如下'
else
select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))
+ '被进程号SPID:'+ CAST(@bl ASVARCHAR(10))
+ '阻塞,其当前进程执行的SQL语法如下'DBCC INPUTBUFFER

use master
go
create proceresp_who_lock
as
begin
declare @spid int,@bl int,
@intTransactionCountOnEntryint,
@intRowcount int,
@intCountProperties int,
@intCounter int

create table #tmp_lock_who(
id int identity(1,1),
spid smallint,
bl smallint)

IF @@ERROR<>0 RETURN@@ERROR

insert into#tmp_lock_who(spid,bl) select 0 ,blocked
from (select * fromsysprocesses where blocked>0 ) a
where not exists(select *from
(select * from sysprocesseswhere blocked>0 ) b
where a.blocked=spid)
union select spid,blockedfrom sysprocesses where blocked>0

IF @@ERROR<>0 RETURN@@ERROR

-- 找到临时表的记录数
select @intCountProperties= Count(*),@intCounter = 1
from #tmp_lock_who

IF @@ERROR<>0 RETURN@@ERROR

if @intCountProperties=0
select '现在没有阻塞和死锁信息' as message

-- 循环开始
while @intCounter <=@intCountProperties
begin
-- 取第一条记录
select @spid = spid,@bl =bl
from #tmp_lock_who where Id= @intCounter
begin
if @spid =0
select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10))
+ '进程号,其执行的SQL语法如下'
else
select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))
+ '被进程号SPID:'+ CAST(@bl AS VARCHAR(10))
+ '阻塞,其当前进程执行的SQL语法如下'DBCC INPUTBUFFER
与锁定有关的两个问题--死锁和阻塞

热心网友 时间:2022-04-07 20:40

找到事务号,可以从 events_statements_current 找到对应的 SQL 语句:
SQL_TEXT: delete from action1 where id = 3 //具体的sql语句
DIGEST: 8f9cdb489c76ec0e324f947cc3faaa7c
DIGEST_TEXT: DELETE FROM `action1` WHERE `id` = ?
CURRENT_SCHEMA: test1
OBJECT_TYPE: NULL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: NULL
MYSQL_ERRNO: 0
RETURNED_SQLSTATE: 00000
MESSAGE_TEXT: NULL
ERRORS: 0
WARNINGS: 0
ROWS_AFFECTED: 1
ROWS_SENT: 0
ROWS_EXAMINED: 3
CREATED_TMP_DISK_TABLES: 0
CREATED_TMP_TABLES: 0
SELECT_FULL_JOIN: 0
SELECT_FULL_RANGE_JOIN: 0
SELECT_RANGE: 0
SELECT_RANGE_CHECK: 0
SELECT_SCAN: 0
SORT_MERGE_PASSES: 0
SORT_RANGE: 0
SORT_ROWS: 0
SORT_SCAN: 0
NO_INDEX_USED: 0
NO_GOOD_INDEX_USED: 0
NESTING_EVENT_ID: NULL
NESTING_EVENT_TYPE: NULL
NESTING_EVENT_LEVEL: 0
1 row in set (0.00 sec)

可以看到是一条 delete 阻塞了后续的 update,生产环境中可以拿着这条 SQL 语句询问开发,是不是有 kill 的必要。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哥们,我是黑龙江齐齐哈尔现在高一的,想报考中国刑警学院,什么分数线啊... 没有驾驶证车辆查到有违章怎么办 广州岭南印象园景区介绍 ...从新选像我这样的人不知道读什么又懒又不想背书。 哎呀哎呀好烦阿要期末考试了,我不想背书 高考我是文科的光不想背书怎么办呢 我不想背书啊啊啊啊,考第一真难,现在的初中生涯好难熬,哪位大神教我... 现在初二了 不想背书 感觉好无聊 只想玩 但是成绩还是不错的 我该... ...时候学习还中等。现在基本一窍不通。也不想背书,身边也没人背,上课... [精选]菊花茶的副作用 人均gdp第一的市辖区 mysql show processlist能直接看到死锁的信息吗?我怎么没看出来 哪位亲人能评价一下大连金州区在大连市的地位,以及金州自身的水平,重点在吃的,玩的,经济,环境,住房 从长春到大连旅游 交易猫帐号交易时显示已交易次数,是不是代表被找回过? 辽宁省各市人均gdp排名 怎么查看mysql表是否被锁定 出自天涯武侠贴里的一个高级*笑话,后面两句实在太高深了,求解释 求翻译 什么是或有事项?《会计法》对或有事项的披露是如何要求的? 谁能给我介绍几本好看的武侠小说,不要修真的。带*的最好武侠。?求 8090年代武侠电视剧女主变成黄色小鸟的情节是哪部剧? 为什么金庸武侠中女子衣服颜色中白色最美,紫色最不讨喜呢? 简述或有负债的披露方法 有没有新的好看的小说啊(不要恐怖,武侠,*的)推荐几个,最好可以电子书下载。 应付票据未终止确认在哪个会计科目披露? 有什么好看的武侠小说啊!内容不要*的只要是一心一意的就可以了 持有商业承兑汇票,为什么年末要在资产负债表附注&quot;已贴现的商业承兑汇票&quot; 或有资产、或有负债什么情况下不需要披露? 类似绝代双骄这种武侠小说,*少一些,适合老一代看的有没有? 深圳有比较好的心理咨询师吗? 西南三省和东北三省大比拼,谁更胜一筹呢? 关于28个普通地市人均GDP超10万一事,你有何看法? 请告诉辽宁省2007年末区县市基本情况 大连公安局金洲分局大还是开发区分局大 提示猜城市1市位于两省交界2该市设有三区三县3该市2018年GDP总值和人均GDP在所在省份排第三 贷款50万,10年还清,等额本息还款和等额本金每月各还多少? 等额本金贷款与等额本息贷款50万十年期相差多少利息? 以50万的房贷来计算,等额本息和等额本金有多少差异,每月还款是多少呢? 等额本金和等额本息分别贷款50万元16年利息差多少 温水煮青蛙的故事 等额本息利息5.29。20年。与等额本金相差利息多少?贷款50万。 “温水煮青蛙”是什么意思? 贷款50万20年还钱等额本金利息多少,等额本息多少? 50万房贷,15年等额本息和20年等额本金哪种伐算? 请问温水煮青蛙是什么意思? 如果跨行转账多久到账,比如我今天5点转的话,次日几点能到账? 我2015年银行贷款50万,20年还清,等额本金和等额本息的区别 温水煮青蛙告诉我们什么道理? 本次买房 贷款50万 贷20年,按照等额本金每月还多少?等额本息又还多少,怎么个算法呢 ? 温水煮青蛙的故事是怎么来的?