1. 程式人生 > 其它 >MySQL 無法滿足查詢效能?北明天時選擇 TDengine 實現熱網監控和能源分析

MySQL 無法滿足查詢效能?北明天時選擇 TDengine 實現熱網監控和能源分析

小 T 導讀:目前,北明天時已經在熱網監控和能耗分析系統上應用了 TDengine,相比於 MySQL,當前在儲存和查詢上都獲得了顯著提升。在其他專案中,他們也正在加速 TDengine 對其他資料庫產品的替代。本文中北明天時分享了關於 TDengine 的應用實踐,以供參考。

 

企業簡介

北明天時能源科技(北京)有限公司(簡稱北明天時)成立於 2000 年,在 2015 年發展成為常山北明(股票程式碼:000158)的全資子公司。其以智慧能源服務為核心,聚焦政府能源監管系統、公共能源服務行業管控系統、園區和企業綜合能源管控系統的建設和服務,致力於將雲端計算、大資料、物聯網和人工智慧等先進資訊科技與業務應用深度融合,為企業和政府提供 “智慧、節能、低碳” 的全整合解決方案和一體化服務。

 

專案介紹

我們的智慧供熱專案最初是使用 MySQL 來儲存歷史資料,但隨著資料量的上升,查詢效能越發難以滿足業務需求。為了緩解現狀,我們開始研究 TDengine,在深入瞭解後發現它真的是一款適合物聯網的時序資料庫,甚至可以直接使用 SQL 語句。於是在經過一段時間的測試後,我們果斷選擇將 TDengine 接入專案。

目前,我們已經在熱網監控和能耗分析系統上應用了 TDengine,具體的應用場景如下圖示紅處所示。

  • 熱網監控系統

熱網監控系統目前包括熱源監測和熱力站監控,用於實時遠端監控熱源、熱力站等的執行狀態,將供熱資料進行視覺化展示,便於執行管理人員掌握整個供熱系統的執行狀況。

  • 能耗分析系統

用於實時統計、計算和監測系統能耗,建立分級能耗評價體系,通過資料的同比、環比和指標完成度評價,實現對系統能耗情況的全面分析。同時通過能耗排名找出能源浪費的關鍵點,有針對性地進行改善與優化控制,從而減少能源浪費,實現真正意義上的節能。

在分析之後可以發現,這兩個系統都有一個相同的特點,即對資料的實時查詢展示有很高的需求,比如實時管理供熱系統、能耗趨勢實時呈現等。

對於這種由裝置產生的高頻時序資料的處理,TDengine 無疑是很合適的選擇。鑑於其顯著的改善效果,在其他專案中我們也正在加速 TDengine 對其他資料庫產品的替代。

當然在落地的過程中我們也遇到過一些小問題:比如,舊版本 TDengine 不支援對時間戳的 group by,經過升級後解決。再比如查詢時不同客戶端得到的表結構並不一樣,這是因為客戶端的各自快取的元資料不一致,通過 reset query cache 命令得到了解決。還有一些日常的小問題,我們都在 TDengine 的技術交流群中得到了官方或社群網友的及時反饋和幫助。

 

一、效果分析

 

我們以 TDengine 2.2.2.0 版本落地了一個三節點三副本的叢集,機器配置為 16C + 32G + 1T 的機械硬碟。具體到實際路徑上,我們的裝置資料是先經過實時採集寫入 Kafka 後,再通過 Python 聯結器消費入庫的。

在當前環境下,我們共建立了 5,500 多張子表,儲存了大概九千萬行左右的資料,最大一張超級表的資料接近 7,300 萬行,單行大概 180 位元組。即便是在三個副本的情況下,當前磁碟空間總共也只佔用了 10.2G,再加上資料過期刪除的機制,我們基本不用再需要擔心磁碟儲存的成本問題了。

而記憶體和 CPU 的使用率,日常也都是分別維持在 1.9% 和 0.3% 左右,可以說是毫無壓力。

 

下圖是我們的熱網監控平臺查詢業務對應的 SQL,常用查詢基本都是毫秒級返回資料:

select sum(Ep) as Ep,sum(HM_HT) as HM_HT .............. interval(1d);

 

SELECT AVG(heatsourcepg) AS heatsourcepg,AVG(heatsourcetg) AS heatsourcetg,AVG(heatsourcef_mtrg) AS heatsourcef_mtrg .............. FROM iot_device.source_minute WHERE ts >="2022-04-06 12:00:00" AND ts <"2022-04-06 13:00:00.000" GROUP BY groupid,level

 

寫在最後

2019 年北明天時開始積極開拓智慧能源服務新市場,開發包含供熱、供冷、供電、供氣等能源綜合管控系統和智慧水務監管平臺。一年之後我們便正式引入了 TDengine 這款優秀的開源時序資料庫,而 TDengine 也確實沒讓我們失望。今後,北明天時將和 TDengine 一起,為推動城市能源高效利用、清潔能源替代、建立低碳智慧城市持續做貢獻。

作者 | 賈苗苗,北明天時能源科技(北京)有限公司研發工程師


想了解更多 TDengine 的具體細節,歡迎大家在GitHub上檢視相關原始碼。