一、什么是查询缓存
很多数据库产品都能缓存查询的执行计划,对于相同类型的 SQL 就可以跳过 SQL 解析和执行计划生成阶段。 MySQL 在某种场景下也可以实现,但是 MySQL 还有另一中不同的缓存类型:缓存完成的 SELECT 查询结果,也就是查询缓存。
MySQL 将缓存存放在一个引用表中,类似 HashMap 的数据结构, Key 查询 SQL 语句, Value 则是查询结果。当发起查询时,会使用 SQL 语句去缓存中查询,如果命中则立即返回缓存的结果集。
Tip:
- 通过
show variables like '%query_cache%';
语句获取是否开启了查询缓存,在 MySQL 中默认查询缓存是开启的; - 可以使用 SQL_NO_CACHE 在 SELECT 中禁止缓存查询结果,语法为
SELECT SQL_NO_CACHE...;
- MySQL 8.0 中已删除查询缓存功能。