TDengine设置keep参数为10后10天前数据未过期的可能原因
TDengine 2.1.3.0版本
keep参数设置为10但10天前数据未清理的可能原因 keep参数的时间计算基准为落盘数据文件的生成时间,而非数据本身的时间戳或写入时间。如果10天前的写入数据近期才被落盘生成新的数据文件,该文件的保留计时会从生成时间重新计算,不会被立即清理。- 2.1.x版本的vnode文件合并逻辑会重置文件计时:后台定期合并旧数据文件后,新生成的文件创建时间会更新,相当于旧数据的保留时间会从合并完成时间重新计算,导致旧数据留存时间长于设定的
keep值。 - 后台过期清理任务未触发:TDengine的过期数据清理为定时后台任务,触发间隔由配置项
expire_check_interval控制,若该参数设置过大,清理任务尚未执行时旧数据会暂时留存。 keep参数实际生效值与预期不符:TDengine中数据库层级的keep配置优先级高于表层级配置,若建库时设置的keep值大于10,建表时单独指定的表级keep值不会生效。可执行show databases;和show create table <你的表名>;分别核对库、表的实际keep配置。- 数据未达到落盘阈值:如果10天前写入的数据一直留存于内存缓存中未刷入磁盘生成正式数据文件,清理任务只会扫描磁盘落盘文件,不会清理内存中的缓存数据,这部分数据会一直留存到落盘后才会进入待清理队列。
- 2.1.3.0版本已知bug:该版本存在部分场景下过期数据清理失效的问题,比如跨vnode分片数据、带标签过滤的子表数据都会出现清理不及时的情况,后续2.1.x迭代小版本已修复该类问题。
内容的提问来源于stack exchange,提问作者superman
相关产品推荐
相关产品推荐

