tiflash使用问题EXPLAIN analyze不一致

为什么同一个sql EXPLAIN analyze结果会不一致,是什么地方可以设置的嘛
【 TiDB 使用环境】
v4.0.10

【概述】 场景 + 问题概述
本地搭建的tidb,和测试环境执行同一个sql,EXPLAIN analyze结果 不一致

本地EXPLAIN analyze结果

测试环境EXPLAIN analyze结果

请查看提问指引&提问准则,尽可能详细地描述你遇到的问题,会更有利于你问题的解决~

最好能把问题描述清楚。
一般执行计划不一致,需要先收集一次统计信息,保证统计信息足够健康,然后再看看

1 个赞

补充下:
【 TiDB 使用环境】

【概述】 场景 + 问题概述

【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】

【应用软件及版本】

都写上

首先确认测试环境这个表启用了tiflash副本并且已经完成同步。
然后确认两个环境中对应表的健康度。健康度100时,执行计划应该是相同的。
还有两个环境中对应表的数据量,如果数据量偏少,也会影响执行计划。

你好,tiflash副本已经同步完成了,请问下健康度是在哪里可以查看

把表名改成你的表
SHOW stats_healthy WHERE table_name = ‘tmp_test’;

1 个赞

谢谢老师,老师如果表的健康度没有到100会有什么影响嘛;另外如果健康度没有到100会是什么原因引起的呢

老师,我也是这两天才开始接触tidb,我刚刚执行 下面这个语句
image
EXPLAIN analyze 中的task 走tiflash还是tikv和这个配置有没有关系呢

表健康度过低,会影响执行计划选择错误的索引。TiDB支持自动收集统计信息提升表健康度。
https://docs.pingcap.com/zh/tidb/stable/wrong-index-solution#错误索引的解决方案
文档里说的比较清楚,健康度等于(1-修改记录数/表总记录数)* 100。
https://docs.pingcap.com/zh/tidb/stable/statistics#表的健康度信息

2 个赞

现在这种配置是没影响的,优化器会根据优化规则选择tikv还是tiflash

健康度低意味着距离 TiDB 上次ANALYZE很久了,可能会导致使用错误的索引,影响执行计划的选择。如果健康度没有到100可能是,上一次ANALYZE到下一次ANALYZE之间数据分布变化比较快。

1 个赞

好的,谢谢

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。