TDengine 2.x 数据清理策略

数据保留策略

TDengine 在 2.x 版本中通过 keepdays 两个参数来设置数据保留策略,这两个参数官方释义如下:

  • keep: 数据库中数据保留的天数,单位为天,默认值:3650
  • days: 一个数据文件存储数据的时间跨度,单位为天,默认值:10

TDengine 除 vnode 分片之外,还对时序数据按照时间段进行分区。每个数据文件只包含一个时间段的时序数据,时间段的长度由DB的配置参数 days 决定。这种按时间段分区的方法还便于高效实现数据的保留策略,只要数据文件超过规定的天数(系统配置参数 keep ),将被自动删除。而且不同的时间段可以存放于不同的路径和存储介质,以便于大数据的冷热管理,实现多级存储。

TDengine 通过 keep 和 days 严格控制插入数据的时间戳范围:对于过去的数据,不可以超出当前时间减去keep的时间戳值;对于未来的数据,不可以超出当前时间加上days的时间戳值。

taos 数据库 2.x 版本数据库是在数据落盘后才能触发过期文件回收,触发落盘的机制有以下两点:

  • 1、写满该 vnode 三分之一的缓冲池(建库时指定,2.0 为建库参数 cache * blocks 的值)
  • 2、数据库服务进程停止的时候

wal-to-file

注:数据过期后磁盘空间不会立即释放,而是需要等到下次落盘时才会被释放。

数据清理流程

keep=7 days=3 时,数据清理的流程图如下:

policy1
policy2

随着时间的推移,数据的时间戳会与系统时间做计算,一旦超过 keep 天数,就会被识别为过期数据,等到这个数据文件内的所有数据都过期后,这个数据文件才会被从计算机上清除。

参考1 参考2

Infee Fang
Infee Fang
互联网二手搬砖工