下推计算结果缓存

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

    • 所有 SQL 在单个 TiDB 实例上的首次执行都不会被缓存。
    • 缓存仅存储在 TiDB 内存中,TiDB 重启后缓存会失效。
    • 不同 TiDB 实例之间不共享缓存。
    • 缓存的是下推计算结果,即使缓存命中,后续仍有 TiDB 计算。
    • 下推计算请求相同时,缓存会被命中。通常在以下场景下,下推计算的请求是相同或部分相同的:

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

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

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

      • SQL 语句包含多个变化的条件,其他部分一致,变化的条件完全匹配一个复合索引列。

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

    用户可以通过 EXPLAIN ANALYZE 语句查看中的缓存命中率,示例如下:

    查看 Grafana 监控面板

    在 Grafana 监控中,tidb 命名空间下 子系统中可见 copr-cache 面板,该面板监控整个集群中下推计算结果缓存的命中次数、未命中次数和缓存丢弃次数。