查询缓存8.0
1. SQL 语句
SHOW STATUS LIKE '%Qcache%';
2. 各状态变量含义及解释
| 变量名 | 含义解释 |
|---|---|
| Qcache_free_blocks | 表示查询缓存中剩余的 block 数,若该值较大,说明查询缓存内存碎片过多,可适时整理 |
| Qcache_free_memory | 查询缓存的内存大小,可通过该参数判断查询内存是否够用,DBA 可据此调整 |
| Qcache_hits | 命中缓存的次数,数值越大,缓存效果越理想 |
| Qcache_inserts | 未命中缓存后插入的次数,次数越多说明缓存应用越少,系统刚启动时为空是正常的 |
| Qcache_lowmem_prunes | 因内存不足被移出查询缓存的查询条数,可通过该值调整缓存大小 |
| Qcache_not_cached | 因 query_cache_type 设置而未被缓存的查询数量 |
| Qcache_queries_in_cache | 当前缓存中缓存的查询数量 |
| Qcache_total_blocks | 当前缓存的 block 数量 |

1. MySQL 版本与查询缓存功能差异
- MySQL 8.0:查询缓存功能已被移除,执行
SHOW STATUS LIKE '%Qcache%'会返回空结果。 - MySQL 5.7:查询缓存功能存在,可通过相关命令和参数配置。
2. 关键命令与参数
- 查看查询缓存类型:
若返回值为SHOW GLOBAL VARIABLES LIKE '%query_cache_type%';OFF,表示查询缓存已关闭。 - 显式指定缓存的查询语句:
SELECT SQL_CACHE * FROM test WHERE ID = 5; - SELECT SQL_CACHE * FROM test WHERE ID = 5;
query_cache_type参数取值及含义:0:关闭查询缓存(OFF)。1:开启查询缓存(ON),默认情况下所有查询都会被缓存。2(DEMAND):按需使用查询缓存,只有在 SQL 语句中显式使用SQL_CACHE关键词时,查询结果才会被缓存。
- 配置示例(按需缓存):
该设置下,默认 SQL 语句不使用查询缓存,仅显式指定query_cache_type=2SQL_CACHE的查询会被缓存。
