为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】tidb 集群版本 4.0.8,新加 2个 tiflash节点 版本 4.0.8
【概述】 单表查询,查询条件多时 tiflash报错 tree struct based executor must have executor id
【背景】
表 t : 数据量约1.5亿
create table t (c1 varchar(8),
c2 varchar(100),
c3 varchar(100),
c4 decimal(22,6),
…
key(c1,c2,c3));
查询SQL1:
select c1,c2,c3,c4
from t
where c1=‘xxx’
and c2 in (‘xx1’,‘xx2’ …<约50个>)
and ( c3 like ‘xxx1%’ or c3 like ‘xxx2%’ or c3 like ‘xxx3%’ … <约350个> );
直接执行查询SQL1,显示查询成功,执行计划显示使用的是 tikv。cop[tikv]
设置 tidb_isolation_read_engines=“tiflash”; 再次执行SQL1,报错:
ERROR 1105: [FLASH: Coprocessor: BadRequest] Tree struct based executor must have executor id.
tiflash日志如下:
查询SQL2:
select c1,c2,c3,sum(c4)
from t
where c1=‘xxx’
and c2 in (‘xx1’,‘xx2’ …<约50个>)
and ( c3 like ‘xxx1%’ or c3 like ‘xxx2%’ or c3 like ‘xxx3%’ … <约350个> )
group by c1,c2,c3;
查询报错: ERROR 1105: [FLASH: Coprocessor: BadRequest] Tree struct based executor must have executor id.
改写查询SQL2, 将 ( c3 like ‘xxx1%’ or c3 like ‘xxx2%’ or c3 like ‘xxx3%’ … <约350个> ) 减少至 100 个条件,查询成功。
将查询SQL1 和 查询SQL2 放在 tiflash5.0.1版本上执行,均使用tiflash且执行成功。
【问题】
1、此报错是否与tiflash版本有关?tiflash 4.0.8版本是否有相应的解决方案?
2、如必须升级,使用什么版本比较合适?(读多写少场景,单表数据量基本都在亿级以上)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。