IoTDB支持对表(table)级别设置数据保留时间(TTL),允许系统自动定期删除旧数据,以有效控制磁盘空间并维护高性能查询和低内存占用。TTL默认以毫秒为单位,数据过期后不可查询且禁止写入,但物理删除会延迟至压缩时。需注意,TTL变更可能导致短暂数据可查询性变化。
注意事项:
在表模型中,IoTDB 的 TTL 是按照表的粒度生效的。可以直接在表上设置 TTL,或者在数据库级别设置 TTL。当在数据库级别设置了TTL时,在创建新表的过程中,系统会自动采用这个TTL值作为新表的默认设置,但每个表仍然可以独立地被设置或覆盖该值。
注意,如果数据库级别的TTL被修改,不会直接影响到已经存在的表的TTL设置。
如果在建表时通过sql语句设置了表的 TTL,则会以表的ttl为准。建表语句详情可见:表管理
示例1:创建表时设置 TTL
CREATE TABLE test3 ("场站" string id, "温度" int32) with (TTL=3600)
示例2:更改表语句设置TTL:
ALTER TABLE tableB SET PROPERTIES TTL=3600;
示例3:不指定TTL或设为默认值,它将与数据库的TTL相同,默认情况下是‘INF’(无穷大):
CREATE TABLE test3 ("场站" string id, "温度" int32) with (TTL=DEFAULT) CREATE TABLE test3 ("场站" string id, "温度" int32) ALTER TABLE tableB set properties TTL=DEFAULT
没有设置表的TTL,则会继承database的ttl。建数据库语句详情可见:数据库管理
示例4:数据库设置为 ttl =3600000,将生成一个ttl=3600000的表:
CREATE DATABASE db WITH (ttl=3600000) use db CREATE TABLE test3 ("场站" string id, "温度" int32)
示例5:数据库不设置ttl,将生成一个没有ttl的表:
CREATE DATABASE db use db CREATE TABLE test3 ("场站" string id, "温度" int32)
示例6:数据库设置了ttl,但想显式设置没有TTL的表,可以将TTL设置为‘INF’:
CREATE DATABASE db WITH (ttl=3600000) use db CREATE TABLE test3 ("场站" string id, "温度" int32) with (ttl='INF')
取消 TTL 设置,可以修改表的 TTL 设置为 ‘INF’。目前,IoTDB 不支持修改数据库的 TTL。
ALTER TABLE tableB set properties TTL='INF'
使用 “SHOW DATABASES” 和 “SHOW TABLES” 命令可以直接显示数据库和表的 TTL 详情。数据库和表管理语句详情可见:数据库管理、表管理
注意,树模型数据库的TTL也将显示。
IoTDB> show databases +---------+-------+-----------------------+---------------------+---------------------+ | Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval| +---------+-------+-----------------------+---------------------+---------------------+ |test_prop| 300| 1| 3| 100000| | test2| 300| 1| 1| 604800000| +---------+-------+-----------------------+---------------------+---------------------+ IoTDB> show databases details +---------+-------+-----------------------+---------------------+---------------------+-----+ | Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|Model| +---------+-------+-----------------------+---------------------+---------------------+-----+ |test_prop| 300| 1| 3| 100000|TABLE| | test2| 300| 1| 1| 604800000| TREE| +---------+-------+-----------------------+---------------------+---------------------+-----+ IoTDB> show tables +---------+-------+ |TableName|TTL(ms)| +---------+-------+ | grass| 1000| | bamboo| 300| | flower| INF| +---------+-------+ IoTDB> show tables details +---------+-------+----------+ |TableName|TTL(ms)| Status| +---------+-------+----------+ | bean| 300|PRE_CREATE| | grass| 1000| USING| | bamboo| 300| USING| | flower| INF| USING| +---------+-------+----------+