在上一篇:InfluxDB學習之InfluxDB數據保留策略(Retention Policies) 中,我們介紹了 InfluxDB的數據保留策略,數據超過保存策略里指定的時間之後,就會被刪除。 但是如果我們不想完全將這些數據刪除掉,就需要連續查詢(Continuous Queries)的幫助了。 ...
在上一篇:InfluxDB學習之InfluxDB數據保留策略(Retention Policies) 中,我們介紹了 InfluxDB的數據保留策略,數據超過保存策略里指定的時間之後,就會被刪除。
但是如果我們不想完全將這些數據刪除掉,就需要連續查詢(Continuous Queries)的幫助了。
連續查詢主要用在將數據歸檔,以降低系統空間的占用率,主要是以降低精度為代價。
更多InfluxDB詳細教程請看:InfluxDB系列學習教程目錄
InfluxDB技術交流群:580487672(點擊加入)
一、InfluxDB連續查詢 定義
InfluxDB的連續查詢是在資料庫中自動定時啟動的一組語句,語句中必須包含 SELECT
關鍵詞和 GROUP BY time()
關鍵詞。
InfluxDB會將查詢結果放在指定的數據表中。
二、InfluxDB連續查詢 目的
使用連續查詢是最優的降低採樣率的方式,連續查詢和存儲策略搭配使用將會大大降低InfluxDB的系統占用量。
而且使用連續查詢後,數據會存放到指定的數據表中,這樣就為以後統計不同精度的數據提供了方便。
三、InfluxDB連續查詢 操作
只有管理員用戶可以操作 連續查詢。
1)新建連續查詢
新建連續查詢的語法如下所示:
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 所包含,主要的邏輯代碼也是在這一部分。
使用示例:
> 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>
四、其他說明
在InfluxDB中,將連續查詢與數據存儲策略一起使用會達到最好的效果。
比如,將精度高的表的存儲策略定為一個周,然後將精度底的表存儲策略定的時間久一點,這要就可以實現高低搭配,以滿足不同的工作需要。
更多InfluxDB詳細教程請看:InfluxDB系列學習教程目錄
InfluxDB技術交流群:580487672(點擊加入)