注册
一次update异常堆积分析

一次update异常堆积分析

XGQ 2026/03/24 112 0 0
摘要 -

1.背景

某项目生产环境突然出现大量update语句堆积
image.png

2.查看语句对应执行计划

image.png
走索引扫描 没有明显异常

3.是否存在数据倾斜

image.png
在备机对数据分布进行统计,最大的receiveid 条数为19000条,不应该执行超过10分钟还没有结束

4.查看耗时比较大的SQL对应的事务信息

v$sessions里面trx_id可以和v$trx id字段进行关联
image.png
这里UPD_CNT为91万比较可疑,单个receiveid最大为19000 为啥会update91万数据呢,打开 sqllog日志对事务号进行过滤
image.png
通过会话找到事务ID 98796522981 进行过滤 可以看到该事务里面传入了100多个receiveid 每个receiveid 都有上万行数据这里解释了为啥v$trx 更新了上百万的数据。
联系业务人员对相关数据进行排查,发现每个receiveid存在大量异常数据,导致每个事务更新很多行数据,然后产生锁等待,最终导致会话堆积。将对应功能暂停使用后,删除异常数据,更新正常。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服