关于mysql数据库使用innoDB引擎产生的死锁

在继我上一次一条select语句导致数据库飙升,到这一次一条select 语句导致数据库直接挂掉(当然这一次并不是我做的,绩效自动降一级)一直想了解到底是怎么回事,这几天开始看mysql内幕,个人感觉很不错的一本书。
在此我大概描述一下innoDB 中的锁:
标准的行级锁
1. X锁 (排他锁)允许事物读一行数据
2. S锁 (共享锁)允许事物更改或更新一行数据
当有一条数据事T1 读取会加上一个S锁,当另一个事物也想获取S锁进行读取是允许的,因为读取是对数据没有改变的。但是如果有一个事物T3要对数据进行UPdate 这个时候他需要一个S锁,由于他要更改这个数据所以说他需要等待X锁释放掉 也就是说等查询事物走完了才可以执行X锁的这个事物
在innoDB 中还有一个表级锁那就是intention lock,意向锁
IX (意向排他锁): 当有一个事物想要获取行级锁的X锁的时候,那你就必须要先获取一个IX锁 表明你接下来想要去获取X锁。
IS (意向共享锁):同上当你需要获取行级别的S锁,那么你就得先去表级别获取IS锁
关于锁之间的兼容关系在这里插入图片描述
那现在我们说说为什么会产生死锁呢?
那我们第一反应就是肯定是互相等待,然后谁也等不到谁。 于是产生了死锁。 情景如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值