跳到主要内容

VACUUM TABLE

Introduced or updated: v1.2.940
企业版功能
VACUUM TABLE是企业版功能。 如需获取许可证,请联系 Databend 支持团队

永久删除 FUSE 表中符合清理条件的历史快照及其不再需要的 Segment、Block 和相关文件,回收存储空间。表及其当前数据仍然可用。

另请参阅:VACUUM TABLESVACUUM DROPPED OBJECTSVACUUM ALL

语法

VACUUM TABLE [<database>.]<table>

省略数据库名时使用当前数据库。命令在当前 Catalog 中执行,需要对目标表具有 SUPER 访问权限。仅支持可写的 FUSE 表。

命令不返回结果集。

保留期与快照标签

清理遵循 data_retention_time_in_days 设置(默认为 1 天)。已清理的历史数据无法再通过时间旅行查询或通过 Flashback 恢复。

未过期的快照标签(包括未设置过期时间的标签)引用的快照及其关联数据受到保护,不会被清理。过期标签不再保护其快照。VACUUM 会尝试删除过期标签;删除过期标签失败不会中止清理。

通过会话设置调整后续清理操作的保留期:

SET data_retention_time_in_days = 2;
SHOW SETTINGS LIKE 'data_retention_time_in_days';

示例

创建表并修改数据,然后清理符合条件的历史数据:

CREATE OR REPLACE TABLE vacuum_example (id INT);
INSERT INTO vacuum_example VALUES (1), (2);
DELETE FROM vacuum_example WHERE id = 1;
VACUUM TABLE vacuum_example;
SELECT * FROM vacuum_example;

当前行仍然可用。新产生的历史数据会保留到符合清理条件时。

数据合并与存储回收是独立的操作。先合并表数据,再清理符合条件的历史文件:

OPTIMIZE TABLE vacuum_example COMPACT;
VACUUM TABLE vacuum_example;
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验