InfluxDB每秒能夠處理成千上萬條數據,要將這些數據所有保存下來會佔用大量的存儲空間,有時咱們可能並不須要將全部歷史數據進行存儲,所以,InfluxDB推出了數據保留策略(Retention Policies),用來讓咱們自定義數據的保留時間。更多InfluxDB詳細教程請看:InfluxDB系列學習教程目錄html
1、InfluxDB 數據保留策略 說明
InfluxDB的數據保留策略(RP) 用來定義數據在InfluxDB中存放的時間,或者定義保存某個期間的數據。linux
一個數據庫能夠有多個保留策略,但每一個策略必須是獨一無二的。數據庫
2、InfluxDB 數據保留策略 目的
InfluxDB自己不提供數據的刪除操做,所以用來控制數據量的方式就是定義數據保留策略。post
所以定義數據保留策略的目的是讓InfluxDB可以知道能夠丟棄哪些數據,從而更高效的處理數據。學習
3、InfluxDB 數據保留策略 操做
1)查詢策略spa
能夠經過以下語句查看數據庫的現有策略:code
> SHOW RETENTION POLICIES ON telegraf name duration shardGroupDuration replicaN default default 0 168h0m0s 1 true
能夠看到,telegraf只有一個策略,各字段的含義以下:htm
name--名稱,此示例名稱爲 defaultblog
duration--持續時間,0表明無限制教程
shardGroupDuration--shardGroup的存儲時間,shardGroup是InfluxDB的一個基本儲存結構,應該大於這個時間的數據在查詢效率上應該有所下降。
replicaN--全稱是REPLICATION,副本個數
default--是不是默認策略
2)新建策略
> CREATE RETENTION POLICY "2_hours" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT > SHOW RETENTION POLICIES ON telegraf name duration shardGroupDuration replicaN default default 0 168h0m0s 1 false 2_hours 2h0m0s 1h0m0s 1 true
經過上面的語句能夠添加策略,本例在 telegraf 庫添加了一個2小時的策略,名字叫作 2_hours, duration爲2小時,副本爲1,設置爲默認策略。
由於名爲default的策略再也不是默認策略,所以,在查詢使用default策略的表時要顯式的加上策略名 「default」。
> select * from "default".cpu limit 2 name: cpu --------- time cpu host host_id usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user 1467884670000000000 cpu-total ResourcePool-0246-billing07 0 0 99.79994164175388 0 0 0.06251823446523729 0 0 0.12920435125646068 0.008335764603451727 1467884670000000000 cpu9 billing07 0 0 97.79338014069532 1.8054162487519367 0 0 0 0 0.10030090272883943 0.3009027081135398
3)修改策略
修改策略使用以下語句修改
> ALTER RETENTION POLICY "2_hours" ON "telegraf" DURATION 4h DEFAULT > show retention POLICIES on telegraf name duration shardGroupDuration replicaN default default 0 168h0m0s 1 false 2_hours 4h0m0s 1h0m0s 1 true
能夠看到,修改後的策略發生了變化。
4)刪除策略
InfluxDB中策略的刪除操做以下所示:
> drop retention POLICY "2_hours" ON "telegraf" > show retention POLICIES on telegraf name duration shardGroupDuration replicaN default default 0 168h0m0s 1 false
能夠看到,名爲2_hours的策略已經被刪除了。
4、其餘說明
策略這個關鍵詞「POLICY」在使用是應該大寫,小寫應該會出粗。
當一個表使用的策略不是默認策略時,在進行操做時必定要顯式的指定策略名稱,不然會出現錯誤。