SQL使用 READ_RROM_STORAGEL无法强制走需要的引擎

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.0-RC
  • 【问题描述】: 使用READ_RROM_STORAGEL在同个语句中无法控制走需要的存储引擎。

同一条语句不同的范围,执行计划变化而且无法指定引擎


EXPLAIN SELECT
        /*+ read_from_storage(tiflash[pay_purchase]) */
        t.PURCHASE_CHANNEL,
        count(1)
FROM
        pay_purchase t
WHERE
        t.CREATED_TIME > '2020-04-30 00:00:00'
AND t.CREATED_TIME < '2020-05-01 00:00:00'
AND t. STATUS = 2
GROUP BY
        t.PURCHASE_CHANNEL

而把时间拉长到一个月

EXPLAIN SELECT
        /* + READ_RROM_STORAGE(TIKV[pay_purchase]) */
        t.PURCHASE_CHANNEL,
        count(1)
FROM
        pay_purchase t
WHERE
        t.CREATED_TIME > '2020-04-01 00:00:00'
AND t.CREATED_TIME < '2020-05-01 00:00:00'
AND t. STATUS = 2
GROUP BY
        t.PURCHASE_CHANNEL

麻烦给一下建表语句,我测试下,感觉是不支持,我确认一下,多谢。

你好,如果 sql 里表存在别名的话,要用别名,可以试试在 hint 里用 t 替换 pay_purchase 试试。

不行的

tidb-server 有返回 warning 给 mysql 客户端吗? 如果没有, 可以试试故意打错 hint, 看是否有 warning, 如果仍然没有, 可以确认一下是否是 mysql 客户端把 sql 里的注释给过滤了

1 个赞

确实是客户端过滤掉了

下面是不强制走的部分

继续反馈个问题,这种只查一天少量数据,执行计划让这种直接走TiKV虽然数量比较少,但实际上性能依然TiFlash比较高。

走TIKV的速度

走TiFLash的速度

统计一天和30天的速度差不多

其他问题请提新帖,一个帖子处理一个问题,方便查看,多谢。

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