下推计算结果缓存

    Coprocessor Cache 的配置均位于 TiDB 的 tikv-client.copr-cache 配置项中。Coprocessor 的具体开启和配置方法,见 。

    • 所有 SQL 在单个 TiDB 实例上的首次执行都不会被缓存。

    • 缓存仅存储在 TiDB 内存中,TiDB 重启后缓存会失效。

    • 不同 TiDB 实例之间不共享缓存。

    • 缓存的是下推计算结果,即使缓存命中,后续仍有 TiDB 计算。

    • 下推计算请求相同时,缓存会被命中。通常在以下场景下,下推计算的请求是相同或部分相同的:

      • SQL 语句完全一致,例如重复执行相同的 SQL 语句。

        该场景下所有下推计算的请求都是一致的,所有请求都能利用上下推计算缓存。

      • SQL 语句包含一个变化的条件,其他部分一致,变化的条件是表主键或分区主键。

        该场景下一部分下推计算的请求会与之前出现过的一致,部分请求能利用上下推计算结果缓存。

      • 该场景下一部分下推计算的请求会与之前出现过的一致,部分请求能利用上下推计算结果缓存。

    可以通过执行 EXPLAIN ANALYZE 或查看 Grafana 监控面板来检查 Coprocessor 的缓存效果。

    用户可以通过 查看读表算子中的缓存命中率,示例如下:

    执行结果的 execution info 列有 copr_cache_hit_ratio 信息,表示下推计算结果缓存的命中率。以上示例的 表示命中率大约是 75%。

    查看 Grafana 监控面板