MySQL 查询缓存机制
了解MySQL查询缓存的工作原理、配置及在8.0版本中的移除。 · 难度:入门 · +15XP
MySQL 查询缓存
查询缓存是MySQL早期版本提供的一种优化机制,它将SELECT语句及其结果集以键值对形式缓存到内存中。当相同查询再次发生时,直接从缓存返回结果,避免重复执行。
工作原理
缓存Key由查询语句、数据库名称、客户端协议版本等组成,要求查询完全一致(包括大小写和空格)。任何对表的写操作(INSERT、UPDATE、DELETE)都会使该表相关的所有缓存失效。
配置参数
| 参数 | 说明 |
|---|---|
| query_cache_type | 0=关闭,1=开启,2=按需(使用SQL_CACHE) |
| query_cache_size | 缓存总大小(字节),0表示禁用 |
| query_cache_limit | 单个缓存结果的最大大小 |
MySQL 8.0的变更
从MySQL 8.0开始,查询缓存已被完全移除,因为它在高并发场景下存在严重锁竞争问题,且缓存命中率不稳定。现代替代方案包括应用层缓存(如Redis)或ProxySQL。
练习提示
在5.7版本中,可以尝试开启查询缓存并观察命中率变量Qcache_hits和Qcache_inserts。本练习使用模拟变量展示缓存效果。