跳到主要内容

数据清理与回收

在 Databend 中,当你执行 DROPTRUNCATEDELETE 命令时,数据并不会被真正删除,这使得你可以通过时间回溯功能恢复到之前的状态。

数据分为两种类型:

  • 历史数据:由时间回溯功能使用,用于存储历史数据或已删除表的数据。
  • 临时数据:由系统使用,用于存储溢出数据。

如果数据量较大,你可以运行以下命令(企业版功能)来删除这些数据并释放存储空间。

溢出数据存储

私有化部署的 Databend 支持在内存使用超过可用限制时将中间查询结果溢出到磁盘。用户可以配置溢出数据的存储位置,选择本地磁盘存储或远程 S3 兼容存储桶。

溢出存储选项

Databend 提供以下溢出存储配置:

  • 本地磁盘存储:溢出数据写入查询节点指定的本地目录。请注意,本地磁盘存储仅支持 窗口函数
  • 远程 S3 兼容存储:溢出数据存储在外部存储桶。
  • 默认存储:如果未配置溢出存储,Databend 会将溢出数据与表数据一起存储到默认存储桶。

溢出优先级

如果同时配置了本地和 S3 兼容溢出存储,Databend 按以下顺序处理:

  1. 优先溢出到本地磁盘(如果已配置)。
  2. 当本地磁盘空间不足时,溢出到远程 S3 兼容存储。
  3. 如果未配置本地或外部 S3 兼容存储,则溢出到 Databend 的默认存储桶。

配置溢出存储

要配置溢出存储,请更新 databend-query.toml 配置文件。

以下示例配置 Databend 使用最多 1 TB 本地磁盘空间进行溢出操作,同时保留 40% 的磁盘空间供系统使用:

[spill]
spill_local_disk_path = "/data1/databend/databend_spill"
spill_local_disk_reserved_space_percentage = 40
spill_local_disk_max_bytes = 1099511627776

以下示例配置 Databend 使用 MinIO 作为 S3 兼容存储服务进行溢出操作:

[spill]
[spill.storage]
type = "s3"
[spill.storage.s3]
bucket = "databend"
root = "admin"
endpoint_url = "http://127.0.0.1:9900"
access_key_id = "minioadmin"
secret_access_key = "minioadmin"
allow_insecure = true

清理已删除表数据

删除所有已删除表的数据文件,释放存储空间。

VACUUM DROP TABLE;

详见 VACUUM DROP TABLE

清理表历史数据

移除指定表的历史数据,清除旧版本并释放存储空间。

VACUUM TABLE <table_name>;

详见 VACUUM TABLE

清理临时数据

清除用于连接、聚合和排序的临时溢出文件,释放存储空间。

VACUUM TEMPORARY FILES;

详见 VACUUM TEMPORARY FILES