Apache IoTDB:PlanFragmentId的queryId与Id含义及格式咨询
Apache IoTDB PlanFragmentId 中 queryId 与 Id 的差异、格式要求及常见问题
一、queryId 和 Id 的含义差异
- queryId:是整个查询请求的全局唯一标识,用于标记同一条查询链路下的所有
PlanFragment。一个查询会被拆分成多个执行片段(PlanFragment),这些片段共享同一个queryId,以此关联属于同一场查询的所有执行单元。 - Id:是单个
PlanFragment的局部唯一标识,在同一个queryId的范围内,每个PlanFragment的Id都是唯一的,用来区分同一场查询下不同的执行片段。
二、格式要求
- queryId:IoTDB 要求它是单个字符串类型的全局唯一值,通常由系统自动生成(如 UUID、带业务标识的唯一字符串),不支持数值集合这类非单一值格式——这也是你设置数值集合报错的核心原因,系统仅接收单个唯一标识字符串。
- Id:是整数类型的局部标识,在同一场查询的上下文里,从 0 或 1 开始递增分配,确保同
queryId下每个PlanFragment的Id不重复即可。
三、queryId 设置数值集合报错的解决方案
将数值集合替换为单个唯一字符串即可,示例代码如下:
// 正确构造示例 String queryId = "query-20240520-123456"; int fragmentId = 0; PlanFragmentId planFragmentId = new PlanFragmentId(queryId, fragmentId);
如果需要关联多个查询标识,不要将多个值塞进 queryId,可在业务层面单独维护关联关系,queryId 始终保持单个唯一字符串格式。
内容的提问来源于stack exchange,提问作者BeHappy
相关产品推荐
相关产品推荐

