Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .translation-init
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Translation initialization: 2025-08-25T10:57:35.385088
Translation initialization: 2025-08-26T06:24:38.838164
91 changes: 48 additions & 43 deletions docs/cn/guides/57-data-management/04-data-recycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,58 +5,63 @@ sidebar_label: 数据回收

## 概述

在 Databend 中,执行 `DROP`、`TRUNCATE` 或 `DELETE` 命令时数据不会立即删除。这使 Databend 能够支持时间回溯功能,让您可以访问数据的历史状态。然而,这种方式意味着执行这些操作后存储空间不会自动释放
在 Databend 中,当您运行 `DROP`、`TRUNCATE` 或 `DELETE` 命令时,数据不会立即被删除。这使得 Databend 的时间旅行(Time Travel)功能得以实现,允许您访问数据的先前状态。然而,这种方法也意味着在这些操作之后,存储空间不会自动释放

```
Before DELETE: After DELETE: After VACUUM:
DELETE: DELETE: VACUUM:
+----------------+ +----------------+ +----------------+
| Current Data | | New Version | | Current Data |
| | | (After DELETE) | | (After DELETE) |
| 当前数据 | | 新版本 | | 当前数据 |
| | | DELETE 后) | | DELETE 后) |
+----------------+ +----------------+ +----------------+
| Historical Data| | Historical Data| | |
| (Time Travel) | | (Original Data)| | |
| 历史数据 | | 历史数据 | | |
| (时间旅行) | | (原始数据) | | |
+----------------+ +----------------+ +----------------+
Storage not freed Storage freed
存储未释放 存储已释放
```

## 需要清理的数据类型
## VACUUM 命令与清理范围

Databend 提供了特定命令来清理不同类型的数据。下表总结了数据类型及其对应的清理命令:
Databend 提供了三种具有**不同清理范围**的 VACUUM 命令。了解每个命令清理的内容对于数据管理至关重要。

| 数据类型 | 描述 | 清理命令 |
|-----------|-------------|-----------------|
| **已删除表数据** | 使用 DROP TABLE 命令删除的表数据文件 | `VACUUM DROP TABLE` |
| **表历史数据** | 表的历史版本,包括通过 UPDATE、DELETE 等操作创建的快照 | `VACUUM TABLE` |
| **孤立文件** | 不再与任何表关联的快照、段和块 | `VACUUM TABLE` |
| **溢出临时文件** | 查询执行期间(如连接、聚合、排序等操作)当内存使用超过可用限制时创建的临时文件 | `VACUUM TEMPORARY FILES` |
```
VACUUM DROP TABLE
├── 目标:已删除的表(执行 DROP TABLE 命令后)
├── S3 存储:✅ 移除所有数据(文件、段、块、索引、统计信息)
├── Meta Service:✅ 移除所有元数据(模式、权限、记录)
└── 结果:彻底移除表 - 无法恢复

VACUUM TABLE
├── 目标:活跃表的历史数据和孤立文件
├── S3 存储:✅ 移除旧快照、孤立的段/块、索引/统计信息
├── Meta Service:❌ 保留表结构和当前元数据
└── 结果:表保持活跃,仅清理历史数据

VACUUM TEMPORARY FILES
├── 目标:查询产生的临时溢出文件(连接、排序、聚合)
├── S3 存储:✅ 移除因查询崩溃/中断产生的临时文件
├── Meta Service:❌ 无元数据(临时文件不含元数据)
└── 结果:仅清理存储,很少需要
```

> **注意**:溢出临时文件通常由 Databend 自动清理。只有在查询执行期间 Databend 崩溃或意外关闭时才需要手动清理。
---

## 使用 VACUUM 命令
> **🚨 关键**:只有 `VACUUM DROP TABLE` 会影响 Meta Service。其他命令仅清理存储文件。

VACUUM 命令系列是 Databend 中清理数据的主要方法([企业版功能](/guides/products/dee/enterprise-features))。根据您需要清理的数据类型,使用不同的 VACUUM 子命令。
## 使用 VACUUM 命令

```
VACUUM Commands:
+------------------------+ +------------------------+ +------------------------+
| VACUUM DROP TABLE | | VACUUM TABLE | | VACUUM TEMPORARY FILES |
+------------------------+ +------------------------+ +------------------------+
| Cleans dropped tables | | Cleans table history | | Cleans spill files |
| and their data files | | and orphan files | | (rarely needed) |
+------------------------+ +------------------------+ +------------------------+
```
VACUUM 命令系列是 Databend 中清理数据的主要方法([企业版功能](/guides/products/dee/enterprise-features))。

### VACUUM DROP TABLE

此命令永久删除已删除表的数据文件,释放存储空间
从存储和元数据中永久移除已删除的表

```sql
VACUUM DROP TABLE [FROM <database_name>] [DRY RUN [SUMMARY]] [LIMIT <file_count>];
```

**选项:**
- `FROM <database_name>`:限定在特定数据库
- `DRY RUN [SUMMARY]`:预览将被删除的文件而不实际执行删除
- `FROM <database_name>`:限制在特定数据库内
- `DRY RUN [SUMMARY]`:预览将要移除的文件,而不实际删除它们
- `LIMIT <file_count>`:限制要清理的文件数量

**示例:**
Expand All @@ -68,23 +73,23 @@ VACUUM DROP TABLE DRY RUN;
-- 预览将被移除文件的摘要
VACUUM DROP TABLE DRY RUN SUMMARY;

-- 从 "default" 数据库中移除已删除表
-- 从 "default" 数据库中移除已删除的表
VACUUM DROP TABLE FROM default;

-- 从已删除表中移除最多 1000 个文件
-- 从已删除的表中最多移除 1000 个文件
VACUUM DROP TABLE LIMIT 1000;
```

### VACUUM TABLE

此命令移除指定表的历史数据,清除旧版本并释放存储空间
为活跃表移除历史数据和孤立文件(仅清理存储)

```sql
VACUUM TABLE <table_name> [DRY RUN [SUMMARY]];
```

**选项:**
- `DRY RUN [SUMMARY]`:预览将被删除的文件而不实际执行删除
- `DRY RUN [SUMMARY]`:预览将要移除的文件,而不实际删除它们

**示例:**

Expand All @@ -95,34 +100,34 @@ VACUUM TABLE my_table DRY RUN;
-- 预览将被移除文件的摘要
VACUUM TABLE my_table DRY RUN SUMMARY;

-- 从 my_table 中移除历史数据
-- 从 my_table 表中移除历史数据
VACUUM TABLE my_table;
```

### VACUUM TEMPORARY FILES

此命令清除用于连接、聚合和排序的临时溢出文件,释放存储空间
移除查询执行期间创建的临时溢出文件

```sql
VACUUM TEMPORARY FILES;
```

**注意**:虽然此命令提供了手动清理临时文件的方法,但在正常操作中很少需要,因为 Databend 在大多数情况下会自动处理清理
> **注意**:在正常操作中很少需要,因为 Databend 会自动处理清理工作。通常只有在 Databend 于查询执行期间崩溃时才需要手动清理

## 调整数据保留时间

VACUUM 命令会移除早于 `DATA_RETENTION_TIME_IN_DAYS` 设置的数据文件。默认情况下,Databend 会保留 1 天(24 小时)的历史数据。您可以调整此设置:

```sql
-- 将保留期改为 2 天
-- 将保留期更改为 2 天
SET GLOBAL DATA_RETENTION_TIME_IN_DAYS = 2;

-- 查看当前保留设置
-- 检查当前的保留期设置
SHOW SETTINGS LIKE 'DATA_RETENTION_TIME_IN_DAYS';
```

| 版本 | 默认保留时间 | 最大保留时间 |
| 版本 | 默认保留期 | 最长保留期 |
| ---------------------------------------- | ----------------- | ---------------- |
| Databend 社区版和企业版 | 1 天(24 小时) | 90 天 |
| Databend Cloud (基础版) | 1 天(24 小时) | 1 天(24 小时) |
| Databend Cloud (商业版) | 1 天(24 小时) | 90 天 |
| Databend Community & Enterprise Editions | 1 天(24 小时) | 90 天 |
| Databend Cloud(Personal) | 1 天(24 小时) | 1 天(24 小时) |
| Databend Cloud(Business) | 1 天(24 小时) | 90 天 |