MYSQL5.7索引异常引发的锁超时处理记录
2024-10-21 19:43:32
原始sql:
update a set a.x=x where a.xid in (select b.xid from b inner join c on b.xxx = c.xxx) and a.xdate='xxxxxxxx'
现象 sql 执行中,b表会偶尔提示锁超时。
处理过程:
已知 mysql5.7 repeatable read 模式下 update会把关联到的所有表记录全部加锁 b表相关记录 也会加锁。
已知 a.xdate 有索引,扫描量在5W左右,正常应该几秒内执行完成不会造成锁超时。
尝试排查后发现 update a set a.x=x where a.xdate='xxxxxxxx' 索引失效 但是 select * from a where a.xdate='xxxxxxxx' 索引生效。
结论 由于mysql 索引问题,导致update的sql执行时间远超预计,与其他程序的sql冲突导致锁超时。
处理结论:
临时:将in 改写为join方式,a.xdate='xxxxxxxx'索引生效,执行时间大大缩短,基本能杜绝锁超时可能。
正规:拒绝多表关联update,程序内拆分sql。
作死:降低mysql事务隔离级别应该也能解决。
关于mysql select与update索引使用不一致的问题,同款异常:
https://dba.stackexchange.com/questions/153293/update-does-not-use-index-but-select-does
最新文章
- bzoj1057: [ZJOI2007]棋盘制作--最大子矩阵
- [原创]LoadRunner 12.02 录制脚本时提示无Internet访问,如何解决?
- Wordpress文章图片不居中与开头缩进问题
- linux下C++ 插件(plugin)实现技术
- ios 同步Get请求的实现
- magento数据库备份导入还原
- java如何准确的读取多音字
- Android 内部启动其他应用,以及打开指定qq聊天界面
- Mysql表锁定解决
- spring的长处 ioc aop
- HDU1874 最短路 SPFA
- JQuery和Ajax在ASP.NET MVC中的基本应用
- 【转】mysql保存图片技术决定:保存二进制文件还是只保存图片相对路径,图片放在硬盘上面?
- 3.2.1 SpringMVC入门
- Python3 tkinter基础 Spinbox 可输入 能调整的 从指定范围内选择参数的控件
- Redis纠错
- 蒙特卡罗定位(Particle Filter Localization)笔记
- [Leetcode 62]机器人走路Unique Path 动态规划
- unity3d 博客
- Javascript 中 true 和 false
热门文章
- video.js没有显示已播放时间、总时间?
- 你有了解过无服务器架构(Serverless)数据库吗?
- 8. fitBounds(用了这个你就不用在设置zoom, minZoom, maxZoom, center)
- 在linux 下如何快速创建环境
- 新的学习历程-python6 字符串基础使用
- 狂神--ElasticSearch
- 【面试题】面试突击71:GET 和 POST 有什么区别?
- 7.Object
- having对聚合函数的结果集进行过滤
- 前端记录:树形插件zTree 和 表格扩展 tableX