相關文章:
時序數據庫 InfluxDB(一)
時序數據庫 InfluxDB(二)
時序數據庫 InfluxDB(三)
時序數據庫 InfluxDB(四)
時序數據庫 InfluxDB(五)數據庫
InfluxDB 是一個無結構模式,這也就是說你無需事先定義好表以及表的數據結構。segmentfault
InfluxDB 支持的數據類型很是簡單:緩存
你能夠看到除了 field value 支持的數據類型多一點以外,其他全是字符串類型。數據結構
固然還有最重要的 timestamp ,InfluxDB 中的時間都是 UTC 時間,並且時間精度很是高,默認爲納秒。性能
在實際使用中,數據都是存儲在 tag 或者 field 中,這二者最重要的區別就是,tag 會構建索引(也就是說查詢時,where 條件裏的是 tag ,則查詢性能更高),field 則不會被索引。spa
存儲數據究竟是使用 tag 仍是 field ,參考如下原則:設計
對於標識性的名稱,如 database、RP、user、measurement、tag key、field key 這些應該避免使用 InfluxQL 中的關鍵字。日誌
其它須要注意的原則:code
InfluxDB 經過構建索引能夠提升查詢性能。InfluxDB 中的索引有兩種:In-memory 和 TSI 。這兩種索引只能選擇一種,且沒法動態更改,一旦更改必須重啓 InfluxDB 。索引
In-memory :索引被存儲在內存中,這也是默認使用的方式,性能更高。
TSI( Time Series Index ):In-memory 索引能夠支持千萬級別的 series ,然而內存資源終歸是有限的,爲了支持億級和十億級別的 series 數據,TSI 應運而生,其會將索引映射到磁盤文件上。
索引相關配置項(默認的配置文件爲 influxdb.conf ):
index-version = "inmem"
max-series-per-database = 1000000 max-values-per-tag = 100000
max-series-per-database :每一個數據庫容許的最大 series 數量,默認一百萬,一旦達到上限,再寫入新的 series 則會獲得一個 500 錯誤,向已經存在的 series 寫入數據不受影響。設置爲 0 則意味着沒有限制。
max-values-per-tag :每一個 tag key 容許的最大 tag values 數量,默認十萬,相似的,一旦達到上限,沒法寫入新的 tag value ,而向已經存在的 tag value 寫入數據不受影響。設置爲 0 則意味着沒有限制。
max-index-log-file-size = "1m" series-id-set-cache-size = 100
max-index-log-file-size :預寫日誌的文件大小達到多大的閾值以後,將其壓縮爲索引文件,閾值越低,壓縮越快,堆內存使用率越低,但會下降寫入的吞吐量。
series-id-set-cache-size :使用內存緩存的 series 集的大小,因爲 TSI 索引存儲在了磁盤文件中,所以使用時須要額外的計算工做,但若是將索引結果緩存起來的話就能夠避免重複的計算,提升查詢性能。默認緩存 100 個 series ,這個值越大則使用的堆內存越大,設置爲 0 則不緩存。
我的公衆號持續輸出原創文章,有興趣的能夠關注下。