拓冰建站拓冰建站
首页 / 资讯中心 / 正文

TDengine 3.3.3.0 版本解析:新增函数、企业级数据源接入与 60+ 稳定性修复详解

TDengine 3.3.3.0 版本解析新增函数、企业级数据源接入与 60 稳定性修复详解【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本文以 TDengine 3.3.3.0 官方 Release Notes 为主体系统梳理该版本新增的 20 项功能/优化与 62 项问题修复并结合本仓库源码深入讲解 round/timediff 等核心函数的行为细节、慢查询日志参数、syncLogBufferMemoryAllowed 内存控制参数等实现依据帮助读者快速评估升级收益并规避已知坑点。版本概览TDengine 3.3.3.0 发布于2024-10-07是 3.3.x 系列中功能密度较高的一次迭代。该版本的核心主题包括三个方向函数体系大幅扩充一次性新增 24 个内置函数覆盖数学、字符串、日期时间与统计聚合四类场景企业版数据接入能力增强多级存储新增 Azure Blob 支持、新增 MongoDB 数据源、macOS 企业客户端、taosX 同步性能优化等稳定性与正确性集中修复62 项修复覆盖查询崩溃、内存泄漏、订阅、流计算、集群元数据一致性等多个高风险领域。对于社区版用户函数、查询正确性、保留字、CSV 批量建表等改进同样直接受益。一、新增与增强的函数社区版/企业版均可用3.3.3.0 是函数能力的大版本。从源码来看这些函数集中在 builtins.c 中注册例如pibuiltins.c#L6202、stddev_popbuiltins.c#L6105、var_popbuiltins.c#L6131等均以内置函数表项的形式接入执行引擎。1.1 数学函数新增函数语义说明pi返回圆周率常量truncate/trunc截断小数部分truncate 的简写别名exp自然指数 e^xln自然对数mod取模运算rand随机数sign符号函数返回 -1/0/1degrees弧度转角度builtins.c#L6307radians角度转弧度builtins.c#L6328新增的degrees/radians两个角度换算函数补齐了工程计算场景如风电、电机转速监测中的角度换算的常用能力。1.2 字符串函数新增函数语义说明char将数值/码点转换为字符ascii返回字符的 ASCII 码position返回子串在字符串中的位置trim去除字符串两端空白replace字符串替换repeat重复字符串指定次数substring/substr截取子串substring_index按分隔符截取前/后 N 段builtins.c#L6440这些函数与工业设备数据中常见的从标签/编码字段解析信息类 SQL 高度契合例如用substring_index从形如plant-01/turbine-03的字段中提取站点编号。1.3 日期时间函数新增函数语义说明week返回一年中的周序号weekday返回星期序号weekofyear返回 ISO 周序号builtins.c#L6701dayofweek返回该日期是星期几配合原有的date_trunc、time_bucket等时间处理能力可方便地在 SQL 中完成按周聚合报表工作日/非工作日统计等分析。1.4 统计聚合函数新增stddev_pop总体标准差builtins.c#L6105var_pop总体方差builtins.c#L6131需要注意3.3.3.0 之前版本的STDDEV计算存在随机性错误问题见下文修复问题 233.3.3.0 一并修复升级后建议对依赖标准差计算的监控告警重新校验阈值。1.5 既有函数行为增强round支持舍入精度round(x, n)可指定保留的小数位数builtins.c#L4664此前仅支持对整数位四舍五入现在可用于金额、传感器读数等需要控制精度的场景。timediff语义明确化返回timestamp_expr1 - timestamp_expr2的时间差builtins.c#L5135支持负数结果且结果会按time_unit指定的精度近似。这解决了此前 timediff 在跨时区/跨精度计算时结果不符合预期的问题。max/min支持字符串输入当入参为字符串类型时返回字典序最大/最小的字符串值可用于从多个 tag/列中取极值文本。二、企业版能力增强Enterprise Edition以下能力属于企业版特性社区版不包含多级存储支持 Azure Blob在多级存储热数据在本地盘、温/冷数据下沉到对象存储体系中新增 Microsoft Azure Blob 支持与既有 S3 兼容存储形成互补。从源码结构看对象存储相关适配位于 source/libs/azurecos.h/cos_cp.hinclude/common/cos.h等接口用于云对象存储的数据读写。MongoDB 数据源taosX 新增 MongoDB 数据源接入能力支持将 MongoDB 中的文档数据同步入 TDengine并对 MongoDB DataIn 任务的日志输出做了优化。macOS 企业客户端TDengine 客户端正式支持 macOS 平台企业版授权。taosX 日志默认不写入 syslog避免 taosX 的同步任务日志污染系统日志降低磁盘与 syslog 服务压力。show cluster machines 展示服务器版本号方便多版本混合集群的版本审计。taosX 数据同步性能提升对同步链路进行了性能优化。三、可观测性与日志体系改进3.1 慢查询记录到日志库3.3.3.0 将服务器侧所有慢查询信息记录到日志数据库log database并与普通日志采用统一保存策略解决了此前慢查询日志与常规日志割裂、难以统一查询分析的问题。在实现层面慢查询相关配置项位于 mndDnode.c包括slowLogThreshold慢查询判定阈值毫秒级超过该耗时的 SQL 会被记为慢查询slowLogMaxLen慢查询 SQL 文本的最大记录长度slowLogScope慢查询记录的生效范围scope。运维人员可在 taos.cfg或通过ALTER DNODE动态调整中配置这些参数用于定位生产环境中的瓶颈查询。3.2 大消息写入内存控制参数针对写入大消息体导致 OOM的问题修复问题 463.3.3.0 新增参数syncLogBufferMemoryAllowed。该参数在 tglobal.c 中注册cfgAddInt64(pCfg, syncLogBufferMemoryAllowed, tsLogBufferMemoryAllowed, TSDB_MAX_MSG_SIZE * 10L, INT64_MAX, ...)类型int64单位为字节默认值TSDB_MAX_MSG_SIZE * 10消息最大尺寸的 10 倍取值范围TSDB_MAX_MSG_SIZE * 10到INT64_MAX作用域服务端Server本地配置属动态配置项。该参数用于约束同步日志sync log缓冲区的内存上限写入超大消息体如批量插入大批量 CSV 数据时避免缓冲区无界增长导致 OOM。四、语法与使用便利性改进4.1 移除保留关键字LEVEL、ENCODE、COMPRESS三个词不再是保留关键字可以直接用作列名、表名、数据库名等标识符。此前这些词必须加反引号转义才能使用3.3.3.0 之后可直接书写。同时修复了SQL 保留字作为列名创建超级表、以及保留字作为标签名的场景修复问题 52。4.2 查询语法增强group by 支持位置参数与别名语法修复问题 20例如GROUP BY 1按第一列分组或直接使用 select 中的别名。表不存在时是否抛异常的配置项新功能 18新增参数控制查询不存在的表时客户端是否抛出异常便于上层应用按自身容错策略处理。4.3 CSV 批量建表支持从 CSV 文件批量建表可直接将带表结构定义的 CSV 描述文件一次性创建多张表配合 taosBenchmark 或自研数据导入脚本可显著减少建表 DDL 的编写量。4.4 其他优化订阅Subscriptionoffset 文件加载优化修复 offset 文件大且加载慢的问题新功能 15降低订阅重启后的恢复时间tsma 的 interval 最大窗口扩展到 1 年时序聚合TSMA的时间窗口上限由原来的较短周期扩展为 1 年支持按季度、半年、整年粒度的预聚合JDBC 驱动升级至 3.2.5Kafka connector 提交改为同步模式提升消费位点提交的可靠性降低消息丢失风险禁止动态修改临时目录temp 目录作为系统运行时路径3.3.3.0 起不允许动态修改防止运行期路径切换引发文件句柄错乱。五、修复问题分类解读3.3.3.0 共修复 62 项问题按领域可归纳为以下几类5.1 数据接入与同步类多为企业版MQTT 写入任务在服务重启后不能自动重启、taosadapter 重启后 MQTT 任务异常且无法同步数据、Explorer 上 MQTT 任务状态错误问题 1/3/4/10Windows 下 agent 与 PI 连接器连接错误导致任务终止问题 2taosx 重启后运行中任务未被重新调度、网络恢复后 replica 任务数据同步异常、Kafka DataIn 任务状态正常但停止消费问题 5/8/11taosx 在 schema 变化条件下导入数据导致 taosd 崩溃问题 57从 3.1 升级到 3.3 的元数据同步问题问题 9。5.2 查询正确性与崩溃类社区版核心价值last interval查询导致崩溃问题 12、last_row结果不符合预期问题 17/18、空列上的last函数查询崩溃问题 44NOT IN (NULL)查询结果错误问题 61STDDEV函数计算结果随机错误问题 23fill 值指定为 0 时报错问题 17、缓存更新期间数据填充游标错误导致 taosd 异常退出问题 22超级表投影慢查询问题 37、cid不在当前 schema 中时 assert 导致 coredump问题 45、时区为 UTC 且数据含 1970 时查询报错问题 47limit 过小时判断错误问题 41。5.3 内存与稳定性类节点恢复阶段内存占用高导致 taosd OOM问题 40/56连续出现两次修复高并发查询时连续内存增长问题 53、可能的服务端/客户端内存泄漏问题 58/59tsdb 加载缓存导致 taosd 死锁问题 16、websocket 连接内存泄漏问题 32大消息体写入 OOM问题 46配合新增的syncLogBufferMemoryAllowed参数。5.4 元数据与集群一致性类高查询并发场景下的元数据一致性问题 27多节点环境下事务返回码与事务状态不一致导致事务堆积问题 38集群节点异常恢复后集群授权状态失效问题 49多级存储与加密场景下无法添加离线节点问题 24元数据克隆函数对象错误导致崩溃问题 21并发多线程对同一子表 describe 导致崩溃问题 30。5.5 其他重要修复热更新stt_trigger时写入导致 taosd 崩溃问题 13、stt_trigger 1删除数据后错误重现问题 39、两个 stt 位于数据块时间轴分布间隙时断言失败导致崩溃问题 34云服务下服务重启后流计算无法继续问题 15、流计算 checkpoint 处理中断言失败崩溃问题 54taoskeeper 修改 root 密码后反复重启问题 14用户指定 information_schema 库登录导致 taosd 崩溃问题 19导入 CSV 时列或标签包含逗号/引号导致导出错误问题 29多级存储下长时间从 S3 拉取数据失败问题 35Redhat 操作系统上社区版无法正常启动问题 33TDengine CLI 无法输入超过 20 字节的密码问题 25SQL 写入 int 数据溢出问题 26手动点击停止按钮无法停止任务问题 28taosd 服务无法正常停止问题 43、恢复 vnode 时临时将 vgroup 设为单副本问题 513.3.2.8.0820 版本中 information_schema 中不存在的表可在 perf_queries 中查询的问题问题 55开源用户升级 stt_trigger 值后无法修改其他数据库选项问题 60TDengine CLI 与 taosBenchmark 无法连接云服务实例问题 62。六、升级与验证建议基于 3.3.3.0 的变更内容升级时建议重点验证以下场景查询回归重点回归涉及last、last_row、fill、STDDEV、NOT IN、timediff、round的存量 SQL这些是本次修复的重灾区也是行为语义发生过调整的函数标识符兼容性若存量 SQL 曾对LEVEL/ENCODE/COMPRESS加反引号转义3.3.3.0 之后仍可正常解析新脚本可直接使用这些词作列名/表名内存参数若存在大消息批量写入场景可按需调整syncLogBufferMemoryAllowed默认值为消息最大尺寸的 10 倍动态生效慢查询监控配置slowLogThreshold/slowLogMaxLen/slowLogScope后可通过日志数据库统一检索慢查询记录订阅与 Kafka升级后验证订阅 offset 加载耗时是否下降、Kafka connector 同步提交是否生效。对于使用企业版数据接入MQTT、MongoDB、Azure Blob、PI/AVEVA的用户3.3.3.0 修复了大量任务调度与自动恢复问题建议在维护窗口内完成升级并做一次完整的重启—任务自动恢复演练。参考资料版本说明原文3.3.3.0.md函数注册实现source/libs/function/src/builtins.c服务端配置参数含syncLogBufferMemoryAllowedsource/common/src/tglobal.c慢查询日志配置项source/dnode/mnode/impl/src/mndDnode.c对象存储相关接口include/common/cos.h、source/libs/azure【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门