
80块智能电表、每分钟上报一次、日均11.5万条时序数据——MySQL扛不住的时候,CTSDB怎么接盘?
合众致达在部署某深圳制造企业的工厂用电监测系统时,遇到了一个很典型的问题:3个车间、12条产线,配电柜安装了Cat.1电表和导轨式电能表共计80余块,采集间隔1分钟。日增数据量11.5万条,MySQL单表在突破千万行后,查询性能急剧下降。
"某产线上周峰段用电趋势"这类查询,在MySQL里跑30秒以上才能出结果。恶性负载检测完全依赖人工巡检,车间私接电焊机、加热器等大功率电器违规用电事件多次引发跳闸停产。
这不是个案。合众致达在全国多个工厂车间用电监测项目中反复遇到同样的矛盾:智能水电表已经能每分钟上报数据了,但存储层跟不上采集层的节奏。传统关系型数据库天然不适合高频时序写入——这是选型层面的问题,不是优化能解决的。
在合众致达的智慧能源管理平台架构中,时序数据库选型经历过三轮迭代。从MySQL到InfluxDB自建,再到腾讯云CTSDB,核心考量维度如下:
维度 | MySQL/CDB | InfluxDB自建 | 腾讯云CTSDB |
|---|---|---|---|
时序写入性能 | 万级/秒 | 十万级/秒 | 十万级/秒 |
时序聚合查询 | 慢(全表扫描) | 快 | 快(内置降采样) |
运维成本 | 自管+DBA | 自管+运维工程师 | 全托管Serverless |
与IoT Hub集成 | 需自建管道 | 需自建管道 | 原生对接规则引擎 |
冷热数据分层 | 需手动归档脚本 | 需配置retention policy | 自动降采样归档 |
高可用 | 主从复制 | 需自建集群 | 内置多副本 |
CTSDB胜出的关键因素有两个:
复制[Cat.1电表 / 导轨式电能表 / 预付费电表 / NB-IoT智能水表]
↓ MQTT物联网协议
[腾讯云IoT Hub] ——规则引擎——→ [消息队列CMQ](告警通道)
↓ ↓
[时序数据库CTSDB] [云函数SCF](恶性负载检测+告警推送)
↓
[易收租公寓管理平台 / 远程预付费系统 / 智慧能源管理平台]
→ 能耗看板 / 用电报表 / 峰谷分析 / 结算账单合众致达设备侧的边端协同计算是关键设计:Cat.1电表固件内置功率突变检测逻辑,瞬时功率超阈值时主动上报告警事件(event类型payload),而非等云端轮询发现。从违规用电发生到告警通知,端到端延迟控制在5秒以内。
这个设计思路来自合众致达在公寓预付费水电方案中的实战经验——恶性负载检测不能只靠云端规则,设备侧必须具备主动上报能力。在宿舍智能水电管控和长租公寓智能水电场景中,同样的端云协同逻辑已经验证了稳定性。
在CTSDB中创建metric factory_meter_data:
字段 | 类型 | 说明 |
|---|---|---|
timestamp | timestamp | 采集时间(Unix ms) |
meter_id | tag | 表计编号(过滤维度) |
workshop | tag | 车间名称(过滤维度) |
line_no | tag | 产线编号(过滤维度) |
voltage | metric | 电压(V) |
current | metric | 电流(A) |
power | metric | 有功功率(W) |
energy | metric | 累计电量(kWh) |
flag_overload | metric | 过载标记(0/1) |
tag/metric分离的设计原则:tag字段用于过滤和分组查询,metric字段用于聚合计算。这在智慧能源管理平台中是标配——无论是工厂车间用电监测还是商业综合体能耗管理,查询模式都是"按空间维度过滤+按时间维度聚合"。
场景复用时,只需要更换tag维度:
查询1:1车间近7天每小时用电量
json复制{
"query": {
"metric_name": "factory_meter_data",
"tags": {"workshop": "workshop_1"},
"fields": ["energy"],
"aggregation": {"function": "diff", "interval": "1h"},
"start": "now-7d",
"end": "now"
}
}CTSDB返回结果通常在200ms以内,相比MySQL的30秒以上,提升超过100倍。
查询2:全厂近24小时各车间功率峰值排序
json复制{
"query": {
"metric_name": "factory_meter_data",
"fields": ["power"],
"aggregation": {"function": "max", "interval": "1h"},
"group_by": ["workshop"],
"start": "now-24h",
"end": "now"
}
}这种毫秒级聚合查询能力,对多租户水电独立结算场景同样关键——"电费纠纷难追溯"和"公区分摊电费不透明"的痛点,过去需要导出Excel手算的分摊报表,现在一条DSL就能出结果。
数据时效 | 保留粒度 | 用途 |
|---|---|---|
0-7天 | 1分钟原始 | 异常回溯、恶性负载事件还原 |
7-30天 | 5分钟聚合 | 周/月报表生成 |
30天以上 | 1小时聚合 | 年度趋势分析 |
80块表1分钟采集间隔下,月度数据量从原始345万条降至降采样后约12万条,存储压缩率超过96%。
Cat.1电表上报的MQTT payload包含两种类型:
IoT Hub规则引擎配置两条路由:
复制路由1:property类型 → 投递CTSDB(时序存储)
路由2:event类型 → 投递CMQ主题 → 触发SCF云函数(恶性负载告警+企业微信推送)SCF云函数的告警逻辑:解析event payload中的meter_id、power_value、threshold,构建告警消息体,调用企业微信API推送给车间主任。从违规用电发生到告警通知到达,端到端延迟控制在5秒以内。
该工厂部署3个月后的关键指标:
指标 | 改造前(MySQL+人工巡检) | 改造后(CTSDB+IoT Hub+SCF) |
|---|---|---|
数据采集延迟 | 1-3天 | 10秒以内 |
历史趋势查询 | 30秒以上 | 200ms以内 |
违规用电发现 | 人工巡检 | 5秒自动告警 |
月度数据存储 | MySQL 4.2GB | CTSDB 0.8GB(降采样后) |
恶性负载识别 | 0起/月 | 23起/月(首月数据) |
上线首月即识别大功率电器违规用电事件23起,因违规用电导致的跳闸停产事件降为零。
跨场景复用验证:同一套CTSDB+IoT Hub架构,在保障房智能抄表、长租公寓智能水电和宿舍智能水电管控场景中同样已落地——区别仅在metric的tag维度从"车间/产线"换成"楼栋/房间",数据建模逻辑完全复用,开发周期缩短60%以上。
CTSDB时序数据库配合腾讯云IoT Hub和云函数SCF,为工厂车间用电监测提供了"采集-存储-分析-告警"的一体化方案。核心优势:
合众致达智能水电表(Cat.1电表、导轨式电能表、NB-IoT智能水表、4G无线远传水表)和智能集中器已完成与腾讯云IoT Hub的物模型对接,设备出厂即可直连上云。易收租公寓管理平台同步支持CTSDB数据源接入,为工厂、公寓、园区等多元场景提供统一能耗管理能力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。