暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

等待事件(latch: undo global data)性能故障处理

1981

概述

2021年07月13日凌晨,某数据库负载同之前相比较高,通过分析主要是由于大量并发insert操作导致undo相关异常等待事件。

问题现象

2021年07月14日凌晨开始某库db_time较以往有大幅升高:

登录数据库核查后发现大量undo相关等待事件:

通过查看awr发现大量insert语句执行:

问题根源

数据库负载升高主要是由于14号凌晨insert SQL相关业务量升高导致。

问题分析

负载趋势分析

通过核查tps和qps情况发现,14号凌晨开始数据库db_time、db_cpu、tps 、qps均大幅升高。所以负载升高主要还是由于数据库繁忙导致。(tps、qps越高数据库相对越繁忙)

13号和16号Awr top sql对比:

13号awr top sql

16号awr top sql:

Undo表空间大小以及相关参数

通过核查发现数据库4节点undo表空间(undo_3)大小为32G:

Undo_retention参数当前为10800属于正常范围,由于_undo_autotune 为false 数据库将优先保证10800秒内的一致性查询。

通过核查undo_3过期的undo空间有0.5G,未过期的undo表空间有31.9G, 由于过期的undo比率较小,而且参数_undo_autotune 为false数据库优先保证未过期的undo不被覆盖,导致数据库不得不花费了较长事件寻找过期的undo和将部分已过期的undo设置为过期状态的时间较长。

数据库等待事件

数据库主要等待事件为: latch: undo global data 该等待事件主要是会话努力寻找新undo段,并且不得不窃取未过期的undo段,而且由于业务时段内insert sql频繁执行并且未过期的undo块越来越少加剧了undo争用。

问题处置

19号下午18点对undo_3添加了30G undo表空间后,latch: undo global data 等待事件消除

问题处置后数据库运行情况观察

20日凌晨0点-1点由于数据库效率较之前提高,事务量也大幅提升,仍存在一定量的latch: undo global data等待,

20日8点到9点随着事务量下降数据库latch: undo global data等待事件已经消失,但是存在部分log file sync等待:

20日凌晨0点-1点awr事务量和等待事件情况:

20日凌晨0点-1点TOP SQL:

20日凌晨8点-9点awr事务量和等待事件情况:

20日凌晨8点-9点TOP SQL:

解决方案及建议

建议1:调大4节点undo表空间,从之前的32G调整到62G(已经实施)

建议2:由于insert操作频繁,建议应用使用批量插入、批量提交的方式;

建议3:由于备节点(1节点)undo表空间undo_2 仅有27G 建议也进行扩大到60g左右

建议4:

  • 通过设置 _UNDO_AUTOTUNE 实例参数来启用撤消自动调整


官方参考文档:Doc ID 1451536.1

最后修改时间:2022-07-24 20:09:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论