Influx Sql系列教程二:retention policy 保存策略

retention policy這個東西相比較於傳統的關係型數據庫(好比mysql)而言,是一個比較新的東西,在將表以前,有必要來看一下保存策略有什麼用,以及能夠怎麼用mysql

I. 基本操做

1. 建立retention policy

retention policy依託於database存在,也就是說保存策略建立時,須要指定具體的數據庫,語法以下git

CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]
複製代碼

建立語句中,有幾個地方須要額外注意一下github

  • retention_policy_name: 策略名(自定義的)
  • database_name: 一個必須存在的數據庫名
  • duration: 定義的數據保存時間,最低爲1h,若是設置爲0,表示數據持久不失效(默認的策略就是這樣的)
  • REPLICATION: 定義每一個point保存的副本數,默認爲1
  • default: 表示將這個建立的保存策略設置爲默認的

下面是一個實際的case,建立一個數據保存一年的策略sql

create retention policy "1Y" on test duration 366d replication 1
複製代碼

image

2. 策略查看

上面演示的case中,已經有如何查看一個數據庫的保存策略了數據庫

show retention policies on <database name>
複製代碼

3. 修改保存策略

修改一個已經存在的保存策略,語法以下bash

ALTER RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> SHARD DURATION <duration> DEFAULT
複製代碼

上面的定義和前面建立基本一致,下面給出一個case學習

image

4. 刪除保存策略

DROP RETENTION POLICY <retention_policy_name> ON <database_name>
複製代碼

當以下面的case,刪除了默認的策略以後,會發現竟然沒有了默認的保存策略了,這個時候可能須要注意下,手動指定一個ui

image

II. 進階說明

前面雖然介紹了保存策略的增刪改查,可是這個東西究竟有什麼用,又能夠怎麼用呢?spa

看一下前面查看保存策略的圖日誌

image

從前面的查看,能夠看到保存策略主要有三個關鍵信息,數據保存時間,數據分片時間,副本數

1. 保存時間

duration 這一列,表示的就是這個策略定義的數據保存時間

由於咱們知道每條記錄都有一個time代表這條記錄的時間戳,若是當前時間與這條記錄的time之間差值,大於duration,那麼這條數據就會被刪除掉

注意

默認的保存策略autogen中的duraiton=0,這裏表示這條數據不會被刪除

2. 分片時間

簡單理解爲每一個分片的時間跨度,好比上面的1_d這個策略中,數據保存最近24小時的,每一個小時一個分組

咱們在建立數據策略的時候,大多時候都沒有指定這個值,系統給出的方案以下

Retention Policy’s DURATION Shard Group Duration
< 2 days 1 hour
>= 2 days and <= 6 months 1 day
> 6 months 7 days

3. 副本

副本這個指定了數據有多少個獨立的備份存在

4. 場景說明

瞭解上面的幾個參數以後,能夠預見保存策略有個好的地方在於刪除過時數據,好比使用influx來存日誌,我只但願查看最近一個月的數據,這個時候指定一個duration時間爲30天的保存策略,而後添加數據時,指定這個保存策略,就不須要本身來關心日誌刪除的問題了

II. 其餘

0. 系列博文

參考博文

1. 一灰灰Blogliuyueyi.github.io/hexblog

一灰灰的我的博客,記錄全部學習和工做中的博文,歡迎你們前去逛逛

2. 聲明

盡信書則不如,已上內容,純屬一家之言,因我的能力有限,不免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激

3. 掃描關注

一灰灰blog

image
相關文章
相關標籤/搜索