1. 时序数据库与TDengine概述
时序数据库(Time Series Database)是专门为处理时间序列数据优化的数据库系统。这类数据通常由设备、传感器或应用程序按时间顺序生成,具有写入密集、极少更新、按时间范围查询等特点。TDengine作为一款开源的时序数据库,凭借其独特的存储引擎和SQL兼容性,在物联网、工业互联网、金融监控等领域广泛应用。
我在实际项目中多次使用TDengine处理设备监控数据,其核心优势在于:
- 针对时序数据优化的存储结构,压缩比可达5:1甚至更高
- 内置流式计算引擎,支持实时聚合分析
- 完全兼容标准SQL语法,学习成本低
- 单机版性能卓越,社区版即可支持每秒百万级数据写入
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据库创建与核心参数解析
2.1 数据库创建基础语法
sql复制CREATE DATABASE mydb
PRECISION 'ms'
KEEP 3650
DURATION 10
BUFFER 96;
这个语句创建了一个名为mydb的数据库,包含四个关键参数:
2.1.1 PRECISION参数详解
PRECISION定义了时间戳的存储精度:
'ms':毫秒级(默认值)'us':微秒级'ns':纳秒级(企业版支持)
实际经验:在工业传感器场景中,毫秒精度完全足够。只有在高频交易(如股票tick数据)才需要考虑微秒级精度。一旦设置就无法修改,建议根据业务峰值需求确定。
2.1.2 KEEP与DURATION的协同机制
这两个参数共同控制数据生命周期:
KEEP 3650:数据保留10年DURATION 10:每10天一个存储文件
存储原理:
- 系统会创建多个
.data文件,每个文件存储10天的数据 - 当文件数量超过365个(3650天/10天)时,最旧的文件会被自动删除
- 这种设计使得冷数据可以整文件删除,效率极高
配置建议:
- 监控类数据:
KEEP 180 DURATION 7(保留半年,每周一个文件) - 关键设备数据:
KEEP 3650 DURATION 30(保留10年,每月一个文件)
2.2 高级参数调优
2.2.1 BUFFER参数优化
BUFFER 96定义了每个Vnode的内存缓冲区大小(MB)。在写入突发量大的场景,需要特别注意:
sql复制-- 高吞吐量场景配置
ALTER DATABASE mydb BUFFER 256;
调优经验:
- 每个Vnode默认消耗指定大小的内存
- 计算公式:总内存 ≈ BUFFER × Vnode数量
- 对于1000个设备的场景,建议BUFFER设为64-128MB
- 可通过
SHOW DNODES查看当前Vnode分布
2.2.2 其他重要参数
sql复制CREATE DATABASE mydb
WAL_LEVEL 1 -- WAL日志级别
COMP 2 -- 压缩等级
REPLICA 1 -- 副本数
QUORUM 1; -- 写入确认数
注意:社区版仅支持单副本,企业版可配置多
