TDengine 3.4.0.0 版本发布说明:功能特性、性能增强与关键修复全解析
【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址: https://gitcode.com/taosdata/tdengine
TDengine 3.4.0.0 于 2026-01-03 正式发布,这是 TDengine 3.x 系列的一个里程碑式版本。本篇文章基于官方 3.4.0.0 Release Notes 展开,系统梳理本版本的 17 项新功能、30 项增强与 49 项修复,并结合仓库源码与测试用例深入解析关键技术点,帮助你快速评估升级价值、掌握新特性的正确用法。
阅读本文你将掌握:
- 3.4.0.0 的核心新特性全景(连接器、数据接入、流式计算、安全、函数等)
- 虚拟表、流计算、订阅、taosAdapter 等模块的增强细节与正确使用姿势
- 关键修复项背后的原理与升级注意事项
- 每个特性对应的源码位置,便于深入验证
一、版本概览
发布信息
| 项目 | 内容 |
|---|---|
| 版本号 | 3.4.0.0 |
| 发布日期 | 2026-01-03 |
| 版本类型 | 3.x 系列功能版本 |
| 核心主题 | 连接器增强、安全能力升级、流式计算增强、虚拟表与查询性能优化 |
本版本横跨客户端、服务端、工具链、流式计算、安全与企业版多个层面。社区版聚焦于连接器(C WebSocket、Rust、adapter)、流计算增强与查询性能;企业版则引入了数据全透明加密、SASL 机制、多因素认证(MFA)、RBAC 权限架构、分级审计等安全能力。
二、新特性(Features)详解
2.1 连接器与数据接入增强
1. taosAdapter 连接信息透传(ws connection)
taosAdapter 在 WebSocket 连接中新增了 connector info 属性,客户端可通过该属性感知当前连接的适配器信息,便于多实例场景下的连接识别与问题定位。
2. C WebSocket 支持 SSL/TLS
C 语言的 WebSocket 连接现在支持 SSL/TLS 传输加密参数。对安全性要求高的场景,可通过该特性为 C 客户端启用加密通道。
3. taosAdapter 实例注册与查询
新增 taosAdapter 实例的注册与查询能力,配合第 1 项特性,可实现多 adapter 实例的统一管理与感知。
4. 任意 JSON 数据解析写入
新增将任意 JSON 数据解析并写入数据库的能力,大幅简化了 JSON 数据源的接入流程——无需预先建模,即可将 JSON 中的字段映射入库。
5. Rust 连接器基准测试工具
仓库中新增了 Rust connector benchmark tool,用于对 Rust 连接器的读写性能进行基准测试。
6. taosX 高可用与 Kafka 任务负载均衡
taosX 数据同步组件支持高可用部署,并对 Kafka 任务实现负载均衡,提升大规模同步场景的稳定性与吞吐。
7. TDgpt 行相关性分析函数
TDgpt(时序分析扩展,位于 tools/tdgpt)新增dtw、dtw_path、tlcc三个行相关性分析函数。从 builtins.c 的函数注册表可以看到:
dtw:动态时间规整(Dynamic Time Warping)距离dtw_path:DTW 最优路径tlcc:时间滞后互相关(Time-Lagged Cross-Correlation)
三者均注册为FUNC_MGT_TIMELINE_FUNC(时间线函数),禁止在超级表上直接使用,且要求保持数据顺序。tlcc与dtw_path共享translateDtwPathPseudoColumn翻译函数,说明它们采用相同的伪列翻译机制。
8. 数据同步支持 SASL 机制与资源控制【企业版】
企业版数据同步链路支持 SASL 认证机制与资源控制,满足金融、运营商等对数据通道安全与配额管控的要求。
9. 数据存储全透明加密【企业版】
企业版支持存储层全透明加密,落盘数据自动加密,对上层应用完全透明。
10. 多因素认证(MFA)与多种登录安全策略【企业版】
企业版新增 MFA 认证支持,并引入多种登录安全策略(见增强第 22 项“用户登录失败策略”)。
11. RBAC 权限架构【企业版】
企业版采用基于角色的访问控制(RBAC)架构,实现细粒度的权限管理。
12. 分级审计与权限控制【企业版】
配合 RBAC,企业版支持分级审计,审计日志可覆盖查询、删除等操作(见增强第 13 项)。
13. 新增 13 个加密与脱敏函数
本版本一次性新增了 13 个函数:SM4_ENCRYPT、SM4_DECRYPT、AES_ENCRYPT、AES_DECRYPT、MD5、SHA、SHA1、SHA2、MASK_FULL、MASK_PARTIAL、MASK_NONE、FROM_BASE64、TO_BASE64。
以源码实现为例(builtins.c):
from_base64:FUNCTION_TYPE_FROM_BASE64,单参数,支持 VARCHAR/NCHAR/NULL,输出 VARCHAR;sha/sha1:单参数,内部均由shaFunction实现;sha2:两个参数(数据 + 位长),由sha2Function实现;mask_full:两个参数(原文 + 掩码字符),输出与输入同类型,由maskFullFunction实现;mask_partial:四个参数(原文 + 起始位置 + 长度 + 掩码字符),由maskPartialFunction实现,适合手机号、身份证等部分脱敏场景;mask_none:单参数,返回原值(用于统一脱敏口径的占位);aes_encrypt/aes_decrypt:2~3 个参数(数据 + 密钥 + 可选模式),由aesFunction/aesDeFunction实现,加密长度计算见taes_encrypt_len(builtins.c);sm4_encrypt/sm4_decrypt:两个参数(数据 + 密钥),由sm4Function/sm4DeFunction实现,长度计算见tsm4_encrypt_len(builtins.c)。
14. 事件窗口支持子事件窗口
流计算的**事件窗口(event window)**新增子事件窗口支持,可将大事件窗口拆分为子窗口进行触发与计算,适配更细粒度的业务窗口需求。
15. Explorer 支持 OAuth 2.0 与 OIDC SSO
TDengine Explorer(图形化管理界面)新增 OAuth 2.0 与 OIDC 单点登录支持,可无缝对接企业统一身份认证平台。
16. taosAdapter 自定义 SQL 拒绝规则
taosAdapter 支持配置自定义 SQL 拒绝规则,可拦截特定模式的 SQL(如高危删除操作),实现 SQL 层的安全管控。
17. 身份认证函数
新增身份认证相关函数,配合企业版认证体系使用。
2.2 特性源码佐证
| 特性 | 源码位置 |
|---|---|
| 加密/脱敏/Base64/SHA 函数注册 | source/libs/function/src/builtins.c |
| dtw/dtw_path/tlcc 函数注册 | source/libs/function/src/builtins.c#L7609-L7663 |
| 函数语法解析(SM4 等关键字) | source/libs/parser/src/parTokenizer.c、source/libs/parser/inc/sql.y |
| TDgpt 分析扩展 | tools/tdgpt |
三、增强(Enhancements)深度解析
3.1 虚拟表(Virtual Table)能力增强
虚拟表在 3.4.0.0 中获得多项增强:
- 最大列数提升到 32767:虚拟表支持的列上限大幅提升,可承载更宽的模型。
- 非聚合查询禁止按聚合函数排序:
order by avg(x)这类在非聚合查询中的写法将被拒绝,避免语义歧义与错误结果。 - 状态窗口支持 zeroth_state 零状态:状态窗口新增
zeroth_state关键字,可指定“零状态”,处于该状态的窗口将跳过计算与输出。测试用例可见 parStreamTest.cpp:
-- 指定数值零状态,该状态窗口不输出 create stream s state_window(c1) extend(0) zeroth_state(0) ... -- 指定关键字零状态 create stream s state_window(c1) extend(0) zeroth_state(no_zeroth) ...- 窗口查询不再强制聚合函数:窗口查询(window query)现在允许仅包含
_wstart、tbname等伪列,无需强制包含聚合函数,便于实现仅取窗口边界/表名的查询。 - 虚拟表查询 Hint:WIN_OPTIMIZE_BATCH / WIN_OPTIMIZE_SINGLE:新增两个 Hint 参数以优化虚拟表状态窗口查询性能。从 parAstCreater.c 可以看到 Hint 的解析逻辑:
select /*+ WIN_OPTIMIZE_BATCH */ ... -- 批量优化模式 select /*+ WIN_OPTIMIZE_SINGLE */ ... -- 单条优化模式- 虚拟超表聚合与选择函数查询性能提升:对虚拟超表的聚合与选择类查询做了性能优化。
- stmt2 支持虚拟表查询:预处理语句(stmt2)链路补齐了虚拟表查询支持,并新增 bool 类型写入校验(增强第 26 项)。
3.2 流计算(Stream)增强
- 支持 interp 与 percentile 函数:流计算新增插值(interp)与分位数(percentile)函数支持,扩展流上可用的分析函数集。
- 降低触发数据与计算数据读取的资源消耗:优化流计算中触发数据(trigger data)与计算数据(computation data)的读取路径,减少资源占用。
- 超级表上禁止重复时间戳:
state_window、count_window、event_window在超级表上禁止使用重复时间戳,从源头规避窗口归属歧义。 - 事件窗口 true_for 条件触发优化:事件窗口仅在
true_for条件满足时才生成窗口开启通知,减少无效触发。 - 状态窗口 + partition by 正确性修复:修复了状态窗口与
partition by组合查询结果错误的问题(见修复第 39 项)。
3.3 运维与管理增强
- taosd 日志目录无写权限时优化报错:taosc 初始化因日志目录无写权限失败时,错误信息更明确,便于快速定位。
- Linux tar 包支持非 root 安装:Linux tar 包支持非 root 用户在自定义路径安装 TDengine TSDB。
- RELOAD TOPIC 命令:修改标签列后,执行
RELOAD TOPIC即可让数据订阅生效,无需重建 Topic。该命令由 mndTopic.c 中的reloadTopic函数处理,并会记录审计日志reloadTopic。 - 审计日志覆盖查询与删除:审计日志新增对查询、删除等操作的记录。
- show connections 增加客户端版本号:
show connections输出新增 client version 字段,便于版本对齐排查。 - ins_anodes_full 增加状态字段:
ins_anodes_full表新增 status 与 note 字段,实时反馈模型与算法状态。 - 集群间时钟校验机制:新增集群间通信的时钟检查机制,避免时钟偏差导致的数据一致性问题。
- compact 命令支持 force 选项:数据压缩命令
compact新增force强制选项。 - show vgroups 增加 is_ready 列:
show vgroups输出新增is_ready列,反映 vgroup 就绪状态。 - 执行计划显示标签索引:EXPLAIN 执行计划支持展示标签索引信息。
- 全局时区设置降低锁竞争:设置全局时区,减少并发查询与写入时时间转换的锁竞争。
- RPC 通信读写锁优化:优化 RPC 通信中读写锁的使用逻辑。
- 更新子表标签值不变时直接返回:更新子表标签时若值未变化则立即返回,避免频繁更新数据订阅的子表集合。
- stmt2 日志优化:调整 stmt2 日志便于问题排查。
3.4 taosmqtt 与 OPC 优化
- taosmqtt 优雅退出:改进 taosmqtt 的退出处理逻辑,实现更优雅的关闭与资源释放。
- OPC-DA 采集与自动重连优化:优化 OPC-DA 数据采集与自动重连机制,OPC-UA 延迟问题同步修复(见修复第 27 项)。
3.5 增强要点速查表
| 类别 | 增强内容 |
|---|---|
| 虚拟表 | 列数上限 32767;窗口查询免聚合函数;WIN_OPTIMIZE 双 Hint;虚拟超表查询性能 |
| 流计算 | interp/percentile;触发与计算数据读取优化;事件窗口子窗口;zeroth_state |
| 安全/审计 | 审计覆盖查询删除;登录失败策略;集群时钟校验 |
| 运维 | 非 root 安装;RELOAD TOPIC;compact force;show vgroups is_ready;show connections 版本号 |
四、关键修复(Fixes)解读
4.1 流计算与订阅修复
- WAL 版本号未更新导致重算错误:流触发数据重算时未使用最新 WAL 版本号,导致计算结果不正确,已修复。
- FILL_HISTORY 历史数据计算失败:流计算使用
FILL_HISTORY计算历史数据失败的问题已修复。 - 流读取数据出错导致任务等待:流读取数据出错时后续计算任务阻塞等待的问题已修复。
- 事件通知 WebSocket 发送概率性失败:流通过 WebSocket 发送事件通知概率性失败的问题已修复。
- 流结果表已存在时 schema 与标签同步:修复流结果表已存在时 schema 与标签不同步的问题。
- 流子查询 join 含 tag==%%n 条件时 coredump:修复流子查询中 join 包含
tag==%%n条件导致的 coredump。 - 流中异常检测调用错误数据源:修复流中使用异常检测时调用了错误数据源的问题。
- 流创建语句反引号误判:创建流语句解析输出表标签名时,反引号被误当作列名一部分,导致 "Out table tag type mismatch" 错误,已修复。
- 数据订阅期间修改 tdb 的并发问题:修复数据订阅进行中修改 tdb 导致的并发问题。
- rawdata 数据订阅失败:修复 rawdata 类型数据订阅失败的问题。
- 修改标签列后订阅感知:配合 RELOAD TOPIC 特性,修复标签列修改后客户端无法感知的问题(客户端无法感知其他客户端对表 schema 的修改)。
4.2 查询与 SQL 修复
- order by abs(col) 查询错误:当结果集包含
order by abs(col)而非表列时查询报错,已修复。 - JSON 类型 TAG 的 show create table 与 distinct 结果异常:修复 JSON 类型标签列下
show create table与select distinct tbname, json_tag_name结果不符合预期的问题。 - 嵌套查询子查询排序问题:嵌套查询中子查询使用降序、无排序或按非时间主键排序时结果错误,已修复。
- 虚拟表相关崩溃:修复虚拟超表查询报 "Invalid value in client"、虚拟表引用同名字段不同类型子表列时崩溃的问题。
- 多虚拟表同源列逻辑错误:修复多个虚拟表使用同一原始表列时的逻辑错误。
- show create table 返回过多列:修复 show create table 结果列数过多的问题。
- JOIN 中子表时间主键为常量时无需排序:修复 JOIN 语法中子表时间主键为常量时仍要求排序的问题。
- 嵌套查询外层 cols 函数错误:修复嵌套查询中外层 cols 函数错误。
- state_window + partition by 结果错误:见 3.2 节。
4.3 数据写入与导入修复
- insert into select 写入错误 dnode:修复
insert into select语句数据写入错误 dnode 并触发 "Vnode is closed" 错误的问题。 - insert into stable 的 tbname 处理:修复通过
insert into stable语法写入时 tbname 处理逻辑错误。 - schemaless 写入并发修改内部表结构:修复 schemaless 写入期间并发修改内部表结构导致的错误。
- STMT2 自动建表超长表名崩溃:修复 STMT2 写入自动建表时表名过长导致的崩溃。
- stmt2 中 dbname/tbname 均为 ? 卡死:修复 stmt2 查询中 dbname 与 tbname 均设置为
?时查询进程卡死的问题。 - stmt2 字段类型错误(C WS):修复 C WebSocket 中
taos_stmt2_get_fields的 field_type 错误。 - InfluxDB 无标签测量数据错误:修复 InfluxDB 无标签测量数据(no tag measurements)导入报错的问题。
- taosgen CSV 格式错误崩溃:修复 taosgen 在 CSV 格式错误时 coredump 的问题。
- 升级后异常数据加载:修复从 3.3.6.32-3.3.6.36 升级到 3.3.8.6-3.3.8.10 时异常数据加载的问题。
- decimal NULL 缓存刷盘崩溃:修复缓存开启时 decimal 类型 NULL 值刷盘偶发崩溃的问题。
4.4 数据接入(taosX/OPC/历史库)修复
- Kafka extract/split 深度错误:修复 Kafka 抽取/拆分深度错误。
- taosX 100k 消息单行 SQL 过长:修复 taosX 每行 100k 消息导致 SQL 过长的问题。
- taosX req_id 其他组件找不到:修复 taosX req_id 在其他组件中找不到的问题。
- transform 意外拆分结果:修复 transform 中意外拆分结果的问题。
- OPCUA 编辑后下载数据点失效:修复 OPCUA 下载数据点编辑后不工作的问题。
- KingHistorian 订阅不工作:修复 KingHistorian 订阅失效问题。
- AVEVA Historian 数据配置错误:修复 AVEVA Historian 数据配置错误。
- PI/PI-Backfill 带句号摄入错误:修复 PI/PI-Backfill 摄入时带句号(period sign)的错误。
- 创建 PI 任务时 DSN 模型找不到:修复创建 PI 任务时 "not found model in dsn" 错误。
- OPC-UA 延迟问题:修复 opc-ua 延迟问题。
4.5 其他修复
- Grafana 12.x 告警仪表盘导入:修复 Grafana 12.x 导入告警仪表盘失败的问题。
- ins_vgroups cache_load 负值:修复 cache_load 字段超过 int32 上限时显示为负值的问题。
- 查询内存控制崩溃风险:修复查询内存控制过程中的潜在崩溃风险。
- 修改全局变量时事务无法结束:修复修改全局变量时事务无法结束的问题。
- Explorer 上传监控到 taoskeeper 默认开启:修复 Explorer 默认上传监控数据到 taoskeeper 的问题。
- Explorer 无子路径登录错误:修复 Explorer 无子路径(subpath)部署时登录错误。
- node.js 窗口无时区支持:修复 node.js 客户端窗口查询无时区支持的问题。
- 流触发建表不带写入数据时崩溃:修复流触发建表但未携带写入数据时的崩溃。
- InfluxDB 无标签测量数据错误:修复 InfluxDB 无标签测量数据错误。
- taosAdapter stmt 查询回调未调用导致崩溃:修复 taosAdapter 在 stmt 查询返回后回调函数未被调用导致的崩溃。
五、升级与验证建议
5.1 升级前检查清单
- 备份数据:升级前务必完整备份数据目录。
- 版本兼容:本版本为 3.4.x 系列首个版本,从 3.3.x 升级前请确认兼容性(修复第 43 项提到 3.3.6.32-3.3.6.36 到 3.3.8.6-3.3.8.10 的异常数据加载已修复,如从这些版本升级请关注数据加载行为)。
- SQL 兼容性:注意新版本对“非聚合查询中按聚合函数排序”的禁止行为,若现有 SQL 使用了该写法需调整。
- 超级表窗口重复时间戳:若在超级表上使用 state_window/count_window/event_window 且存在重复时间戳,需提前清理数据。
5.2 新特性验证示例
加密函数验证
-- SM4 加解密 SELECT SM4_ENCRYPT('hello', '0123456789abcdef'); SELECT SM4_DECRYPT(SM4_ENCRYPT('hello', '0123456789abcdef'), '0123456789abcdef'); -- 脱敏 SELECT MASK_PARTIAL('13800138000', 3, 4, '*'); -- 结果: 138****8000zeroth_state 流验证
-- 创建带零状态的流,零状态窗口不输出 create stream s_zeroth state_window(c1) extend(0) zeroth_state(0) from db.t into out_db.out as select _twstart, avg(c1) from db.t;RELOAD TOPIC 验证
-- 修改标签列后,无需重建 Topic ALTER TABLE t SET TAG location='beijing'; RELOAD TOPIC topic_name;六、总结
TDengine 3.4.0.0 是一个功能密度极高的版本:社区版在虚拟表、流计算、连接器与查询性能上全面增强,企业版补齐了存储加密、MFA、RBAC、分级审计与 SASL等企业级安全能力。对于正在使用 3.3.x 的用户,本版本在稳定性(49 项修复)与功能(17 项特性)层面都值得规划升级;对于新接入用户,虚拟表列数上限、窗口查询灵活性、加密脱敏函数等能力将显著简化数据建模与安全合规工作。
如需进一步深入,可查阅 完整版本历史索引,或直接在源码中定位函数注册与命令实现(builtins.c、mndTopic.c)进行源码级验证。
【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址: https://gitcode.com/taosdata/tdengine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考