云数据仓库ADB设置了分片和LIFECYCLE后,被删除的数据是永久性的嘛?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在云原生数据仓库AnalyticDB(简称ADB)中,设置了分片和LIFECYCLE
后,被删除的数据是否永久性删除取决于具体的配置和操作。以下是详细解答:
LIFECYCLE
参数用于管理分区的生命周期,定义了每个表或分片最多保留的分区数量。当分区数量超过LIFECYCLE
设定值时,超出的分区会被标记为过期并进入删除流程。然而,分区数据不会立即被清理,而是需要等待以下条件之一: - 表的BUILD
任务完成。 - 异步清理任务执行。
因此,被删除的数据并非立即永久删除,而是存在一个延迟过程。
LIFECYCLE
以分片为单位管理分区生命周期。如果数据分布不均,某些分片上的分区数可能未达到LIFECYCLE
设定值,导致总分区数多于预期。这种情况下,部分历史数据可能仍然可查。LIFECYCLE
以表为单位管理分区生命周期,确保每个表最多保留指定数量的分区。升级后新建的表会按照表级管理,而升级前创建的表仍按分片级管理。当通过DROP TABLE
命令删除表时,数据是否会永久删除还取决于表回收站的配置: - 默认行为:在内核版本3.2.3.0及以上的集群中,删除的表会自动迁移到表回收站,并默认保留3天(可通过RECYCLE_BIN_EXPIRED_TIME
参数调整)。在此期间,表数据可以恢复。 - 强制删除:使用DROP TABLE ... FORCE
命令时,表数据将直接被永久删除且无法恢复。
BUILD
任务来加速清理过程。RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL
参数调整)。设置了分片和LIFECYCLE
后,被删除的数据并非立即永久删除,而是经过BUILD
任务或异步清理任务后才会被真正清理。此外,表回收站机制提供了额外的保护层,默认情况下删除的表数据会在3天后永久删除。如需永久删除数据,可使用DROP TABLE ... FORCE
命令,但请务必谨慎操作。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。