集群从 5.4 升级到 7.1,业务代码、并发量未改动,原乐观事务运行稳定,升级后频繁出现 1205 Lock wait timeout 错误。切换为悲观锁后问题有所缓解,但仍大量报错,怀疑事务冲突检测、锁机制有变更,求教优化方案。
1 个赞
迁移升级建议先在小规模环境做充分的兼容性测试,特别是SQL语法、自增主键、事务隔离级别这几个方面。如果是分库分表迁移,要注意全局唯一ID的生成方式,推荐用 AUTO_RANDOM 替代自增主键。
- 隔离级别改 RC,关闭间隙锁;
- 缩短事务,拆分长 SQL,避免事务内大查询;
- 乐观锁加重试机制,控制单次事务执行时长;
- 统一更新顺序防循环等待,精准走唯一索引更新;
- 调大
innodb_lock_wait_timeout临时缓冲; - 热点行做分片、队列削峰分摊竞争。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。