【数据库】TDengine 清理旧数据

发布时间:2026/6/6 23:55:19

【数据库】TDengine 清理旧数据 TDengine 清理旧数据TDengine 清理旧数据TDengine 清理旧数据TDengine 清理旧数据主要有两种方式设置 TTL 自动过期推荐 和 手动 DELETE。以下是具体操作说明。设置 TTL自动清理推荐TTL 代表数据存活时间单位为“天”。设置后TDengine 会在指定天数后自动删除数据后台周期性执行默认每 24 小时检查一次。对超级表STABLE设置如果你的 original_ft、raw_data 等表是基于超级表的这是最常见的设计只需对超级表执行一条命令即可ALTERSTABLE phTest.original_ft TTL30;-- 保留30天超过的自动删ALTERSTABLE phTest.raw_data TTL30;对普通表设置若没使用超级表-- 针对每个子表设置不推荐表多时麻烦ALTERTABLEphTest.of_2059963026013945856_vibration_kurtosis TTL30;注意同一个超级表下的所有子表共享 TTL只需在超级表上设置一次。查看当前 TTLSHOWSTABLESLIKEoriginal_ft;-- 查看超级表的 TTL 字段手动 DELETE精确到毫秒立即执行但消耗资源如果不想等 TTL 自动清理或者需要更灵活的时间范围例如精确到小时可以使用 DELETE 语句。注意DELETE 不会释放磁盘空间需要额外执行 COMPACT。示例删除 2025-01-01 以前的所有数据-- 对原始特征表假设 ts 是主时间戳列DELETEFROMphTest.original_ftWHEREts2025-01-01 00:00:00;-- 对原始数据存储表DELETEFROMphTest.raw_dataWHEREts2025-01-01 00:00:00;注意事项DELETE是异步操作返回成功后后台实际删除可能需要一段时间。不会释放磁盘空间必须手动触发压缩COMPACTDATABASEphTest;或者等系统自动压缩依赖 comp 参数默认可能很慢。如果数据量巨大DELETE 可能会非常慢且影响性能建议在低峰期执行并且优先使用 TTL。清理后回收磁盘空间无论采用哪种方式删除数据文件不会立即缩小需要执行压缩COMPACTDATABASEphTest;-- 或者只压缩某个超级表3.0 支持COMPACTTABLEphTest.original_ft;查看压缩状态SELECT*FROMINFORMATION_SCHEMA.INS_TABLE_COMPACTSWHEREdb_namephTestORDERBYstart_timeDESC;压缩可能需要较长时间且会消耗 CPU请在业务低峰执行。根据你的日志推断的快速操作从错误日志看你至少有两个核心超级表或表名模式phTest.original_ftphTest.raw_data建议先设置 TTL 防止未来再写满然后手动 DELETE 极旧数据并压缩以马上释放空间-- 1. 立即释放删除 2025 年之前的数据按实际需要调整时间DELETEFROMphTest.original_ftWHEREts2025-01-01;DELETEFROMphTest.raw_dataWHEREts2025-01-01;-- 2. 设置自动保留 30 天ALTERSTABLE phTest.original_ft TTL30;ALTERSTABLE phTest.raw_data TTL30;-- 3. 压缩数据库回收空间COMPACTDATABASEphTest;查询当前数据的时间范围 如果不确定要删除多久前的数据可以先查询最旧的数据时间SELECTMIN(ts)FROMphTest.original_ft;SELECTMAX(ts)FROMphTest.original_ft;根据业务需求决定保留时长例如保留最近 30 天、90 天等。执行完上述操作后再配合之前的文件清理磁盘空间应该会显著恢复。

相关新闻