暂无图片
一个update 语句行锁升级 触发bug导致死锁myql宕机?请大佬帮忙分析下更具体原因
我来答
分享
liuzj
2023-01-10
一个update 语句行锁升级 触发bug导致死锁myql宕机?请大佬帮忙分析下更具体原因

mysql8.0.31 的docker环境,一个2000万数据的大表, 通过没有索引的字段 update其中很少量数据,行锁升级 把所有的行都锁住;

语句:update bigtable.sbtest2000w set k=2222 where c='liu';  正常执行需要43秒左右。

此时 通过navivat去查行锁及mdl元数据锁。

语句:

select * from `performance_schema`.data_locks; #查行锁
select * from `performance_schema`.metadata_locks t ; #查元数据锁

查行锁两三秒后出本来结果,中断它,执行查mdl锁的语句,两三秒出不来的话中断,出来就继续查行锁;继续重复这个操作1到3次 ,会导致8.0.31的docker容器意外退出,查看错误日志:触发bug 导致死锁 mysql宕机。

后来测试了很多次都必然出现。

在8.0.12的非docker环境,用1000万表测试,情况类似,不过错误日志中没有出现死锁,mysql进程重启。



我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
liuzj
2023-01-10

1.png

暂无图片 评论
暂无图片 有用 0
打赏 0
liuzj
2023-01-10

2.png

暂无图片 评论
暂无图片 有用 0
打赏 0
liuzj
2023-01-10

3.png

暂无图片 评论
暂无图片 有用 0
打赏 0
liuzj
2023-01-10

8.0.12_1.png

暂无图片 评论
暂无图片 有用 0
打赏 0
liuzj
2023-01-10

8.0.12_2.png

暂无图片 评论
暂无图片 有用 0
打赏 0
liuzj
2023-01-10

stracelog.png

暂无图片 评论
暂无图片 有用 0
打赏 0
liuzj
2023-01-10

strace 跟踪那个update语句的线程也看不到啥有用的东西

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交