retention policy: 存儲策略,用於設置數據保留的時間,每個數據庫剛開始會自動創建一個默認的存儲策略 autogen,數據保留時間為永久,之后用戶可以自己設置,例如保留最近2小時的數據。插入和查詢數據時如果不指定存儲策略,則使用默認存儲策略,且默認存儲策略可以修改。InfluxDB 會定期清除過期的數據。
一、InfluxDB 數據保存策略 說明
InfluxDB的數據保留策略(RP) 用來定義數據在InfluxDB中存放的時間,或者定義保存某個期間的數據。
一個數據庫可以有多個保留策略,但每個策略必須是獨一無二的。
二、InfluxDB 數據保留策略 目的
InfluxDB本身不提供數據的刪除操作, 因此用來控制數據量的方式就是定義數據保留策略.
因此定義數據保留策略的目的是讓InfluxDB能夠知道可以丟棄哪些數據, 從而更高效的處理數據.
三、InfluxDB 數據保留策略 操作
1.查詢策略
可以通過如下語句查看數據庫的現有策略:
> show retention policies on hyp1 name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 true
可以看到telegraf只有一個策略, 個字段的含義如下:
- name 名稱, 此示例名稱為default
- duration 持續時間, 0代表無限制
- shardGroupDuration shardGroup的存儲時間, shardGroup是InfluxDB的一個基本存儲結構, 應該大於這個時間的數據在查詢效率上應該有所降低.
- replicaN 全稱是REPLICATION, 副本個數
- default 是否是默認策略
2.新建策略
1 > CREATE RETENTION POLICY "2_hours" ON "hyp1" DURATION 2h REPLICATION 1 DEFAULT 2 > show retention policies on hyp1 3 name duration shardGroupDuration replicaN default 4 ---- -------- ------------------ -------- ------- 5 autogen 0s 168h0m0s 1 false 6 2_hours 2h0m0s 1h0m0s 1 true
通過上面的語句可以添加策略,本例在 telegraf 庫添加了一個2小時的策略,名字叫做 2_hours, duration為2小時,副本為1,設置為默認策略。
因為名為default的策略不再是默認策略,因此,在查詢使用default策略的表時要顯式的加上策略名 “default”。
select * from "2_hours".weather #為啥我select后不顯示
3.修改策略
> ALTER RETENTION POLICY "2_hours" ON "hyp1" DURATION 4h DEFAULT > show retention policies on hyp1 name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false 2_hours 4h0m0s 1h0m0s 1 true
4.刪除策略
> drop retention POLICY "2_hours" ON "hyp1" > show retention policies on hyp1 name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false