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条回答
默认
最新
回答交流
Markdown
请输入正文
提交