You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TDengine开启update=1后批量插入更新失效及与普通插入区别咨询

TDengine 普通插入与批量插入的核心差异(针对update=1场景)

你观测到的现象是TDengine 2.x版本的原生设计逻辑导致的,两者核心区别如下:

  • 处理单元不同
    普通插入的单条INSERT语句仅包含1条数据,每条语句作为独立的写入请求、独立的处理批次执行。
    批量插入的单条INSERT语句包含N条数据,所有数据归属于同一个处理批次,会先完成全量预处理再执行落盘。
  • 同时间戳数据处理逻辑不同(update=1模式生效时)
    普通插入的多请求同时间戳数据,会触发覆盖更新逻辑:后到达的写入请求数据,直接覆盖数据库中已存在的同时间戳记录。
    批量插入的同一批次内的同时间戳数据,不会触发更新逻辑:TDengine在预处理阶段会直接保留该时间戳在批次内的第一条数据,后续同时间戳的所有数据会被直接丢弃,不会参与覆盖计算。

你给出的测试用例完全符合该逻辑:

  1. 批量插入(now, 1)(now, null)时,同时间戳的第二条null数据直接被丢弃,最终落盘的是第一条的1
  2. 后续单条插入同时间戳的null属于独立写入请求,触发update覆盖逻辑,原有记录的c1被更新为null

如果需要在批量插入场景下实现同时间戳的覆盖效果,可先在业务侧提前合并同一时间戳的所有数据,保证一个时间戳在单批次中仅存在一条数据后再执行批量写入。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:57:03