InfluxDB的數(shù)據(jù)保留策略,數(shù)據(jù)超過保存策略里指定的時(shí)間之后芒篷,就會(huì)被刪除。 但是如果我們不想完全將這些數(shù)據(jù)刪除掉,就需要連續(xù)查詢(Continuous Queries)的幫助了车酣。 連續(xù)查詢主要用在將數(shù)據(jù)歸檔,以降低系統(tǒng)空間的占用率索绪,主要是以降低精度為代價(jià)湖员。
一、InfluxDB連續(xù)查詢 定義
InfluxDB的連續(xù)查詢是在數(shù)據(jù)庫中自動(dòng)定時(shí)啟動(dòng)的一組語句瑞驱,語句中必須包含 SELECT 關(guān)鍵詞和 GROUP BY time() 關(guān)鍵詞娘摔。 InfluxDB會(huì)將查詢結(jié)果放在指定的數(shù)據(jù)表中。
二唤反、InfluxDB連續(xù)查詢 目的
使用連續(xù)查詢是最優(yōu)的降低采樣率的方式凳寺,連續(xù)查詢和存儲(chǔ)策略搭配使用將會(huì)大大降低InfluxDB的系統(tǒng)占用量鸭津。 而且使用連續(xù)查詢后,數(shù)據(jù)會(huì)存放到指定的數(shù)據(jù)表中肠缨,這樣就為以后統(tǒng)計(jì)不同精度的數(shù)據(jù)提供了方便逆趋。
三、InfluxDB連續(xù)查詢 操作
只有管理員用戶可以操作 連續(xù)查詢怜瞒。
1)新建連續(xù)查詢 新建連續(xù)查詢的語法如下所示:
CREATE?CONTINUOUS QUERY <cq_name>?ON <database_name>
[RESAMPLE [EVERY <interval>] [FOR <interval>]]
BEGIN SELECT?<function> (<stuff>)[,<fuction>(<stuff>)] INTO <different_measurement>
FROM?<current_measurement> [where <stuff>] GROUP BY time(<interval>)[,<stuff>]
END
stuff 原料父泳,材料,填充物
interval 幕間休息吴汪,間隔
查詢部分被 CREATE CONTINUOUS QUERY [...] BEGIN 和 END 所包含,主要的邏輯代碼也是在這一部分蒸眠。
CREATE CONTINUOUS QUERY cq_30m ON test BEGIN SELECT mean(used) INTO mem_used_30m FROM mem GROUP BY time(30m) END
示例在test庫中新建了一個(gè)名為 cq_30m 的連續(xù)查詢漾橙,每三十分鐘取一個(gè)used字段的平均值,加入 mem_used_30m 表中楞卡。使用的數(shù)據(jù)保留策略都是 default霜运。
2)顯示所有已存在的連續(xù)查詢
查詢所有連續(xù)查詢可以使用如下語句:
> SHOW CONTINUOUS QUERIES
可以看到其連續(xù)查詢的名稱以及 語句等信息。
3)刪除Continuous Queries
刪除連續(xù)查詢的語句如下:
DROP CONTINUOUS QUERY <cq_name> ON <database_name>
四蒋腮、其他說明
在InfluxDB中淘捡,將連續(xù)查詢與數(shù)據(jù)存儲(chǔ)策略一起使用會(huì)達(dá)到最好的效果。 比如池摧,將精度高的表的存儲(chǔ)策略定為一個(gè)周焦除,然后將精度底的表存儲(chǔ)策略定的時(shí)間久一點(diǎn),這要就可以實(shí)現(xiàn)高低搭配作彤,以滿足不同的工作需要膘魄。