【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【操作系统】Linux
【部署方式】机器部署
【集群数据量】3
【集群节点数】3
【问题复现路径】慢查询
【遇到的问题:问题现象及影响】我有张表 a b c 这三张表 全部有tiflash 副本,但是在关联查询的时候无法命中 tiflash ,select count(*) from a left join b on a.l=b.l left join c on a.x=c.x where a.y=? and a.t between ? and ?
查看执行计划 只走了tikv 没有走tiflash 。这三张表都手动重新收集了一下信息 。想请教一下是什么原因导致的
贴一下当前的执行计划
set @@tidb_enforce_mpp = ON; 执行下这个强制走mpp然后再看看执行计划
数据量有多少,会不会数据量不大没走tiflash?
这个和数据量没太大关系吧
我也只是猜测,另外tidb_isolation_read_engines这个值应该没单独设置吧
这个是默认的 没有单独设置
我有个疑问,tidb 是会定时收集表的统计信息的对吧
不算定时吧,应该是触发了阈值才会重新收集统计信息
现在是走tikv比走tiflash慢?
对的,走kv比tiflash慢很多,而且现在是执行计划里面的统计信息不准,重新分析了一下表还是不准,而且,根据条件不同,强制都tiflash都不生效
看执行计划,走tikv确实比较合适啊,explain analyze实际执行下看看
重新手动analyze table 一下,应该不能走kv这个统计信息不对
为什么这么痴迷 tiflash,这个 count(*) 结果很大吗,我猜测 条件挺多挺好的,执行计划评估的行数返回也比较少啊