ticdc从库,hint不使用TiFlash

一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题

【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】8.5.4
【部署方式】机器部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】3节点+TiFlash
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
使用ticdc部署了从库,将主库的慢SQL在从库进行回放,部分SQL比主库慢很多,查看执行计划是,该部分SQL在主库使用了TiFlash,在从库使用了IndexRangeScan,使用hint READ_FROM_STORAGE也无法强制从库的SQL使用TiFlash,ignore_index索引也无法改变其执行计划。hint看起来不生效一样。
配置上,从库的cpu 64,主库是128.从库涉及的表load 了主库的统计信息,因此主从的统计信息也一致。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

关键从库部署TiFlash,并设置对应表的tiflash副本了吗?

从库有TiFlash,架构和主库一样的,就是cpu核数变成64了。
将tidb_isolation_read_engines去掉tikv,是可以走TiFlash的,但是这样改影响就大了。
现在想对比下从库走TiFlash的消耗和现有的执行计划消耗资源的差别,但是在从库hint不出来。

先确认在从库里有没有构建这个表的tiflash副本吧


副本是有的,否则tidb_isolation_read_engines=‘tiflash,tidb’,执行查询就会报错l.e。
重新收集统计信息是可以走TiFlash的,RU和执行的效率都比index range快。但是当前为了切从库稳定,从库默认是从主库导出统计信息load进来的,使用主库的统计信息。

你执行explain 语句(带hint),然后执行下show warnning 看有没有用

cpu 不一样,统计信息不一致需要重新收集不是很正常吗

从库的统计信息与主库一致的,从主库dump过来的。

没有warning,AI的分析,tidb的hint不是强制性的,如果认为成本太高,可能就忽略了。
现在就是想构造出来看看执行计划看看cost是不是真的差距太大,因为当前就只有CPU是差一些的。

有没有可能,你mysql的客户端太老了,不支持hint? 换个新1点的客户端或者加个–comments

同感,换下mysql的客户端试试

。。。。。。 竟然真相了,从来没怀疑过是客户端版本过旧的问题。。。。。。。。

哈哈哈 正常 ,谢谢大佬 给我标记为最佳答案,让我拿个15 积分

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