Mysql——》死锁

文章介绍了Mysql中死锁的基本概念,指出死锁发生的条件是多进程争夺资源并存在顺序不一致,以及如何通过InnoDB监视器检查死锁。解决死锁的策略包括设置lock_wait_timeout超时和启动死锁检测来主动回滚事务。
摘要由CSDN通过智能技术生成

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

一、概念

单线程:不会发生死锁
单资源:不会发生死锁

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。

二、死锁的条件

  • 多操作者(M>=2)争夺多个资源(N>=2且N<=M)
  • 争夺资源的顺序不一致
  • 争夺者拿到资源不放手

三、查看死锁

-- 是否启用标准Innodb监视器
show variables like '%innodb_status_output%'
-- 启用标准Innodb监视器
SET GLOBAL innodb_status_output=ON;
-- 禁用标准Innodb监视器
SET GLOBAL innodb_status_output=OFF;

----------------------------------------------------

-- 是否启用锁定监视器,默认OFF
SHOW VARIABLES LIKE 'innodb_status_output_locks';
-- 启用锁定监视器,使用完毕后建议关闭,否则会影响数据库性能
SET GLOBAL innodb_status_output_locks = ON;
-- 禁用锁定监视器
SET GLOBAL innodb_status_output_locks = OFF;

----------------------------------------------------

-- 查看Innodb监视器的信息(死锁信息)
show engine innodb status;

查看Innodb死锁信息

四、解决死锁策略

1、InnoDB 通过 lockwait_timeout 来设置超时时间,一直等待直到超时
2、发起死锁检测,发现死锁之后,主动回滚死锁中的某一个事务,让其它事务继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值