TDengine是否支持删除数据及指定范围的数据?
TDengine 支持手动删除指定范围的数据,除了自动过期的保留策略(Retention Policy)之外,你可以通过以下方法实现按需删除:
核心操作方法
按时间范围删除数据
TDengine的DELETE语句支持指定时间戳过滤条件,可针对普通表、超级表执行范围删除:
- 针对单张普通表删除指定时间范围的数据,语法如下:
示例:删除表DELETE FROM <表名> WHERE ts >= '起始时间' AND ts <= '结束时间';d1001中2024年1月1日之前的所有数据:DELETE FROM d1001 WHERE ts < '2024-01-01 00:00:00'; - 针对超级表下所有子表删除指定时间范围的数据,直接指定超级表名即可,无需遍历子表:
DELETE FROM <超级表名> WHERE ts >= '起始时间' AND ts <= '结束时间';
注意事项
- 2.x版本中
DELETE语句仅支持使用时间戳作为唯一过滤条件,不支持标签、普通列作为过滤条件;3.x版本支持搭配标签过滤实现更精准的删除,示例如下:DELETE FROM power WHERE location = 'Beijing' AND ts < '2024-01-01 00:00:00'; - 删除操作不可逆,执行前建议先运行对应条件的
SELECT语句确认匹配的数据范围符合预期,避免误删。 - 数据删除后磁盘空间不会立即释放,后台会在后续的compaction操作中自动回收空闲存储资源,若需要立即释放可手动触发compaction操作。
内容的提问来源于stack exchange,提问作者lsm
相关产品推荐
相关产品推荐

