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

为何query_parallelism会影响Ignite中两个UUID列的关联查询结果

问题根因
  • 该问题是Apache Ignite 2.10.0版本的已知缺陷,触发条件为query_parallelism>1且关联的两张表未配置亲和键绑定。
  • Ignite的query_parallelism参数用于控制单表查询的并行分片数量,参数值大于1时,SQL查询会拆分为多个独立的分片任务,每个任务仅处理表中部分分区的数据。
  • 测试中的两张表未配置亲和键关联,关联字段source_id和id的数据分布不存在分区对齐规则。当query_parallelism=1时,查询仅生成一个分片,会扫描两张表的全量分区数据,因此可以正常匹配到关联结果。
  • 当query_parallelism=8时,每个分片任务默认只会匹配同个分片范围内的两张表的分区数据,由于关联字段的对应值不在同一个分片对应的分区范围内,所有分片都无法匹配到结果,最终返回空集。
修复方案
  • 优先升级Ignite版本至2.12及以上,该版本已经修复了无亲和键关联表在多并行度下join结果为空的逻辑缺陷。
  • 若暂时无法升级版本,可以为两张表配置亲和键关联:将source_ml_blue表的亲和键设置为source_id,关联到source_nprobe_tcp_blue表的id字段,保证关联字段相同的值落在同一个分区,即可在多并行度下正常返回结果。
  • 临时验证可使用广播join的查询hint,强制小表全量广播到所有分片进行匹配,示例语句如下:
SELECT _A."id" AS "_A_id", _A."source_id" AS "_A_source_id", _B."id"  AS "_B_id", _B."flx_src_ip_text" AS "_B_src_ip" 
FROM PUBLIC."source_ml_blue" AS "_A" 
INNER JOIN /*+ BROADCAST */ PUBLIC."source_nprobe_tcp_blue" AS "_B" 
ON "_A"."source_id"="_B"."id";

内容的提问来源于stack exchange,提问作者C.Vergnaud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:18:03