数据保留策略

openGemini大约 4 分钟约 1173 字

CREATE RETENTION POLICY(创建数据保留策略)

语法

CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [INDEX DURATION <duration>] [DEFAULT]

DURATION

DURATION子句确定openGemini将数据保留多长时间。 保留策略的最短持续时间为一小时,最长持续时间为无限。

REPLICATION

REPLICATION子句确定每个数据点在集群中存储了多少个独立副本,目前仅支持1副本。

SHARD DURATION

  • 可选项, SHARD DURATION 子句确定分片组的时间范围。
  • 默认情况下,分片组的持续时间由保留策略的DURATION确定:
保留策略期限分片组持续时间
< 2 days1 hour
>= 2 days and <= 6 months1 day
> 6 months7 days

最小允许的 SHARD GROUP DURATION1h. 如果 创建保留策略 查询试图将 SHARD GROUP DURATION 设置为小于 1h 且大于 0s, openGemini 会自动的将 SHARD GROUP DURATION 设置为 1h. 如果 CREATE RETENTION POLICY 查询试图将 SHARD GROUP DURATION 设置为你 0s, openGemini 会根据上面列出的默认自动设置SHARD GROUP DURATION

INDEX DURATION

  • 可选项,INDEX DURATION 子句确定索引组的时间范围。

DEFAULT

将新的保留策略设置为数据库的默认保留策略。此设置是可选项。

示例

  • 创建保留策略
CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 1d REPLICATION 1

该查询为数据库NOAA_water_database创建了一个名为one_day_only的保留策略,该策略的期限为1d,复制因子为1

  • 创建默认保留策略
CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 24h REPLICATION 1 DEFAULT

该查询创建与上例相同的保留策略,但是将其设置为数据库的默认保留策略。

  • 创建数据不过期的保留策略
CREATE RETENTION POLICY "never_expire" ON "NOAA_water_database" DURATION 0s REPLICATION 1

该查询为数据库NOAA_water_database创建了一个名为never_expire的保留策略,该策略的下的数据是不会过期的。

提示

成功的CREATE RETENTION POLICY命令不返回任何结果。

如果尝试创建与现有策略相同的保留策略,则openGemini不会返回错误。 如果尝试创建与现有保留策略相同名称的保留策略,但属性不同,则openGemini将返回错误。

请参阅 数据库操作

SHOW RETENTION POLICIES(查看数据保留策略)

返回指定数据库的保留策略列表。

语法

SHOW RETENTION POLICIES [ON <database_name>]

ON <database_name>是可选项。如果查询中没有包含ON <database_name>,您必须在CLI中使用USE <database_name>指定数据库,或者在openGemini API请求中使用参数db指定数据库。

示例

  • 运行带有ON子句的SHOW RETENTION POLICIES查询
> SHOW RETENTION POLICIES ON NOAA_water_database
+---------+----------+--------------------+--------------+---------------+----------------+----------+---------+
| name    | duration | shardGroupDuration | hot duration | warm duration | index duration | replicaN | default |
+---------+----------+--------------------+--------------+---------------+----------------+----------+---------+
| autogen | 0s       | 168h0m0s           | 0s           | 0s            | 168h0m0s       | 1        | true    |
+---------+----------+--------------------+--------------+---------------+----------------+----------+---------+
8 columns, 1 rows in set

该查询以表格的形式返回数据库NOAA_water_database中所有的保留策略。这个数据库有一个名为autogen的保留策略,该保留策略具有无限的持续时间,为期7天的shard group持续时间,复制系数为1,并且它是这个数据库的默认(DEFAULT)保留策略。

  • 运行不带有ON子句的SHOW RETENTION POLICIES查询

使用USE <database_name>指定数据库

> use NOAA_water_database
> SHOW RETENTION POLICIES
+---------+----------+--------------------+--------------+---------------+----------------+----------+---------+
| name    | duration | shardGroupDuration | hot duration | warm duration | index duration | replicaN | default |
+---------+----------+--------------------+--------------+---------------+----------------+----------+---------+
| autogen | 0s       | 168h0m0s           | 0s           | 0s            | 168h0m0s       | 1        | true    |
+---------+----------+--------------------+--------------+---------------+----------------+----------+---------+
8 columns, 1 rows in set

ALTER RETENTION POLICY(修改数据保留策略)

语法

ALTER RETENTION POLICY语法如下,必须声明至少一个保留策略属性DURATIONREPLICATIONSHARD DURATIONDEFAULT

ALTER RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> SHARD DURATION <duration> DEFAULT

注意

复制因子 REPLICATION <n> 仅支持 1

示例

首先,以2d的DURATION创建保留策略what_is_time

CREATE RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 2d REPLICATION 1

修改what_is_time以使其具有三周的DURATION,两个小时的分片组持续时间,并使其成为NOAA_water_databaseDEFAULT保留策略。

ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 2h DEFAULT

在最后一个示例中, what_is_time保留其原始复制因子1

成功的ALTER RETENTION POLICY命令不返回任何结果。

DROP RETENTION POLICY(删除数据保留策略)

警告

删除保留策略将永久删除使用该保留策略的所有measurement和数据

语法

DROP RETENTION POLICY <retention_policy_name> ON <database_name>

示例

NOAA_water_database数据库中删除保留策略what_is_time

> DROP RETENTION POLICY "what_is_time" ON "NOAA_water_database"

成功执行DROP RETENTION POLICY不返回任何结果。

提示

如果尝试删除不存在的保留策略,openGemini也不会返回错误。