新闻详情

新闻详情

首页 / 资讯中心 / 详情

TDengine 3.3.4.8 版本说明详解:INTERP 支持 FILL(NEAR) 插值及优化修复全景

发布时间:2026/9/14 19:49:34来源:尧图网络
TDengine 3.3.4.8 版本说明详解:INTERP 支持 FILL(NEAR) 插值及优化修复全景
TDengine 3.3.4.8 版本说明详解INTERP 支持 FILL(NEAR) 插值及优化修复全景【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本篇基于 TDengine 3.3.4.8 版本说明发布于 2024-12-02展开逐条解读该版本的 1 项新特性、5 项优化与 21 项修复并结合当前仓库中的 SQL 参考文档与执行器源码说明 INTERP 查询FILL(NEAR)填充模式的语法、语义与底层实现位置帮助读者完整理解该版本的能力变化并据此评估升级收益。版本概览3.3.4.8 属于 TDengine 3.3.4.x 维护线的一次补丁版本原文档为 3.3.4.8 版本说明。其内容结构如下新特性1 项核心是 INTERP 函数新增fill(near)填充模式同时支持返回原始数据所在的时间戳、支持在指定范围内查找插值优化5 项覆盖 TSBS 测试查询性能、单表多标签批量更新、状态窗口错误码、流计算force windows close模式资源消耗、窗口查询必须使用聚合函数的限制取消修复21 项涉及 WAL、副本同步、流计算、订阅、taosdump、OPC、Grafana、集群稳定性与查询正确性等多个子系统。下面按“新特性 → 优化 → 修复”的顺序逐条展开。新特性INTERP 函数支持 FILL(NEAR) 填充模式版本说明原文为新功能Interp 函数支持 fill(near) 填充模式支持返回原始数据所在的 timestamp支持在指定的范围内查找插值这一条实际包含三个相互关联的能力分别对应 SQL 参考文档 INTERP 子句 与 INTERP 函数 中的三个语法要素。1. FILL(NEAR)按最近有效数据插值INTERP是 TDengine 的插值函数通过专用的INTERP子句使用必须与RANGE、EVERY、FILL子句配合RANGE(timestamp1, timestamp2)指定输出时间范围要求 timestamp1 ≤ timestamp2也可以只给单个时间戳对单个点插值此时EVERY可省略如SELECT INTERP(col) FROM tb RANGE(2023-01-01 00:00:00) FILL(linear)EVERY(time_unit)决定从起始时间戳开始每隔多长时间输出一个插值点仅支持毫秒至周不支持月/季/年FILL决定每个插值点如何取值。TDengine 支持的填充模式包括NONE、VALUE、NULL、PREV、NEXT、NEAR、LINEAR。在 3.3.4.8 之前NEAR填充在 INTERP 场景中不可用。该版本起INTERP查询支持FILL(NEAR)即用距离当前插值时间点最近的有效数据填充当相邻前后数据距离当前时间断面一样近时取前一行的值“近者优先平局取前”。示例SELECT ts, interp(current) FROM meters RANGE(2023-01-01 00:00:00, 2023-01-01 00:10:00) EVERY(10s) FILL(NEAR);两个重要的使用约束值得注意NEAR填充在窗口INTERVAL查询中不支持仅限 INTERP 查询文档中的 FILL 子句 章节明确“NEAR填充使用距离当前时间点最近的有效数据填充……在窗口查询中不支持”INTERP 中 NULL 数据是否算“有效数据”取决于INTERP函数的ignore_null_values参数。若忽略 NULL则PREV/NEXT/NEAR模式会跳过 NULL 继续向前/向后/双向寻找非 NULL 值若所有数据均为 NULL则不进行填充。从源码结构看填充模式在 include/common/tmsg.h 中统一定义NEAR对应枚举值TSDB_FILL_NEAR 8排在NONE/NULL/NULL_F/SET_VALUE/SET_VALUE_F/LINEAR/PREV/NEXT之后#define TSDB_FILL_NONE 0 #define TSDB_FILL_NULL 1 #define TSDB_FILL_NULL_F 2 #define TSDB_FILL_SET_VALUE 3 #define TSDB_FILL_SET_VALUE_F 4 #define TSDB_FILL_LINEAR 5 #define TSDB_FILL_PREV 6 #define TSDB_FILL_NEXT 7 #define TSDB_FILL_NEAR 8INTERP 的填充逻辑由执行器的时间切片算子实现。在 source/libs/executor/src/timesliceoperator.c 中TSDB_FILL_NEAR分支调用interpDetermineNearFillRow()来选定“最近”的参考行与PREV/NEXT分支分别只取前一/后一有效行的逻辑形成对照source/libs/executor/src/filloperator.c 与 source/libs/executor/src/tfill.c 中同样将TSDB_FILL_NEAR与TSDB_FILL_PREV归入同一类“取相邻行”的填充处理路径可以推断 NEAR 的底层实现是 PREV/NEXT 双方向查找的合并与择优。版本标注提示当前 SQL 参考文档中 INTERP 章节将FILL(NEAR)标注为“v3.3.4.9及以后支持”与本版本说明3.3.4.8 引入存在出入实际以你所部署版本的运行时行为为准。2. 返回原始数据所在的时间戳_irowts_origin版本说明中的第二点“支持返回原始数据所在的 timestamp”对应 INTERP 的_irowts_origin伪列。文档中对 INTERP 可用伪列的定义为_irowts返回插值结果对应的时间戳列只能与INTERP一起使用如SELECT _irowts, interp(current) FROM meters RANGE(2020-01-01 10:00:00, 2020-01-01 10:30:00) EVERY(1s) FILL(linear);_irowts_origin仅适用于FILL类型为PREV/NEXT/NEAR的场景用于返回插值所使用的原始数据时间戳若范围内无值则返回NULL。这正是 3.3.4.8 新增 NEAR 模式后补齐的能力——用 NEAR 填充时结果值来自哪条原始数据点可以通过该伪列追溯SELECT _irowts_origin, interp(current) FROM meters RANGE(2020-01-01 10:00:00, 2020-01-01 10:30:00) EVERY(1s) FILL(NEXT);_isfilled标识结果行是原始记录还是插值结果可与_irowts、_irowts_origin组合使用便于在写入/下游处理中区分真实采样与填充值。3. 在指定范围内查找插值SURROUND 子句版本说明中的第三点“支持在指定的范围内查找插值”对应SURROUND子句——用于限制FILL子句的填充范围只能在PREV、NEXT、NEAR仅 INTERP 查询支持模式下使用。其语义为当有效数据行与当前行的时间差超过SURROUND指定的时间差参数时不再使用该行数据转而用FILL_VALS指定的填充值替代FILL_VALS参数数目和格式与FILL(VALUE, ...)模式相同可为常量或常量表达式不支持子查询。这为 NEAR 模式提供了一个“最大追溯距离”的护栏例如只允许在 5 秒内寻找最近数据超出则回退为填充值避免用过于陈旧的数据点做插值。结合上面两条能力一条完整的 NEAR 插值查询形如SELECT _irowts_origin, interp(current) FROM meters RANGE(2023-01-01 00:00:00, 2023-01-01 00:10:00) EVERY(10s) FILL(NEAR) SURROUND(5s, 0);SURROUND的完整参数形式可参照 FILL 子句文档 中FILL(fill_mode_and_val) [SURROUND(surrounding_time_val [, fill_vals])]的语法定义。此外两点使用须知来自同一文档的 FILL 章节对 NEAR 同样适用FILL 可能生成大量填充输出务必指定查询时间区间单次查询可返回不超过 1 千万条带插值的结果若查询的整个时间范围内没有数据除 NONE 外的 FILL 模式均不产生填充结果为空——这是 PREV/NEXT/NEAR 等依赖相邻数据模式的自然行为。优化项解读5 项版本说明列出了 5 项优化逐条解读如下1. 提升 TSBS 测试的查询性能针对 TSBSTime Series Benchmark Suite标准负载下的查询路径进行了性能优化。该仓库自带 tools/tsbs-tdengine 基准测试工具含run.sh与src/下的查询实现可用于在升级前后对同一 workload 做对比验证。若你的部署以 TSBS 类高并发点查/范围查为主升级后可用同一 workload 复核 P99 延迟变化。2. 支持同时修改单个子表的多个标签值此前批量更新标签的操作效率受限该版本支持对单个子表一次性修改多个标签TBSTAG值。对拥有大量子表且标签频繁变化的场景如设备状态、分组属性批量迁移这减少了多条 UPDATE 语句的往返开销属于面向高基数标签运维场景的实用优化。3. 优化状态窗口的错误码状态窗口STATECOUNT、STATEDURATION 等状态函数相关的错误返回码得到梳理使得错误分类更准确。对上层监控与重试逻辑而言更精确的错误码意味着可以更可靠地区分“可重试”与“配置/语法”两类问题。4. 降低流计算 force windows close 模式下的资源消耗force windows close是流计算中对未关闭窗口强制收尾的模式。该版本降低了此模式下的资源消耗与后文修复项“force window close 模式下重启失败”互为配套。长窗口、低频数据的流任务在此模式下收益最直接。5. 取消窗口查询必须使用聚合函数的限制此前窗口查询要求 SELECT 列表中出现聚合函数该版本取消了这一限制。这与 SQL 参考文档中描述的“窗口投影模式”SELECT 列表包含列表达式或不定行函数相呼应窗口查询现在可以直接投影普通列表达式查询表达的自由度显著提高例如可以在窗口内直接输出原始列值而非聚合结果。修复项解读21 项21 项修复按子系统归类如下原文条目均完整保留。WAL 与副本同步3 项修复WAL 未分布到多个 0 级挂载点的问题修复修改WAL_level时 WAL 文件读取失败的问题修复副本快照同步时的 race condition。WAL 相关修复集中在多挂载点0 级挂载点的 WAL 分布与WAL_level变更后的文件读取路径。仓库中 WAL 组件实现位于 source/libs/wal多挂载点部署的集群升级前建议确认 WAL 目录布局。流计算4 项修复流计算异常退出可能导致死锁修复创建流计算节点时的死锁问题修复流计算 force window close 模式下重启失败的问题修复流计算在 force_window_close 模式下未按指定规则生成子表名。两项死锁修复异常退出、创建流计算节点加上 force window close 模式的重启失败与子表名生成规则问题说明该版本对流计算生命周期的健壮性做了系统性加固。使用force_window_close的任务升级后应重点验证重启行为与输出子表名。数据订阅与 taosdump4 项修复OPC CSV 点位配置enabled0时需要转义的 table drop 失败修复在弱网下可能出现订阅数据部分缺失修复通过标签过滤子表时数目不正确的问题可能导致 taosdump crash修复订阅参数enable.auto.commitfalse不生效。订阅侧的两项修复弱网数据缺失、auto.commit 参数直接关系到数据完整性和消费端提交语义taosdump 按标签过滤子表数目错误导致的 crash 修复对依赖 taosdump 做备份/迁移的用户影响明显。查询正确性与稳定性5 项修复升级到 3.3.4.3 后 Percentile 函数性能下降的问题修复包含GROUP BY常量的 SQL 语句会报语法解析错误修复打开 RPC 压缩时单个 dnode 重启可能导致集群状态异常修复Grafana 使用 CASE WHEN 配置告警结果不符合预期修复频繁执行 union 查询时可能出现的 crash。其中两项与查询引擎直接相关GROUP BY常量导致的解析错误属于语法兼容问题频繁 union 查询 crash 属于稳定性问题。RPC 压缩场景下单 dnode 重启引发集群状态异常的问题对开启了压缩的分布式部署尤为重要。其他5 项修复Explorer Node.js 示例代码修复修复优化状态窗口的错误码同时列入优化项修复OPC-DA 连接检查报 NOCONFIG 错误修复系统表ins_dnode_variables中的 dataDir 信息不完整问题修复WHERE 条件在 INTERP 函数中不生效的问题修复特定场景下 schemaless 写入模式出现的 “schema is old” 问题对应上游社区 issue 28846。其中“WHERE 条件在 INTERP 函数中不生效”与新特性直接相关——INTERP 的采样数据本应受 WHERE 子句约束参见 INTERP 子句文档“插值时所使用的采样数据并非限制于 RANGE 字段的约束而是满足 WHERE 子句条件的全部数据”该修复保证了 INTERP 的过滤语义正确性建议 INTERP 重度用户在升级前后对比核对结果。升级建议INTERP 用户3.3.4.8 是 INTERP 插值能力的一次实质增强NEAR 模式 原始时间戳伪列 SURROUND 范围限制时序补点、告警取最近值类场景值得升级验证注意 SQL 参考文档对FILL(NEAR)版本标注与本说明存在出入以实际版本行为为准流计算用户force window close 模式下的资源消耗、重启可靠性、子表命名规则均有修复长窗口任务应做重启演练多挂载点 / 副本集群WAL 分布、WAL_level 变更、快照同步三处修复建议纳入升级后检查项订阅与备份enable.auto.commitfalse、弱网订阅完整性、taosdump 标签过滤 crash 的修复对 ETL 管道和数据迁移链路有直接收益。版本说明原文docs/zh/17-release-history/03-notes/3.3.4.8.mdINTERP/FILL 语法与约束详见 01-query.md 的 INTERP 子句与 FILL 子句章节、03-function.md 的 INTERP 函数章节填充模式枚举定义见 include/common/tmsg.hNEAR 填充执行路径见 timesliceoperator.c 与 filloperator.c。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

免费学术查重工具评测与使用指南 2026/9/14 21:16:41

免费学术查重工具评测与使用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Simulink实现RRT路径规划算法详解 2026/9/14 21:16:41

Simulink实现RRT路径规划算法详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
量化交易与个人投资者的市场生存策略 2026/9/14 21:16:41

量化交易与个人投资者的市场生存策略

1. 量化交易如何重塑市场生态2008年金融危机后,华尔街某对冲基金悄悄部署了一套新型交易系统。这套系统在接下来三年里,每天完成超过10万次交易,年化收益率稳定在23%-27%之间——而同期标普500指数的年化收益仅为9.5%。这个案例揭开了量化交易…

阅读更多 →
基于Qt框架实现低延迟语音通讯系统开发指南 2026/9/14 21:16:41

基于Qt框架实现低延迟语音通讯系统开发指南

1. 项目背景与需求分析YY语音作为国内最早的游戏语音通讯工具之一,其房间模式在实时语音交互领域具有典型代表性。基于Qt框架快速实现类似YY语音房间的功能,实际上是在构建一个具备以下核心特性的实时语音通讯系统:多房间架构:支持…

阅读更多 →
iPhone续航提升的本质:系统级能效工程解析 2026/9/14 21:16:41

iPhone续航提升的本质:系统级能效工程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
2026年前端AI工具选型实战指南:聚焦需求对齐、依赖治理与类型追踪 2026/9/14 21:13:41

2026年前端AI工具选型实战指南:聚焦需求对齐、依赖治理与类型追踪

1. 这不是工具推荐,是前端工程师的生存决策指南2026年,一个刚接手Vue3TypeScript项目、正在调试WebSocket连接失败的前端工程师,凌晨两点盯着控制台里反复报错的Cannot read property send of undefined发呆。他没去翻MDN文档,也没…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞