生存时间支持
在 SQL 数据定义语言(DDL)中,通过“TTL 间隔”语法支持生存时间(TTL)(见下文)。“间隔”是一个字符串字面值,包含一个整数和单位说明。有效的单位前缀为“ms”(毫秒)、“sec”(秒)、“min”(分钟)、“hour”(小时)和“day”(天)。表的 TTL 元数据可以在元模式视图中进行检查。请注意,“ttl”现在是一个关键字,因此如果将其用作列名(例如在元模式视图中),则应将其用引号括起来:“TTL”。
XSQL>create table foo(x integer primary key) ttl '10 seconds';
XSQL>insert into foo values (1);
XSQL>select * from foo;
x ttl_timestamp@
------------------------------------------------------------------------------
1 11/29/2019 17:49:40
Selected records: 1
XSQL>insert into foo values (2);
XSQL>select * from foo;
x ttl_timestamp@
------------------------------------------------------------------------------
2 11/29/2019 17:49:58
Selected records: 1
XSQL>select * from Metaschema;
TableName Temporary Local ReadOnly TTL
------------------------------------------------------------------------------
foo true false false 10
Selected records: 1
TTL 实现已更改,以使用配置的日期时间精度(默认为秒)存储时间戳,而不是以微秒为单位。SQL 中仅支持 ttl_timestamp@,不支持 ttl_count@。
只有在执行读写事务提交操作的第一阶段之前,才会检查和执行生存时间(TTL)策略。
(这会产生一个重要的副作用,即新创建的对象(即在当前事务中创建的对象)的索引尚未更新,因此这些对象不会根据 TTL 策略进行检查。为了减轻这种影响,可以在提交之前添加一个事务检查点。)