跳到主要内容

VACUUM TABLE

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

VACUUM TABLE 命令通过永久删除表中的历史数据文件来释放存储空间,从而优化系统性能。这包括:

  • 与表关联的快照及其相关的段和块。

  • 孤立文件。在 Databend 中,孤立文件指的是不再与表关联的快照、段和块。孤立文件可能由各种操作和错误产生,例如在数据备份和恢复过程中,它们会占用宝贵的磁盘空间并随着时间的推移降低系统性能。

另请参阅:VACUUM DROP TABLE

语法和示例

VACUUM TABLE <table_name> [ DRY RUN [SUMMARY] ]
  • DRY RUN [SUMMARY]:当指定此参数时,候选的孤立文件不会被删除。相反,将返回最多 1,000 个候选文件及其大小的列表(以字节为单位),显示如果不使用此选项将删除的内容。当包含可选参数 SUMMARY 时,命令将返回要删除的文件总数及其总大小(以字节为单位)。

输出

VACUUM TABLE 命令(不带 DRY RUN)返回一个表格,总结了清理文件的关键统计数据,包含以下列:

描述
snapshot_files快照文件数量
snapshot_size快照文件总大小(以字节为单位)
segments_files段文件数量
segments_size段文件总大小(以字节为单位)
block_files块文件数量
block_size块文件总大小(以字节为单位)
index_files索引文件数量
index_size索引文件总大小(以字节为单位)
total_files所有类型文件的总数量
total_size所有类型文件的总大小(以字节为单位)
示例:
// highlight-next-line
VACUUM TABLE c;

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ snapshot_files │ snapshot_size │ segments_files │ segments_size │ block_files │ block_size │ index_files │ index_size │ total_files │ total_size │
├────────────────┼───────────────┼────────────────┼───────────────┼─────────────┼────────────┼─────────────┼────────────┼─────────────┼────────────┤
319549480291890930603011706
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

当 VACUUM TABLE 命令指定 DRY RUN 参数时,它将返回最多 1,000 个候选文件及其大小的列表(以字节为单位)。如果指定 DRY RUN SUMMARY,命令将提供要删除的文件总数及其总大小。

示例:
// highlight-next-line
VACUUM TABLE c DRY RUN;

┌──────────────────────────────────────────────────────────────┐
file │ file_size │
├──────────────────────────────────────────────────┼───────────┤
1/67/_ss/61aaf678b9af41568b539099b4b09908_v4.mpk │ 543
1/67/_ss/dd149d21151c459d8c87076f9412c12c_v4.mpk │ 516
1/67/_ss/7ba0b2e2f63c4d42897a48830027dcf3_v4.mpk │ 462
1/67/_ss/db55dac72b29452db976cf0af0f8d962_v4.mpk │ 588
1/67/_ss/d8055967298f478d97cddaa66cf67e11_v4.mpk │ 563
1/67/_ss/00c4288dac014760808006f821f1ecbe_v4.mpk │ 609
└──────────────────────────────────────────────────────────────┘
// highlight-next-line
VACUUM TABLE c DRY RUN SUMMARY;

┌──────────────────────────┐
│ total_files │ total_size │
├─────────────┼────────────┤
63281
└──────────────────────────┘

调整数据保留时间

VACUUM TABLE 命令会删除早于 data_retention_time_in_days 设置的数据文件。可以根据需要调整此保留期,例如调整为 2 天:

SET GLOBAL data_retention_time_in_days = 2;

data_retention_time_in_days 默认值为 1 天(24 小时),最大值因 Databend 版本而异:

版本默认保留时间最大保留时间
Databend 社区版和企业版1 天(24 小时)90 天
Databend Cloud(基础版)1 天(24 小时)1 天(24 小时)
Databend Cloud(商业版)1 天(24 小时)90 天

要检查 data_retention_time_in_days 的当前值:

SHOW SETTINGS LIKE 'data_retention_time_in_days';

VACUUM TABLE 与 OPTIMIZE TABLE

Databend 提供了两个命令来删除表中的历史数据文件:VACUUM TABLE 和 OPTIMIZE TABLE(带 PURGE 选项)。尽管这两个命令都能够永久删除数据文件,但它们在处理孤立文件的方式上有所不同:OPTIMIZE TABLE 能够删除孤立的快照及其对应的段和块。然而,可能存在没有关联快照的孤立段和块。在这种情况下,只有 VACUUM TABLE 可以帮助清理它们。

VACUUM TABLE 和 OPTIMIZE TABLE 都允许您指定一个时间段来确定要删除的历史数据文件。然而,OPTIMIZE TABLE 要求您事先通过查询获取快照 ID 或时间戳,而 VACUUM TABLE 允许您直接指定保留数据文件的小时数。VACUUM TABLE 在删除数据文件之前提供了增强的控制,通过 DRY RUN 选项,您可以在应用命令之前预览要删除的数据文件。这提供了安全的删除体验,并帮助您避免意外的数据丢失。

VACUUM TABLEOPTIMIZE TABLE
关联的快照(包括段和块)
孤立的快照(包括段和块)
仅孤立的段和块
DRY RUN
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册