小 T 导读:目前,北明天时已经在热网监控和能耗分析系统上应用了 TDengine,相比于 MySQL,当前在存储和查询上都获得了显著提升。在其他项目中,他们也正在加速 TDengine 对其他数据库产品的替代。本文中北明天时分享了关于 TDengine 的应用实践,以供参考。

企业简介

北明天时能源科技(北京)有限公司(简称北明天时)成立于 2000 年,在 2015 年发展成为常山北明(股票代码:000158)的全资子公司。其以智慧能源服务为核心,聚焦政府能源监管系统、公共能源服务行业管控系统、园区和企业综合能源管控系统的建设和服务,致力于将云计算、大数据、物联网和人工智能等先进信息技术与业务应用深度融合,为企业和政府提供 “智慧、节能、低碳” 的全集成解决方案和一体化服务。

项目介绍

我们的智慧供热项目最初是使用 MySQL 来存储历史数据,但随着数据量的上升,查询性能越发难以满足业务需求。为了缓解现状,我们开始研究 TDengine Database,在深入了解后发现它真的是一款适合物联网的时序数据库,甚至可以直接使用 SQL 语句。于是在经过一段时间的测试后,我们果断选择将 TDengine 接入项目。

目前,我们已经在热网监控和能耗分析系统上应用了 TDengine Database,具体的应用场景如下图标红处所示。

  • 热网监控系统

热网监控系统目前包括热源监测和热力站监控,用于实时远程监控热源、热力站等的运行状态,将供热数据进行可视化展示,便于运行管理人员掌握整个供热系统的运行状况。

  • 能耗分析系统

用于实时统计、计算和监测系统能耗,建立分级能耗评价体系,通过数据的同比、环比和指标完成度评价,实现对系统能耗情况的全面分析。同时通过能耗排名找出能源浪费的关键点,有针对性地进行改善与优化控制,从而减少能源浪费,实现真正意义上的节能。

在分析之后可以发现,这两个系统都有一个相同的特点,即对数据的实时查询展示有很高的需求,比如实时管理供热系统、能耗趋势实时呈现等。

对于这种由设备产生的高频时序数据的处理,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 这款优秀的开源时序数据库(Time-Series Database),而 TDengine 也确实没让我们失望。今后,北明天时将和 TDengine 一起,为推动城市能源高效利用、清洁能源替代、创建低碳智慧城市持续做贡献。

作者 | 贾苗苗,北明天时能源科技(北京)有限公司研发工程师


想了解更多TDengine的具体细节,欢迎大家在GitHub上查看相关源代码。

MySQL 无法满足查询性能?北明天时选择 TDengine 实现热网监控和能源分析相关推荐

  1. 高性能MySQL学习——提高查询性能

    高性能MySQL学习--提高查询性能 提高查询性能 MySQL 查询优化器 MySQL 执行计划分析"三步曲" MySQL 执行计划查询分析 如何优化 SQL MySQL 自身优化 ...

  2. 读薄《高性能MySql》(四)查询性能优化

    读薄<高性能MySql>(一)MySql基本知识 读薄<高性能MySql>(二)Scheme与数据优化 读薄<高性能MySql>(三)索引优化 读薄<高性能M ...

  3. mysql笔记03 查询性能优化

    查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...

  4. mysql分页 disti_MySql查询性能优化

    慢查询判定 1.开启慢查询日志记录执行时间超过long_query_time 秒的sql语句 2.通过show processlist命令查看线程执行状态 3.通过explain解析sql了解执行状态 ...

  5. mysql 主键查询性能_MySQL查询性能优化(精)

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

  6. MySQL系列-- 4. 查询性能优化

    4. 查询性能优化 4.1 为什么查询速度会变慢 快速查询取决于响应时间 如果把查询看成是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消 ...

  7. 【MVC+MySQL+EntityFramework】查询性能优化笔记

    通过在DbContext中定了表之间的关系,查询后在View中通过item.ProjectOverHour来显示关联表数据. modelBuilder.Entity<ProjectOverHou ...

  8. mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论_MySQL...

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

  9. mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

最新文章

  1. python课程将主要介绍哪些内容-Python课程详细介绍
  2. GEO数据下载及处理详细过程
  3. CSS3属性之——filter
  4. 实现一个正则表达式引擎in Python(一)
  5. Python 生成账号密码算法
  6. bzoj20892090: [Poi2010]Monotonicity
  7. php限制上传类型,php 上传类型限制的简单示例
  8. 一卡通管理系统服务器,一卡通管理系统
  9. 微信授权就是这个原理,Spring Cloud OAuth2 授权码模式
  10. VBA字符处理 特殊符号
  11. Angular启动项目时报错
  12. ABAP 通过LDB_PROCESS函数使用逻辑数据库
  13. 网络监控cacti1.2.12邮件报警(三)
  14. 建议收藏:GitHub 上值得收藏的100个精选前端项目!
  15. Java P1460 健康的荷斯坦奶牛 Healthy Holsteins
  16. java微信二维码第三方后台登陆实现 ( 一 )
  17. Echarts饼图,环形图,鼠标触碰后取消默认放大效果
  18. GD32 SPI0 REMAP设置
  19. 华硕天选3和神舟战神Z8那个好?
  20. 人工智能(二)——决策树算法

热门文章

  1. MurmurHash3_最详细的介绍
  2. CE Loss与BCE Loss的区别
  3. java控制台输出表格数据格式整齐
  4. King is back,English study in the morning
  5. 安全浏览器主页被恶意篡改,我们要如何恢复
  6. 入手评测 OPPO Find X3 Pro火星探索版怎么样
  7. Python中的换行知识
  8. 【快速检测GPU性能】
  9. Android Tencent X5 WebView 集成详解
  10. Unity 立体3D VR的实现