[关闭]
@Alex-Zhao 2018-05-02T14:04:08.000000Z 字数 1060 阅读 122

关于InfluxDB的数据保留策略

数据库


InfluxDB每秒可以处理千万条数据,要将这些数据全部保存下来会占用大量存储空间,有时历史数据我们可能就不需要了,所以InfluxDB有数据保留(Retention Policies)策略可以通过它来自定义数据保留时间。

  1. 说明
    RP用来定义数据在InfluxDB中的存放时间,或者定义某个期间的数据。一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
  2. 目的
    InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
    因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。
  3. 操作

    • 查询策略
      通过查询语句可以查看现有数据库的策略:
      1. > SHOW RETENTION POLICIES ON telegraf
      2. name duration shardGroupDuration replicaN default
      3. default 0 168h0m0s 1 true

    字段含义:
    name--名称
    duration--数据持续时间,0代表无限制
    shardGroupDuration--shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
    replicaN--全称是REPLICATION,副本个数
    default--是否是默认策略

    • 新建策略
      1. > CREATE RETENTION POLICY "2_hours" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT
      2. > SHOW RETENTION POLICIES ON telegraf
      3. name duration shardGroupDuration replicaN default
      4. default 0 168h0m0s 1 false
      5. 2_hours 2h0m0s 1h0m0s 1 true

    因为名为default的策略不再是默认策略,因此,在查询使用default策略的表时要显式的加上策略名 “default”。

    1. > select * from "default".cpu limit 2
    • 修改策略

      1. ALTER RETENTION POLICY "2_hours" ON "telegraf" DURATION 4h DEFAULT
    • 删除策略

      1. drop retention POLICY "2_hours" ON "telegraf"
  4. 其他说明
    策略这个关键词“POLICY”在使用是应该大写,小写应该会出粗。
    当一个表使用的策略不是默认策略时,在进行操作时一定要显式的指定策略名称,否则会出现错误。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注