在执行计划中会显示copr-cache-hit_ratio 是指rocksdb 中的block cache 命中率吗?
不是,这是 下推计算结果缓存
https://docs.pingcap.com/zh/tidb/stable/coprocessor-cache
将一些计算结果缓存在tidb侧,你可以试下
select count(*) from xxx;
在开启 下推计算结果缓存的情况下且表在没有修改的情况下,第二次执行速度快很多
这块主要是缓存memTable和immutable Table?
不是,TiDB 执行计划中显示的 copr-cache-hit_ratio 不是指 RocksDB 中的 block cache 命中率。
copr-cache-hit_ratio 具体表示协处理器缓存在 TiDB 中的命中率。 协处理器缓存是 TiDB 用来缓存某些查询的中间结果的查询结果缓存。 它通过避免对同一查询进行冗余计算来帮助提高查询性能。
执行查询时,TiDB 会检查结果是否已经缓存在协处理器缓存中。 如果在缓存中找到结果,则直接返回,造成缓存命中。 如果结果不在缓存中,则执行查询,并将结果存储在缓存中以备将来使用,从而导致缓存未命中。
执行计划中的 copr-cache-hit_ratio 提供有关协处理器缓存有效性的信息。 它表示缓存命中与缓存访问总数的比率。 较高的 copr-cache-hit_ratio 表示较高的缓存命中率,这意味着很大一部分查询正在从缓存中受益并避免重新计算的需要。
另一方面,RocksDB中的块缓存命中率是指存储引擎内部块缓存的效率。 RocksDB 使用块缓存将频繁访问的数据块缓存在内存中,以减少磁盘 I/O。 它是一种独立于 TiDB 中的协处理器缓存的缓存机制。
两种缓存服务于不同的目的,并在 TiDB 架构中的不同级别上运行。 执行计划中的 copr-cache-hit_ratio 具体与 TiDB 中的协处理器缓存有关,而不是 RocksDB 中的块缓存。
有收获,也解释了我们的疑问