【TiDB 使用环境】生产环境
【TiDB 版本】7.5.6
【操作系统】centos7
【部署方式】私有部署
【集群数据量】1T
【集群节点数】8
【问题复现路径】 use 别的数据库 。跨库执行 order by 主键
EXPLAIN SELECT tt.* FROM (SELECT /+read_from_storage(tiflash[m])/ m.id, m.promote_platform_type,…, m.ad_play_over_rate_within_thirty_d FROM middleground.middle_data_salesman AS m WHERE m.status=1 AND m.deleted=0 AND m.relate_shop_salesman_name LIKE CONCAT(‘%’, ‘天奇测评’, ‘%’) ) AS tt ORDER BY tt.id DESC LIMIT 20 ;
Warning Code : 1815
*There are no matching table names for (m) in optimizer hint /*+ READ_FROM_STORAGE(tiflash[m]) /. Maybe you can use the table alias name
EXPLAIN SELECT /*+read_from_storage(tiflash[m])*/ m.id, m.promote_platform_type, ... , m.ad_play_over_rate_within_thirty_d FROM middleground.middle_data_salesman AS m WHERE m.status=1 AND m.deleted=0 AND m.relate_shop_salesman_name LIKE CONCAT('%', '天奇测评', '%') ORDER BY id DESC LIMIT 20 ;
这样也不行
只有用驱动表所在的库才行 。
去掉order by 主键字段是可以走tiflash 的。
有order by 主键 ,去掉limit 20 也是正常的
只有limit 没有 order by id 也能走tiflash , 就是组合一起 就不行了
order by 非索引第一列才能走tiflash
跨库的表不用别名才行 。
SELECT /+ read_from_storage(tiflash[middleground.middle_data_salesman])/ id, promote_platform_type ,… , ad_play_over_rate_within_thirty_d
FROM middleground.middle_data_salesman WHERE STATUS=1 AND deleted=0
AND relate_shop_salesman_name LIKE CONCAT(‘%’, ‘天奇测评’, ‘%’) ORDER BY id DESC LIMIT 20 ;
【遇到的问题:问题现象及影响】 预期是按hint 强制走tiflash 的 0.几秒 , 实际走了tikv 需要十多秒
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】