TDengine学习

主键
  • 主键=时间戳 (ts) + 标签 (TAG) 组合
  • 同一个子表 + 同一个时间戳,只能有一条数据
  • 重复插入会覆盖,不会报错。

超级表和子表

  • 超级表必须手动建一次,子表不需要手动建,插入数据时自动创建
  • 超级表是模板,子表是实例
  • 超级表不存数据,子表才存数据
  • 插入自动建子表,查询超级表查全部

表设计原则

  • 一类数据一张超级表
  • 一个设备一张子表
  • 不变的属性放 TAG
  • 变化的数据放普通字段
  • 必须有 ts 时间戳
sql 复制代码
CREATE DATABASE IF NOT EXISTS iot_db KEEP 30d DURATION 1d;

USE iot_db;

CREATE STABLE device_temperature (
    ts TIMESTAMP,        -- 时间戳(必须第一个字段)
    temperature FLOAT    -- 温度(实时变化)
)
TAGS (
    device_id NCHAR(32), -- 设备编号(TAG)
    workshop NCHAR(32), -- 车间(TAG)
    line NCHAR(16),     -- 产线(TAG)
    area NCHAR(16)      -- 区域(TAG)
);
sql 复制代码
INSERT INTO temp_sensor_001 
USING device_temperature 
TAGS('sensor_001','workshop_A','line_1','area_2')
VALUES(NOW(), 28.5);

为什么 TDengine 这么快?

  1. 按时间分片存储(列式存储)
  • 数据按时间块(duration)存储
  • 同一列数据存在一起,压缩率极高
  • 查询只读需要的列,不读整行,IO 大幅减少
  1. 超级表 + 子表模型(最关键)
  • 一个设备一张子表
  • 数据天然按设备隔离
  • 查询时只扫描对应子表,不扫全表,查询速度提升百倍
  1. 写入是顺序写磁盘
  • 时序数据永远是最新时间戳
  • 磁盘顺序写比随机写快100 倍以上
    TDengine 完全利用这一点
  1. 内置聚合、降采样、窗口函数
  • AVG、MAX、MIN、COUNT、FIRST、LAST
  • 全部在数据库内核完成
  • 不需要应用层计算
  1. 无事务、无锁、无主键约束
  • 去掉关系型数据库沉重负担
  • 高并发写入无锁竞争

子表说明

  1. TAG 插入一次,永久不变
  2. 子表和 TAG 强绑定
  3. 不能 UPDATE TAG
  4. 后面插入只需要 INSERT INTO 子表 VALUES (...)
  5. 想改 TAG 必须新建子表,也可以删除子表再新建子表

delete和update

  • 可以delete超级表和子表
  • 可以delete,但只能按照时刻或时间范围删除
  • 不可以update,使用delete和insert模拟
  • 数据是 append 模式:只写、只删、不改

常用命令

sql 复制代码
SHOW STABLES # 看所有超级表
SHOW TABLES # 看所有子表
SHOW TABLES LIKE "超级表名.%" # 看这个超级表下的子表
相关推荐
天行健,君子而铎2 分钟前
2026年中国API安全产品综合排名:选型指南与市场趋势解析
大数据·数据库·安全
瀚高PG实验室6 分钟前
PostgreSQL 服务器因整数回绕导致分配空间过小HGVE-2026-E008
运维·服务器·数据库·瀚高数据库
todoitbo7 分钟前
向量数据库不该成为新孤岛:KingbaseES 多模融合架构如何减少数据搬运
数据库·架构·国产数据库·kes
狂云歌10 分钟前
AI时代,学什么,怎么学
人工智能·学习
lingguangbuzhi15 分钟前
【JAVA教程】java课程java学习编程
java·学习·教程
YM52e21 分钟前
鸿蒙 ArkTS 实战|防渣万能执行方案:五阶段防御体系 + 红线清单的代码实现
学习·华为·harmonyos
mwmbfh24 分钟前
【CentOS7环境下Redis 6.2.14 源码编译部署说明】
linux·运维·数据库·redis
1750633194524 分钟前
Ubuntu24 DNS 问题
网络·数据库
2601_9609067230 分钟前
Anthropic把Claude Code 2.1.236及以上版本的Fable 5会话
人工智能·kafka·时序数据库·etcd·tdengine
风123456789~37 分钟前
【Oracle专栏】跨服务器调用ORA-02064: 不支持分布式操作
数据库·oracle