下推计算结果缓存
TiDB 从 4.0 起支持下推计算结果缓存(即 Coprocessor Cache 功能)。开启该功能后,将在 TiDB 实例侧缓存下推给 TiKV 计算的结果,在部分场景下起到加速效果。
Coprocessor Cache 的配置均位于 TiDB 的 tikv-client.copr-cache
配置项中。Coprocessor 的具体开启和配置方法,见 TiDB 配置文件描述。
- 所有 SQL 在单个 TiDB 实例上的首次执行都不会被缓存。
- 缓存仅存储在 TiDB 内存中,TiDB 重启后缓存会失效。
- 不同 TiDB 实例之间不共享缓存。
- 缓存的是下推计算结果,即使缓存命中,后续仍有 TiDB 计算。
下推计算请求相同时,缓存会被命中。通常在以下场景下,下推计算的请求是相同或部分相同的:
SQL 语句完全一致,例如重复执行相同的 SQL 语句。
SQL 语句包含一个变化的条件,其他部分一致,变化的条件是表主键或分区主键。
该场景下一部分下推计算的请求会与之前出现过的一致,部分请求能利用上下推计算结果缓存。
SQL 语句包含多个变化的条件,其他部分一致,变化的条件完全匹配一个复合索引列。
该场景下一部分下推计算的请求会与之前出现过的一致,部分请求能利用上下推计算结果缓存。
可以通过执行 EXPLAIN ANALYZE
或查看 Grafana 监控面板来检查 Coprocessor 的缓存效果。
用户可以通过 查看读表算子中的缓存命中率,示例如下:
执行结果的 execution info
列有 信息,表示下推计算结果缓存的命中率。以上示例的 0.75
表示命中率大约是 75%。
查看 Grafana 监控面板
在 Grafana 监控中,tidb
命名空间下 子系统中可见 copr-cache 面板,该面板监控整个集群中下推计算结果缓存的命中次数、未命中次数和缓存丢弃次数。