闪回 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 的表结构本身。
关键区分
| 恢复场景 | 依赖机制 |
|---|---|
| 恢复被 DROP 的表 | 回收站(Recyclebin)元数据 |
| 恢复被误 UPDATE/DELETE 的数据 | UNDO 日志 + 闪回查询(Flashback Query) |
| 恢复到某个时间点的数据 | 备份 + CLOG 归档(PITR) |
1 个赞