栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在事务中更新大量数据造成的锁等待超时和慢查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在事务中更新大量数据造成的锁等待超时和慢查询

根据公司SRE给出的慢查询记录:

我在Kibana中查到了相关的600多条日志:

根本原因在于某sql update,where id in的列表过长(多达几百),range过大的互斥锁不好申请(估计读已提交级别,update … where id in (…)采用的是间隙锁,查过一些资料,未能100%确认)。它所在的事务一直申请不到锁,就超时(默认50秒)报错了:

com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

。而在宏观上,业务上又需要在一段时间内大量访问这段代码,就会反复产生大事务,加剧了锁的竞争,从而造成了慢查询。

一句话概括,大事务高并发。

解决思路

拆分大事务

一些相关参考资料

Update和Insert操作与行锁表锁

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328370.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号