可是若是咱們不想徹底將這些數據刪除掉,就須要連續查詢(Continuous Queries)的幫助了。linux
連續查詢主要用在將數據歸檔,以下降系統空間的佔用率,主要是以下降精度爲代價。數據庫
1、InfluxDB連續查詢 定義
InfluxDB的連續查詢是在數據庫中自動定時啓動的一組語句,語句中必須包含 SELECT
關鍵詞和 GROUP BY time()
關鍵詞。post
InfluxDB會將查詢結果放在指定的數據表中。spa
2、InfluxDB連續查詢 目的
使用連續查詢是最優的下降採樣率的方式,連續查詢和存儲策略搭配使用將會大大下降InfluxDB的系統佔用量。code
並且使用連續查詢後,數據會存放到指定的數據表中,這樣就爲之後統計不一樣精度的數據提供了方便。blog
3、InfluxDB連續查詢 操做
只有管理員用戶能夠操做 連續查詢。flux
1)新建連續查詢rem
新建連續查詢的語法以下所示:get
CREATE CONTINUOUS QUERY <cq_name> ON <database_name> [RESAMPLE [EVERY <interval>] [FOR <interval>]] BEGIN SELECT <function>(<stuff>)[,<function>(<stuff>)] INTO <different_measurement> FROM <current_measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<stuff>] END
查詢部分被 CREATE CONTINUOUS QUERY [...] BEGIN 和 END 所包含,主要的邏輯代碼也是在這一部分。it
使用示例:
> CREATE CONTINUOUS QUERY cq_30m ON telegraf BEGIN SELECT mean(used) INTO mem_used_30m FROM mem GROUP BY time(30m) END > SHOW CONTINUOUS QUERIES name: telegraf -------------- name query cq_30m CREATE CONTINUOUS QUERY cq_30m ON telegraf BEGIN SELECT mean(used) INTO telegraf."default".mem_used_30m FROM telegraf."default".mem GROUP BY time(30m) END name: _internal --------------- name query
示例在telegraf庫中新建了一個名爲 cq_30m 的連續查詢,每三十分鐘取一個used字段的平均值,加入 mem_used_30m 表中。使用的數據保留策略都是 default。
2)顯示全部已存在的連續查詢
查詢全部連續查詢可使用以下語句:
> SHOW CONTINUOUS QUERIES name: telegraf -------------- name query cq_30m CREATE CONTINUOUS QUERY cq_30m ON telegraf BEGIN SELECT mean(used) INTO telegraf."default".mem_used_30m FROM telegraf."default".mem GROUP BY time(30m) END name: _internal --------------- name query
能夠看到其連續查詢的名稱以及 語句等信息。
3)刪除Continuous Queries
刪除連續查詢的語句以下:
DROP CONTINUOUS QUERY <cq_name> ON <database_name>
4、其餘說明
在InfluxDB中,將連續查詢與數據存儲策略一塊兒使用會達到最好的效果。
好比,將精度高的表的存儲策略定爲一個周,而後將精度底的表存儲策略定的時間久一點,這要就能夠實現高低搭配,以知足不一樣的工做須要。