中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用ClickHouse存儲時序數據

發布時間:2021-12-04 11:41:35 來源:億速云 閱讀:1035 作者:iii 欄目:云計算

本篇內容主要講解“如何用ClickHouse存儲時序數據”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何用ClickHouse存儲時序數據”吧!

簡介

我們需要存儲結構化時序數據,時間間隔為5分鐘或1分鐘,計算95峰值995峰值最值等指標,并且在網頁中展示。

MySQL

項目開發初期,為了快速開發原型,驗證產品,我們使用MySQL作為整個項目的存儲。帶來的問題是時序數據庫范圍分析查詢耗時很長,計算30天的數據需要30s+,到了無法容忍的地步,即便是創建索引、使用BitInt存儲時間戳,幾乎沒有性能提升。

后來我們組其他同事說換ClickHouse來存儲時序數據,于是我們就開始了替換之旅。 

ClickHouse

ClickHouse是面向OLAP(在線分析處理)、兼容SQL標準的列式數據庫,主要的不足是不支持事務。因此我們目前沒有把整個存儲都遷移到ClickHouse上,而是只把時序數據存過來。

本以為替換過程會很麻煩,可能修改大量的代碼和邏輯,實際上很快,因為之前接口的邏輯設計很合理,所以只替換了數據庫ORM庫,從gorm換成了sqlx,花了1天時間(前期重構邏輯花了1個星期我會亂說)。

更重要的是,ClickHouse提供了很多聚合函數,之前計算95值需要2次查詢,而現在只需要一次查詢就夠了,對應的SQL如下:

select d.en_name, max(d.in_value) as peak_in,
    max(d.out_value) as peak_out, max(d.max_value) as peak_max,
    quantileExact(0.95)(d.out_value) as peak_95,
    quantileExact(0.995)(d.out_value) as peak_995,
    quantileExact(0.999)(d.out_value) as peak_999
from table_value d where d.record_time >= '2020-01-01 00:00:00' and d.record_time <= '2020-01-31 23:59:59'
group by d.en_name
 

經驗證,ClickHouse是真的牛逼,30天內的查詢耗時從30s降到2s內,提升了15倍!!!

下圖是ClickHouse的測試結果,x軸表示查詢的時間范圍,最大12個月,最小1個月,共測試12次。可以看到大部分耗時在3s內

如何用ClickHouse存儲時序數據

下圖是MySQL存儲中的測試結果(忽略標題),分別計算1、2、3個月范圍的數據,共查詢1次,耗時都在100s以上。

如何用ClickHouse存儲時序數據

到此,相信大家對“如何用ClickHouse存儲時序數據”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

道真| 孝义市| 绥棱县| 天峻县| 铅山县| 安岳县| 新野县| 宁波市| 舞钢市| 合江县| 宁强县| 四平市| 彭水| 新巴尔虎左旗| 阿拉善左旗| 柳州市| 且末县| 水城县| 南城县| 博乐市| 彭阳县| 桦南县| 剑河县| 措美县| 浙江省| 新蔡县| 建瓯市| 武乡县| 疏附县| 通州市| 奇台县| 建瓯市| 南川市| 太和县| 绥德县| 敦煌市| 旺苍县| 盈江县| 水城县| 大厂| 新余市|