有关undo_retention的疑问

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1.6
【问题描述】实际使用中发现大于undo_retention之外的时间也可以对表进行闪回查询,undo_retention是否是个建议值,而非强制值,即小于undo_retention的快照数据一定不会被回收,大于undo_retention的数据可能会被回收?因为可以认为只要闪回查询能查到数据那数据一定是那个时候的快照的?不会出现能查到数据,虽然已经超过undo_retention但是实际返回的是现在时刻的?
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

目前没有发现这种情况,可以附一下截图吗,我们排查分析下

是的,根据我实测的经验多版本数据不一定会被回收,感觉还是跟业务的繁忙程度以及SStable的是使用空间有关,所以按照我的理解undo_retention设置的时长是个多版本至少保留那么久的时间,如果SStable空间充足那么超过这个时间也是有可能的 :joy:

已咨询相关同学,undo_retention的值是数据能被查到的充分不必要条件,如果你设置了60秒,只是说你一定能查到60秒以内的数据,数据的清理不是立即完成的,只有发生minor merge的时候,才会清理超过undo_retention的数据

2 个赞