更新时间:2025-04-09 gmt 08:00
业务死锁导致响应变慢-j9九游会登录
场景描述
14点~15点之间数据库出现大量行锁冲突,内核中大量update/insert会话在等待行锁释放,导致cpu使用率达到70%左右,数据库操作变慢。
查看ces指标行锁等待个数、mdl锁数量,下图仅供参考:


发生死锁的表:
********* 1. row ********* table: table_test create table: create table table_test( ... constraint act_fk_exe_parent foreign key (parent_id_) references act_ru_execution (id_) on delete cascade, constraint act_fk_exe_procdef foreign key (proc_def_id_) references act_re_procdef (id_), constraint act_fk_exe_procinst foreign key (proc_inst_id_) references act_ru_execution (id_) on delete cascade on update cascade, constraint act_fk_exe_super foreign key (super_exec_) references act_ru_execution (id_) on delete cascade ) engine=innodb default charset=utf8mb4 collate=utf8mb4_bin
原因分析
- 部分表发生死锁,导致cpu一定幅度抬升。
- 死锁的表中有大量的外键,这些表的记录在更新时,不仅需要获取本表的行锁,还需要检查外键关联表的记录,获取相应锁。高并发情况下,比普通表更容易锁冲突或死锁,详解。
- 当mysql检查到死锁的表时,会进行事务的回滚。其影响范围不仅是某个表,还会影响外键所在的表,最终导致数据库相关操作变慢。
j9九游会登录的解决方案
建议排查并优化死锁表相关的业务,业务上合理使用外键,避免更新冲突,避免产生死锁。
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨