跳转到主要内容

如何检查我的查询是否使用了查询缓存?

请参见以下示例,使用 clickhouse client 和 ClickHouse Cloud 服务。 创建 query_cache_test

使用 clickhouse client

向表中插入一些数据:
启用跟踪日志:
运行一条启用查询缓存的查询 (在查询末尾追加 SETTINGS use_query_cache=true) :
再次运行相同的查询:
现在请观察与 QueryCache 相关的 TRACE 日志的差异: 第 1 次执行:
第二次执行时:
在第 1 次执行时,显然没有找到对应条目 (No entry found for query SELECT...) ,因此 ClickHouse 确实为我们存储了该条目 (Stored result of query SELECT...) 。 在第 2 次执行时,该查询使用了查询缓存,因为它发现该条目已存储 (Entry found for query SELECT...) 。

仅使用 SQL

只需执行 SQL 命令,无需查看 clickhouse client 的跟踪日志, 也可以通过检查相关的 system 表来验证是否使用了查询缓存:
在上一组结果中可以看到:查询 SELECT 1 SETTINGS use_query_cache=true; 首次运行时出现了 1 次 QueryCacheMisses,而该查询第二次执行时则出现了一次 QueryCacheHits 事件。 还要注意,默认的最大缓存条目大小为 1048576 字节 (= 1 MiB) ,并且默认情况下,结果在缓存中只会保留 60 秒 (例如,你也可以在 SETTINGS 中使用 query_cache_ttl=300,将查询缓存结果的保留时间改为 5 分钟) 。 你可以在这里找到有关 ClickHouse 查询缓存的更详细信息
最后修改于 2026年7月1日