rw12306
(Rw12306)
1
为什么使用tiflash 查询速度反而慢了
这是最开始没有走tiflash 的执行计划
这是执行sql的时间,20秒左右
设置表tiflash 副本
ALTER TABLE zldw.sys_desensitization SET TIFLASH REPLICA 1;
ALTER TABLE qijiang_gongwei.JG_DIABETES SET TIFLASH REPLICA 1;
ALTER TABLE qijiang_gongwei.JKDA_PERSONINFO SET TIFLASH REPLICA 1;
这是走tiflash 的执行计划
这是走tiflash 查询运行时间,37秒,比没有走tiflash 多的17秒
没有说走TiFlash一定就比TiKV快的,只是让CBO优化器多了一种选择,而且你这个执行计划里面也没看到MPP算子
可能是由于统计信息不准确,优化器选择错误,导致有些算子没有下推,所以就变慢了。
建议你analyze一下相关的表再试试
另外,您这是哪个版本的TiFlash?只有一个节点?
rw12306
(Rw12306)
5
3个节点,我直接用的tiup 命令扩容的,应该是和数据库版本一致吧。
从执行计划看是TiKV+TiFlash混用,没有使用MPP计算,没看到ExchangeSender和ExchangeReceiver算子。TiFlash上又没索引,混用就等于是全列扫描
https://docs.pingcap.com/zh/tidb/stable/explain-mpp
那执行计划中为啥还是显示你的统计信息过期了呢:rofl:
没有看到actrows,所以无法判断这几张表是否会对优化器的选择产生影响
我说的是analyze table 表名。重新收集表的统计信息
rw12306
(Rw12306)
14
analyze TABLE qijiang_gongwei.JG_DIABETES;
analyze TABLE qijiang_gongwei.JKDA_PERSONINFO;
可以了,但是查询速度还是一样的慢。
rw12306
(Rw12306)
17
那他的优势是什么哟。数据量大了还是要索引才得行吧。
优势是支撑mpp计算,或者宽表场景。比如你表有200个字段,你只需其中的个别字段做聚合,这时列存优势就凸显了