文档中心MogDBMogDB StackUqbar

文档:v2.0

支持的版本:

数据保留策略

数据保留策略(Retention Policy)用于管理时序数据的生命周期。时序表使用的数据保留策略决定了时序表中数据的保留时长,超过保留时长的数据会被自动删除。

数据保留策略归属于某个 database,同一个 database 下可以创建多个保留策略,并指定其中一个为默认策略。用户创建时序表时,如果没有显式指定数据保留策略,则会使用该 database 下的默认数据保留策略。


创建数据保留策略

用于在当前 database 下创建一个新的数据保留策略。

数据保留策略包含两个参数:

  • duration: 数据保留时间,必选参数。例如设置为 1week,则一周以前的数据会被自动删除。

  • chunkGroupDuration: 数据分区粒度,可选参数。时序表中的数据会按照时序表设置的chunkGroupDuration进行分区;对于超出保留时长的数据,也会按照 ChunkGroupDuration 粒度进行删除。如未指定该参数,系统会按照 duration自动指定chunkGroupDuration。

语法描述

CREATE TIMESERIES POLICY [ IF NOT EXISTS ] policy_name WITH (option = value, [...] )

其中option包含:

  • duration:时序数据保留时间,超出这个时间的历史数据自动删除,删除以Chunk Group粒度为单位。取值范围 >= 1h。特殊值0表示数据永久保留,此时时间单位支持second、minute、hour、day、week、month、year。

  • chunkGroupDuration:指定时序表的Chunk Group时间跨度,不支持设为特殊值0。

    如果未指定本参数,系统自动根据duration参数设置合适的Chunk Group Duration参数,规则如下

    • duration < 2天,chunkGroupDuration设置为1小时。chunkGroup 时间对齐到一小时,即chunkGroup的起止时间应该是整点,如 '2020-07-10 00:00:00'、'2020-07-10 01:00:00',而不会出现 '2020-07-10 00:10:00'、'2020-07-10 00:10:10' 这样的时间点。
    • duration <= 6个月,chunkGroupDuration设置为1天。chunkGroup对齐到天,如 '2020-07-10 00:00:00'、'2020-07-11 00:00:00';
    • duration > 6个月,chunkGroupDuration设置为7天。chunkGroup对齐到周,即chunkGroup的起始时间对齐到当周的周一。
    • duration > 3 年,chunkGroupDuration设置为 1个月。chunkGroup对齐到月,即chunkGroup的起始时间对齐到当月的一号。

duration和chunkGroupDuration数字部分的上限为231

每个 database 下有一个名为 ‘infinity’的默认的数据保留策略,默认策略的 duration=’0s’,表示数据永远不删除,chunkGroupDuration=’1month’。

约束

  • 新建的数据保留策略名称不能与已存在的保留策略重名。

  • duration不能小于chunkGroupDuration。

  • duration和chunkGroupDuration格式为'数字+时间单位'。输入的数字如果不是整数,系统会对其向上取整,例如1.2 week会取整为2 weeks。

  • duration和chunkGroupDuration不支持负数,duration和chunkGroupDuration支持的最小时间单位是1 hour,如果设置的值小于1 hour 会自动设置为 1 hour。

  • duration和chunkGroupDuration支持设置的单位包括:小时(hour)、天(day)、周(week)、月(month)、年(year),不支持其他时间单位。

  • 每种时间单位的取值范围限制如下:

    单位 下限 上限
    0 296533
    0 3558399
    0 15250284
    0 106751991
    小时 0 2147483647

示例

Uqbar=# CREATE TIMESERIES POLICY policy_test WITH (duration = '2 years', chunkGroupDuration='7 days');
CREATE POLICY

修改数据保留策略

用于修改已存在的数据保留策略。

语法描述

ALTER TIMESERIES POLICY [IF EXISTS] policy_name actions

其中action包含:

  • RENAME TO policy_name,用于修改数据保留策略名,其中 policy_name 用于指定修改后的策略名

  • SET (option = value, [...]) ,用于修改数据保留策略的参数

其中option包含:

  • { duration, chunkGroupDuration }

约束

  • 修改后的 duration 和 chunkGroupDuration 需满足新建数据保留策略的约束

示例

Uqbar=# ALTER TIMESERIES POLICY policy_test SET( chunkGroupDuration='1 month');
ALTER POLICY
Uqbar=# ALTER TIMESERIES POLICY policy_test RENAME TO policy_1;
ALTER POLICY

删除数据保留策略

用于删除已存在的数据保留策略。

语法描述

DROP TIMESERIES POLICY [IF EXISTS] policy_name

可以用于删除一个或多个timeseries policy。

如果没有IF EXISTS选项,且被删除的策略列表中中有不存在的策略,则执行报错,给出对应的错误提示,不执行任何策略的删除。

如果含有IF EXISTS选项,且被删除的策略列表中有不存在的策略,则执行跳过不存在的策略,并给出对应的提示信息,存在的策略执行删除操作。

约束

  • 如果数据保留策略正在被时序表使用,无法删除。

  • 数据库下的默认策略不能被删除。

示例

Uqbar=# DROP TIMESERIES POLICY policy1;
DROP POLICY

设置默认策略

用于修改当前 database 下的默认数据保留策略。

语法描述

ALTER TIMESERIES POLICY policy_name DEFAULT;

示例

Uqbar=# ALTER TIMESERIES POLICY policy1 DEFAULT;
ALTER TIMESERIES POLICY

查询数据保留策略

通过 timeseries_views.policies 视图展示当前已存在的数据保留策略。视图属性参见timeseries_views.policies

语法描述

SELECT * FROM timeseries_views.policies;

示例

Uqbar=# SELECT * FROM timeseries_views.policies;
 policyname | duration | chunkgroupduration | default 
------------+----------+--------------------+---------
 infinity   | 00:00:00 | 1 mon              | t

(2 rows)
Copyright © 2011-2024 www.enmotech.com All rights reserved.