TDengine 时序数据库实战笔记(20260622)
文章目录1. 为什么需要时序数据库与传统数据库对比2. 典型应用场景3. 为什么选 TDengine4. 核心概念速览5. 逻辑表与物理表MySQL vs TDengine5.1 MySQL逻辑表与物理表5.2 TDengine逻辑表与物理表含时间分区与 vnode 分片6. 核心操作速查6.1 建库分区 保留 冷热分层6.2 建超级表带缺省值、分片6.3 动态写入伪代码6.4 创建预聚合TSMA7. 性能基线时间裁剪示例假设数据库 duration 10d8. 生产部署架构9. 版本与资源1. 为什么需要时序数据库与传统数据库对比对比维度传统关系型数据库 (如 MySQL)时序数据库 (以 TDengine 为例)数据本质离散事务增删改查均衡按时间顺序产生的结构化数据流写多读少时间处理时间只是一个普通字段时间是“第一公民”自动分区、索引、裁剪写入能力单机每秒几千~几万行单机每秒可达数百万行查询模式多表关联、单条查询按时间范围聚合、降采样、趋势分析存储压缩通用压缩效率一般时序专用压缩压缩比可达 10~30 倍数据保留需手动清理历史数据内置自动过期 (KEEP)按分区直接删除文件核心判断标准如果业务是海量设备持续产生带时间戳的数据且主要查询是看趋势或做统计就应该选时序数据库。2. 典型应用场景车联网每辆车每秒上报 GPS、车速、电池状态等。工业物联网 (IIoT)工厂 PLC、传感器高频采集温度、压力、振动。IT 监控服务器 CPU、内存、网络流量等指标。金融科技交易行情、风险指标计算。3. 为什么选 TDengine独特的“一设备一表”模型单设备数据物理连续存储顺序追加无锁查询极快。极简运维内置时间分区、自动分片、冷热分层、预聚合无需手动分库分表。SQL 兼容学习成本低团队上手快。单机高性能合理配置分片4 核服务器也能支撑海量设备。开源版功能完整分片、TSMA 预聚合、冷热分层、MQTT 订阅等全部免费。4. 核心概念速览概念说明超级表 (STable)定义数据列结构、标签TAGS的模板不存实际数据子表 (Subtable)每个设备对应一张物理子表用于存放该设备的所有数据标签 (TAGS)设备静态属性如位置、型号自动建索引用于分组过滤时间分区 (duration)数据库级设置按天/周/月自动切分物理数据文件分片 (vgroups)超级表级设置将子表打散到多个 vnode 并行处理单机建议设为 CPU 核数冷热分层 (tiered_storage)老数据自动从 SSD 迁移到 S3 对象存储预聚合 (TSMA)提前计算每小时/每天的统计值查询聚合结果时毫秒级返回MQTT 订阅TDengine 可作为 MQTT Broker反向推送数据给外部系统5. 逻辑表与物理表MySQL vs TDengine5.1 MySQL逻辑表与物理表MySQL1:1逻辑表sensor_data一张大表包含所有设备物理文件sensor_data.ibd所有设备数据混合存储实际例子-- 创建一张表所有设备共用CREATETABLEsensor_data(idINTAUTO_INCREMENTPRIMARYKEY,device_idVARCHAR(20),tsTIMESTAMP,currentFLOAT);-- 设备A、B、C的数据全部混插在一起INSERTINTOsensor_data(device_id,ts,current)VALUES(A,NOW(),10.5),(B,NOW(),12.1),(A,NOW(),10.7),(C,NOW(),9.8);-- 查设备A的数据必须全表过滤 device_idSELECT*FROMsensor_dataWHEREdevice_idAANDtsNOW()-INTERVAL7DAY;5.2 TDengine逻辑表与物理表含时间分区与 vnode 分片物理层自动管理逻辑层VNode_2VNode_1USING 动态生成USING 动态生成数据按时间落入落入散列到不同 VNode落入超级表 meters模板定义列与标签子表 d_A子表 d_B分区: 6.1-6.10分区: 6.11-6.20分区: 6.1-6.10分区: 6.11-6.20实际例子-- 1. 建库每10天一个分区CREATEDATABASEiot_db duration10d;-- 2. 建超级表分4个vnode单机4核CREATESTABLE meters(tsTIMESTAMP,currentFLOAT)TAGS(locationINT)vgroups4;-- 3. 写入时自动生成子表INSERTINTOd_AUSINGmeters TAGS(1)VALUES(2026-06-01 08:00:00,10.5);-- 落入某vnode的6.1-6.10分区INSERTINTOd_AUSINGmeters TAGS(1)VALUES(2026-06-12 08:00:00,11.2);-- 落入6.11-6.20分区INSERTINTOd_BUSINGmeters TAGS(2)VALUES(2026-06-01 08:00:00,12.1);-- 散列到另一vnode-- 4. 查询设备A最近7天数据只扫描d_A相关分区无关数据自动跳过SELECT*FROMd_AWHEREtsNOW-7d;核心区别MySQL 逻辑与物理 1:1 映射所有设备数据混杂。TDengine 逻辑上一设备一子表物理上数据被时间分区切分文件、vnode 分片并行处理单设备查询无需扫描其他设备数据性能极高。6. 核心操作速查6.1 建库分区 保留 冷热分层-- 定义 S3 磁盘可选CREATEDISKs3_diskTYPES3s3_endpointhttps://s3.example.coms3_bucketmybuckets3_access_keyyour_access_keys3_secret_keyyour_secret_key;-- 建库10天一分区保留365天启用冷热分层CREATEDATABASEiot_db duration10d keep365d tiered_storages3_disk;6.2 建超级表带缺省值、分片CREATESTABLE meters(tsTIMESTAMP,currentFLOAT,voltageFLOATDEFAULT220-- 不上报则自动填220)TAGS(locationINT,device_typeBINARY(32))vgroups4;-- 4核单机设46.3 动态写入伪代码device_idmsg[deviceId]locmsg[locationId]dev_typemsg[deviceType]currentmsg.get(current)voltagemsg.get(voltage)columns[ts]values[now]ifcurrentisnotNone:columns.append(current);values.append(str(current))ifvoltageisnotNone:columns.append(voltage);values.append(str(voltage))sqlfINSERT INTO{device_id}USING meters TAGS ({loc}, {dev_type}) ({, .join(columns)}) VALUES ({, .join(values)})6.4 创建预聚合TSMA-- 每小时自动计算平均电流和最大电流CREATETSMA tsma_hourlyONmeters METRICS(avg(current),max(current))INTERVAL(1h);-- 查询过去7天每小时平均电流自动命中TSMA毫秒级返回SELECT_wstart,avg(current)FROMmetersWHEREtsNOW-7dINTERVAL(1h);7. 性能基线单表容量无硬上限推荐控制在千万行级。过大时配合时间裁剪和预聚合TSMA解决。单行最大长度48KBTDengine 3.x。慢查询优化务必带时间条件WHERE ts ...开启时间裁剪配合 TSMA 避免全表扫描。时间裁剪示例假设数据库duration 10d不裁剪全表扫描-- 无时间条件扫描所有历史分区几亿行数据全过一遍SELECTavg(current)FROMd_A;裁剪只扫描必要分区-- 加上时间条件只扫描最近7天对应的分区如6.11~6.20和6.21~6.30两个分区SELECTavg(current)FROMd_AWHEREtsNOW-7d;效果扫描量从几亿行骤降到几百万行速度提升几十倍。时间裁剪 TSMA 联合优化-- 查询过去30天每小时的均值SELECT_wstart,avg(current)FROMd_AWHEREtsNOW-30dINTERVAL(1h);时间裁剪只扫30天内的3个分区。TSMA 命中直接读取预计算好的每小时汇总表不碰原始数据。结果从几亿行原始数据 → 几千行汇总结果毫秒级返回。8. 生产部署架构设备 → MQTT Broker → Kafka(削峰) → 你的程序 → TDengine(SSD热 S3冷) ↕ (可选) MQTT订阅 → 大屏/告警9. 版本与资源TDengine OSS (开源版)免费功能完整。TDengine Enterprise (企业版)收费含 IDMP 工业平台、资产树、可视化、告警等。官方文档https://docs.taosdata.com/下载地址https://github.com/taosdata/TDengine/releases/latest

相关新闻

超越参数迷思:AI时代的“数字镜像”与人类思想建设

超越参数迷思:AI时代的“数字镜像”与人类思想建设

随着生成式人工智能深度融入大众生活,大模型在交互中展现出的“迎合性”或“偏见”引发了广泛讨论。当前,业界普遍倾向于通过不断调整模型参数、优化对齐算法来试图打造一个绝对中立、完美的AI。然而,从技术本质与社会学的双重维度审视&#…

2026/6/24 15:12:52阅读更多 →
AI 公司巨亏,你却用得越来越便宜

AI 公司巨亏,你却用得越来越便宜

你大概也注意到一个挺拧巴的事。 一边,新闻天天说 AI 公司在疯狂烧钱、巨额亏损——做 ChatGPT 的 OpenAI,据估算一年要亏一百多亿美元;马斯克的 xAI 更夸张,传出来的数字是每赚一块钱、要倒贴大概二十六块。整个行业今年在 AI 基…

2026/6/24 15:12:58阅读更多 →
2025-2026铝合金门窗行业十大品牌盘点

2025-2026铝合金门窗行业十大品牌盘点

随着国内家装行业稳步发展,以及建筑节能相关规范持续落地,铝合金系统门窗凭借良好的密封性能与适配性,逐步成为家装门窗改造、新房装修中的主流选择。门窗作为建筑围护结构的重要组成部分,关乎室内居住环境与日常使用体验&#xf…

2026/6/24 15:13:23阅读更多 →
REL分页实现完全指南:高效处理大数据集查询

REL分页实现完全指南:高效处理大数据集查询

REL分页实现完全指南:高效处理大数据集查询 【免费下载链接】rel :gem: Modern ORM for Golang - Testable, Extendable and Crafted Into a Clean and Elegant API 项目地址: https://gitcode.com/gh_mirrors/re/rel 在现代Web应用中,处理大数据…

2026/6/24 14:15:55阅读更多 →
Serpl项目贡献指南:如何为开源终端搜索替换工具贡献力量

Serpl项目贡献指南:如何为开源终端搜索替换工具贡献力量

Serpl项目贡献指南:如何为开源终端搜索替换工具贡献力量 【免费下载链接】serpl A simple terminal UI for search and replace, ala VS Code. 项目地址: https://gitcode.com/gh_mirrors/se/serpl 想要为Serpl这个强大的终端搜索替换工具贡献力量吗&#xf…

2026/6/24 14:15:55阅读更多 →
Melting Pot在NeurIPS 2023挑战赛中的应用与优秀解决方案分析

Melting Pot在NeurIPS 2023挑战赛中的应用与优秀解决方案分析

Melting Pot在NeurIPS 2023挑战赛中的应用与优秀解决方案分析 【免费下载链接】meltingpot A suite of test scenarios for multi-agent reinforcement learning. 项目地址: https://gitcode.com/gh_mirrors/me/meltingpot Melting Pot是一个多智能体强化学习测试场景套…

2026/6/24 14:15:55阅读更多 →
threads-gnn源码深度解读:PyTorch Geometric图分类最佳实践指南

threads-gnn源码深度解读:PyTorch Geometric图分类最佳实践指南

threads-gnn源码深度解读:PyTorch Geometric图分类最佳实践指南 【免费下载链接】threads-gnn 项目地址: https://ai.gitcode.com/hf_mirrors/pymlex/threads-gnn threads-gnn 是一个基于PyTorch Geometric实现的图神经网络分类项目,专门用于Red…

2026/6/24 14:15:55阅读更多 →
Multiverso核心组件详解:Table接口与通信协议全解析

Multiverso核心组件详解:Table接口与通信协议全解析

Multiverso核心组件详解:Table接口与通信协议全解析 【免费下载链接】Multiverso Parameter server framework for distributed machine learning 项目地址: https://gitcode.com/gh_mirrors/mu/Multiverso Multiverso是一个专为分布式机器学习设计的参数服务…

2026/6/24 14:15:55阅读更多 →
OpenInference性能优化:如何降低监控开销提升AI应用效率

OpenInference性能优化:如何降低监控开销提升AI应用效率

OpenInference性能优化:如何降低监控开销提升AI应用效率 【免费下载链接】openinference OpenTelemetry Instrumentation for AI Observability 项目地址: https://gitcode.com/gh_mirrors/op/openinference OpenInference作为AI可观测性的关键工具&#xff…

2026/6/24 14:10:55阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/24 7:33:03阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/24 2:12:09阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/24 7:37:00阅读更多 →
TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理 【免费下载链接】TaskJuggler TaskJuggler - Project Management beyond Gantt chart drawing 项目地址: https://gitcode.com/gh_mirrors/ta/TaskJuggler TaskJuggler是一款强大的开源项目管理工具&#…

2026/6/24 0:02:41阅读更多 →
终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果 【免费下载链接】angular-mobile-nav An angular navigation service for mobile applications 项目地址: https://gitcode.com/gh_mirrors/an/angular-mobile-nav angular-mobile-nav是一款专为…

2026/6/24 0:02:41阅读更多 →
Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作 【免费下载链接】Wan2.1-Fun-V1.1-1.3B-InP 项目地址: https://ai.gitcode.com/hf_mirrors/PAI/Wan2.1-Fun-V1.1-1.3B-InP Wan2.1-Fun-V1.1-1.3B-InP是一款强大的AI视频创作工具,…

2026/6/24 0:02:41阅读更多 →