2020-07-08:mysql只有一个表a,什么情况下会造成死锁,解决办法是什么?

福大大架构师每日一题 发布于 07/08 07:34
阅读 4K+
收藏 9

2020-07-08:mysql只有一个表a,什么情况下会造成死锁,解决办法是什么?

加载中
0
不知道你想干嘛
不知道你想干嘛

乐观锁,悲观锁 找找看

0
纸上得来终觉浅
纸上得来终觉浅

比如sql修改字段where语句后面的条件没有索引,就是锁表。

同时别的地方用到这张表,就会报死锁的错误

开源中国首席罗纳尔多
开源中国首席罗纳尔多
您好,请问update语句会将update的记录先上锁吗?
0
宝山菜鸟
宝山菜鸟

RR隔离级别情况下 先select 再insert 两把锁 插入意向锁 gap锁 可能造成死锁 解决办法 隔离级别改成RC

0
宝山菜鸟
宝山菜鸟

另外就是 批量更新 并发请求 顺序不一致 也可能造成死锁

0
becke
becke
线程1更新 A行 B行 线程2 更新B行 A行
0
kis龍
kis龍

a:  启动事务,update id =1

b:  启动事务,update id =1; 提交事务

a: 提交事务

这个时候会有死锁,update 默认是排它锁

总结下就是 多个事务操作同一条或几条记录可能会造成死锁, 如果 A 直接提交就不会有死锁,在b后提交才可能出现

0
erpadmin
erpadmin

a:  启动事务,update id =1

b:  启动事务,update id =1; 提交事务

a: 提交事务

这个时候会有死锁,update 默认是排它锁

总结下就是 多个事务操作同一条或几条记录可能会造成死锁, 如果 A 直接提交就不会有死锁,在b后提交才可能出现

0
encro
encro

show full processlist

返回顶部
顶部