闪回 DROP TABLE 操作依靠哪类数据恢复被删除的表?()

闪回 DROP TABLE 操作依靠哪类数据恢复被删除的表?()
A. SSTable
B. 回收站(recyclebin)元数据
C. CLOG
D. UNDO 日志

1 个赞

正确答案是 B. 回收站(recyclebin)元数据

解析

OceanBase 的回收站(Recyclebin)从原理上来说就是一个数据字典表,用于存放已被 DROP 的数据库对象信息。

当用户执行 DROP TABLE 操作时,如果回收站功能已开启(recyclebin = ON),该表并不会被真正物理删除,而是被重命名后移入回收站中,表的实际数据(包括 SSTable 和 MemStore 中的数据)仍然保留在磁盘上,继续占用存储空间

恢复时,通过 FLASHBACK TABLE ... TO BEFORE DROP RENAME TO ... 语句,系统根据回收站中保存的元数据(原始表名、对象类型、创建时间等)将表还原到原来的位置。

其他选项分析

  • A. SSTable:SSTable 是存储层的数据文件格式,虽然被 Drop 的表的实际数据确实还在 SSTable 中,但闪回操作本身依赖的不是 SSTable,而是回收站的元数据来定位和恢复对象。
  • C. CLOG:CLOG(Commit Log)是事务日志,用于数据持久化和主备同步,与闪回 Drop 表无关。
  • D. UNDO 日志:UNDO 日志用于事务回滚和闪回查询(Flashback Query,即 AS OF TIMESTAMP 查询历史版本数据),适用于恢复误 UPDATE/DELETE 的数据,但不能用于恢复被 DROP 的表结构本身。

:pushpin: 关键区分

恢复场景 依赖机制
恢复被 DROP 的表 回收站(Recyclebin)元数据
恢复被误 UPDATE/DELETE 的数据 UNDO 日志 + 闪回查询(Flashback Query)
恢复到某个时间点的数据 备份 + CLOG 归档(PITR)
1 个赞