数据存活时间(TTL)

IoTDB 支持对 database 级别设置数据存活时间(TTL),这使得 IoTDB 可以定期、自动地删除一定时间之前的数据。合理使用 TTL 可以帮助您控制 IoTDB 占用的总磁盘空间以避免出现磁盘写满等异常。并且,随着文件数量的增多,查询性能往往随之下降, 内存占用也会有所提高。及时地删除一些较老的文件有助于使查询性能维持在一个较高的水平和减少内存资源的占用。

TTL的默认单位为毫秒,如果配置文件中的时间精度修改为其他单位,设置ttl时仍然使用毫秒单位。

设置 TTL

设置 TTL 的 SQL 语句如下所示:

  1. IoTDB> set ttl to root.ln 3600000

这个例子表示在root.ln数据库中,只有3600000毫秒,即最近一个小时的数据将会保存,旧数据会被移除或不可见。

  1. IoTDB> set ttl to root.sgcc.** 3600000

支持给某一路径下的 database 设置TTL,这个例子表示root.sgcc路径下的所有 database 设置TTL。

  1. IoTDB> set ttl to root.** 3600000

表示给所有 database 设置TTL。

取消 TTL

取消 TTL 的 SQL 语句如下所示:

  1. IoTDB> unset ttl to root.ln

取消设置 TTL 后, database root.ln中所有的数据都会被保存。

  1. IoTDB> unset ttl to root.sgcc.**

取消设置root.sgcc路径下的所有 database 的 TTL 。

  1. IoTDB> unset ttl to root.**

取消设置所有 database 的 TTL 。

显示 TTL

显示 TTL 的 SQL 语句如下所示:

  1. IoTDB> SHOW ALL TTL
  2. IoTDB> SHOW TTL ON StorageGroupNames

SHOW ALL TTL 这个例子会给出所有 database 的 TTL。 SHOW TTL ON root.ln,root.sgcc,root.DB 这个例子会显示指定的三个 database 的 TTL。 注意:没有设置 TTL 的 database 的 TTL 将显示为 null。

  1. IoTDB> show all ttl
  2. +-------------+-------+
  3. | database|ttl(ms)|
  4. +-------------+-------+
  5. | root.ln|3600000|
  6. | root.sgcc| null|
  7. | root.DB|3600000|
  8. +-------------+-------+