暂无图片
MySQL 在高并发写入场景下,出现 Deadlock found when trying to get lock,该如何定位并解决? (是否需要调整事务隔离级别或 SQL 写法?)
我来答
分享
暂无图片 匿名用户
MySQL 在高并发写入场景下,出现 Deadlock found when trying to get lock,该如何定位并解决? (是否需要调整事务隔离级别或 SQL 写法?)

MySQL 在高并发写入场景下,出现 Deadlock found when trying to get lock,该如何定位并解决?
(是否需要调整事务隔离级别或 SQL 写法?)

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
漫步者

默认的read committed隔离级别已经是很好的了,innodb存储引擎基于row的并发还是不错的。 你需要关注的是不同的进程或者线程在同一时间更新相同行的可能性。 如果存在的话,要尽可能的缩短事物开启的时间,比如在插入A表后,又分别查询了N张表,最后又插入了C表,这就导致事务开始时间过长,降低了并发性。如果多行修改,看能不能调整成逐行按主键的更新,自动提交。也可以通过程序(线程或者进程)抢分布式资源的控制模式,使得一条更新记录在某一个时刻只能被某个线程或者进程去修改。

暂无图片 评论
暂无图片 有用 2
Samson

SHOW ENGINE INNODB STATUS,或者出问题的时候观察下performance_schema.data_locks performance_shcema.data_lock_waits定位下死锁

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏