InfluxDB學習之InfluxDB連續查詢(Continuous Queries)

 

 咱們介紹了 InfluxDB的數據保留策略,數據超過保存策略裏指定的時間以後,就會被刪除。

可是若是咱們不想徹底將這些數據刪除掉,就須要連續查詢(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中,將連續查詢與數據存儲策略一塊兒使用會達到最好的效果。

好比,將精度高的表的存儲策略定爲一個周,而後將精度底的表存儲策略定的時間久一點,這要就能夠實現高低搭配,以知足不一樣的工做須要。

相關文章
相關標籤/搜索