数据清理与回收
概述
在 TiDB Cloud Lake 中,执行 DROP、TRUNCATE 或 DELETE 命令时,数据不会被立即删除。这使得 TiDB Cloud Lake 的时间旅行功能得以实现,允许你访问数据的先前状态。不过,这种方式也意味着在执行这些操作后,存储空间不会被自动释放。
Before DELETE: After DELETE: After VACUUM:
+----------------+ +----------------+ +----------------+
| Current Data | | New Version | | Current Data |
| | | (After DELETE) | | (After DELETE) |
+----------------+ +----------------+ +----------------+
| Historical Data| | Historical Data| | |
| (Time Travel) | | (Original Data)| | |
+----------------+ +----------------+ +----------------+
Storage not freed Storage freed
VACUUM 命令与清理范围
TiDB Cloud Lake 提供了三种 VACUUM 命令,它们的清理范围各不相同。了解每种命令会清理哪些内容,对于数据管理至关重要。
VACUUM DROP TABLE
├── Target: Dropped tables (after DROP TABLE command)
├── S3 Storage: ✅ Removes ALL data (files, segments, blocks, indexes, statistics)
├── Meta Service: ✅ Removes ALL metadata (schema, permissions, records)
└── Result: Complete table removal - CANNOT be recovered
VACUUM TABLE
├── Target: Historical data and orphan files for active tables
├── S3 Storage: ✅ Removes old snapshots, orphan segments/blocks, indexes/stats
├── Meta Service: ❌ Preserves table structure and current metadata
└── Result: Table stays active, only history cleaned
VACUUM TEMPORARY FILES
├── Target: Temporary spill files from queries (joins, sorts, aggregates)
├── S3 Storage: ✅ Removes temp files from crashed/interrupted queries
├── Meta Service: ❌ No metadata (temp files don't have any)
└── Result: Storage cleanup only, rarely needed
🚨 关键提示:只有
VACUUM DROP TABLE会影响 meta service。其他命令只会清理存储文件。
使用 VACUUM 命令
VACUUM 命令族是在 TiDB Cloud Lake 中清理数据的主要方法。
VACUUM DROP TABLE
从存储和元信息中永久移除已删除的表。
VACUUM DROP TABLE [FROM <database_name>] [DRY RUN [SUMMARY]] [LIMIT <file_count>];
选项:
FROM <database_name>:限制为特定数据库DRY RUN [SUMMARY]:预览将要移除的文件,而不实际删除它们LIMIT <file_count>:限制要执行 vacuum 的文件数量
示例:
-- Preview files that would be removed
VACUUM DROP TABLE DRY RUN;
-- Preview summary of files that would be removed
VACUUM DROP TABLE DRY RUN SUMMARY;
-- Remove dropped tables from the "default" database
VACUUM DROP TABLE FROM default;
-- Remove up to 1000 files from dropped tables
VACUUM DROP TABLE LIMIT 1000;
VACUUM TABLE
移除活动表的历史数据和孤儿文件(仅清理存储)。
VACUUM TABLE <table_name> [DRY RUN [SUMMARY]];
选项:
DRY RUN [SUMMARY]:预览将要移除的文件,而不实际删除它们
示例:
-- Preview files that would be removed
VACUUM TABLE my_table DRY RUN;
-- Preview summary of files that would be removed
VACUUM TABLE my_table DRY RUN SUMMARY;
-- Remove historical data from my_table
VACUUM TABLE my_table;
VACUUM TEMPORARY FILES
移除查询执行期间创建的临时 spill 文件。
VACUUM TEMPORARY FILES;
调整数据保留时间
VACUUM 命令会移除早于 DATA_RETENTION_TIME_IN_DAYS 设置的数据文件。默认情况下,TiDB Cloud Lake 会保留 1 天(24 小时)的历史数据。你可以调整此设置:
-- Change retention period to 2 days
SET GLOBAL DATA_RETENTION_TIME_IN_DAYS = 2;
-- Check current retention setting
SHOW SETTINGS LIKE 'DATA_RETENTION_TIME_IN_DAYS';