Skip to content

TTL Usage

刘涛 edited this page Jun 12, 2020 · 1 revision

TTL是什么

BaikalDB TTL(Time To Live) 特性允许用户指定表数据的自动过期时间,过期数据会被定期清理,无需用户手工删除。 目前还不支持Rocksdb_cstore,不支持global index和fulltext索引的表。

TTL在BaikalDB中如何使用

  1. 建表时通过注释指定过期时间ttl_duration,单位秒。COMMENT='{"ttl_duration":86400,.....}
  2. 拥有全局索引的表不支持TTL,建表会失败。
  3. INSERT/REPLACE语句支持注释更改行级ttl_duration。通过在sql增加注释指定/{"ttl_duration":86400}/INSERT ....
  4. 由于底层存储不一样,表的TTL只能建表指定,后续没法更改为非TTL表,反之亦然。
  5. 过期的数据无法被访问到。

举例(数据一天后过期):

CREATE TABLE `t1` (
  `id` int(10) NOT NULL ,
  `date` DATE NOT NULL ,
   `hour` int(10) NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=Rocksdb DEFAULT CHARSET=utf8 AVG_ROW_LENGTH=20 COMMENT='{"resource_tag":"cluster1", "replica_num":3, "ttl_duration":86400, "namespace":"TEST"}'