我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何分辨MySQL中的死锁和锁等待

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何分辨MySQL中的死锁和锁等待

这篇文章给大家介绍如何分辨MySQL中的死锁和锁等待,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

【数据库版本】MySQL5.7

程序报错1205 Lock wat timeout exceeded,以为是deadlock,其实是两个概念,说明死锁监控模块是没问题的。死锁监控到的是死锁,而不是锁等待。

报错信息如下:

SQLSTATEHY000]:General error: 1205 Lock wat timeout exceeded; try restarting transaction (SQL: UPDATE xx set xxx = 100 where id=1 and rock_id > 1) 

1213 Deadlock found when trying to get lock; try restarting transaction

https://www.cnblogs.com/tartis/p/9366574.html

https://dev.mysql.com/doc/refman/8.0/en/innodb-deadlock-example.html

MySQL 5.7我们可以通过下面语句查询锁状态信息

SELECT 
  r.trx_id waiting_trx_id,
  r.trx_mysql_thread_id waiting_thread,
  r.trx_query waiting_query,
  b.trx_id blocking_trx_id,
  b.trx_mysql_thread_id blocking_thread,
  b.trx_query blocking_query 
FROM
  information_schema.`INNODB_LOCK_WAITS` w 
  INNER JOIN information_schema.`INNODB_TRX` b 
    ON b.`trx_id` = w.`blocking_trx_id` 
  INNER JOIN information_schema.`INNODB_TRX` r 
    ON r.`trx_id` = w.`requesting_trx_id`;

MySQL8.0 我们通过如下语句查看锁信息

select * from x$innodb_lock_waits;

关于如何分辨MySQL中的死锁和锁等待就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何分辨MySQL中的死锁和锁等待

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PostgreSQL中的死锁和锁等待

开始之前明确一下死锁和锁等待这两个事件的异同相同的之处:两者都是当前事物在试图请求被其他事物已经占用的锁,从而造成当前事物无法执行的现象不同的之处:死锁是相关session双方或者多方中必然要牺牲(回滚)至少一个事务,否则双方(或者多方)都无法执行;锁等待则不
PostgreSQL中的死锁和锁等待
2021-09-17

MySQL锁等待与死锁问题分析

前言: 在 MySQL 运维过程中,锁等待和死锁问题是令各位 DBA 及开发同学非常头痛的事。出现此类问题会造成业务回滚、卡顿等故障,特别是业务繁忙的系统,出现死锁问题后影响会更严重。本篇文章我们一起来学习下什么是锁等待及死锁,出现此类问
2022-05-22

MySQL锁机制在INSERT中的锁等待分析

在MySQL中,当一个INSERT操作正在执行时,会涉及到锁机制来确保数据的一致性和并发性。在INSERT操作中可能会涉及到以下几种类型的锁:表锁(Table Lock):在插入数据时,MySQL会对整个表进行锁定,直到INSERT操作完成
MySQL锁机制在INSERT中的锁等待分析
2024-08-14

mysql死锁(dead lock)与锁等待(lock wait)的出现解决

目录死锁(dead lock)前台报错事后追查innodb statuserror.log锁等待(lock wait)1个参数innodb_lock_wait_timeout怎么处理级联锁或大量锁很多人都分不清死锁和锁等待的区别,也有不同I
mysql死锁(dead lock)与锁等待(lock wait)的出现解决
2024-09-09

如何解决死锁(等待失败测试的信号)

php小编小新为您介绍如何解决死锁问题。死锁是并发编程中常见的问题,当两个或多个进程互相等待对方释放资源时,会出现死锁现象。为了解决这个问题,我们可以采用一些常见的方法,如使用互斥锁、避免资源竞争、使用超时机制等。通过合理的设计和调整,我们
如何解决死锁(等待失败测试的信号)
2024-02-09

win10分辨率锁死1024×768如何解决

要解决Windows 10分辨率锁定在1024×768的问题,您可以尝试以下几种方法:1. 更改显示设置:右键点击桌面空白处,选择“显示设置”。在“分辨率”下拉菜单中选择所需的分辨率。如果所需的分辨率不在列表中,可以尝试点击“高级显示设置”
2023-08-22

win11分辨率锁死1024×768如何解决

本文小编为大家详细介绍“win11分辨率锁死1024×768如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win11分辨率锁死1024×768如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法一
2023-06-30

redis中RedissonLock如何实现等待锁

今天就跟大家聊聊有关redis中RedissonLock如何实现等待锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言经常会有到这样的需求,就是在一个查询接口,第一次查询的时候,如
2023-06-25

Mysql锁机制中行锁、表锁、死锁如何实现

这篇文章主要介绍了Mysql锁机制中行锁、表锁、死锁如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Mysql锁是什么?锁有哪些类别?锁定义: 同一时间同一资
2023-06-29

如何解决MySQL报错:锁等待超时

当MySQL报错锁等待超时时,可以尝试以下解决方法:1. 优化查询语句和数据库结构:锁等待超时通常是由于查询语句执行时间过长或者数据库结构设计不合理导致的。可以通过优化查询语句、添加索引、拆分大表等方式来减少查询时间,从而减少锁等待超时的情
2023-10-12

如何在Redis中实现分布式锁的阻塞等待机制

在Redis中实现分布式锁的阻塞等待机制可以使用Redis的BLPOP命令和SETNX命令结合实现。下面是一种基本的实现方式:使用SETNX命令尝试获取锁:SETNX lock_key 1如果成功获取到锁,则执行业务逻辑,并在业务逻辑执行完
如何在Redis中实现分布式锁的阻塞等待机制
2024-04-09

电脑分辨率被锁死不能更改如何解决

如果你的电脑分辨率被锁死无法更改,可能是由于以下原因导致的:1. 显卡驱动问题:尝试更新或重新安装显卡驱动程序。可以通过访问显卡制造商的官方网站或使用驱动程序更新工具来获取最新的显卡驱动程序。2. 操作系统设置问题:检查操作系统的显示设置,
2023-08-22

编程热搜

目录