【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】4.2.1社区版
【问题描述】
如上三张图,我设置undo_retention=120s, 按官网所述应该只能闪回查询到当前时间T到T-120 秒这两分钟之内版本的数据,但是我却闪回查询到了4分钟之前那个版本的数据,请问这是怎么回事
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】4.2.1社区版
【问题描述】
设置的undo_retention是系统尽量保证的undo保留时间,如果数据库产生的undo比较少,undo记录应该会保留更长的时间。
OB 是没有undo日志的,多版本数据也是保存在sstable中的
OceanBase 数据库转储的数据会保留多个版本的历史数据行,您可以通过 undo_retention
来控制转储中保留的多版本数据范围。
其中:
undo_retention
的值为 0
时,表示未开启多版本转储,即转储文件仅保留当前最新版本的行数据。undo_retention
的值大于 0
时,表示开启多版本转储,并且转储文件保留这段时间(单位为秒)以内的多版本行数据。嗯,这个没问题,但是这样又回到了我当初的疑问,闪回查询应该只能查到当前时间T 到T - undo_retention
这段时间范围内的任意版本数据,但是我却查到了T - undo_retention
时间点之前的版本数据,若是按照你上一条所说那样,应该还有个控制多版本数据所占磁盘空间的参数才对
undo_retention
的值为 0
时,表示未开启多版本转储,即转储文件仅保留当前最新版本的行数据。undo_retention
的值大于 0
时,表示开启多版本转储,并且转储文件保留这段时间(单位为秒)以内的多版本行数据。假如undo_retention设置为120M,就会保留120M以内的数据。