如何调整MySQL 5.7及以下版本的query_cache_size以配置查询缓存?
- 内容介绍
- 文章标签
- 相关推荐
本文共计956个文字,预计阅读时间需要4分钟。
在MySQL 5.7及更早版本中,`query_cache_size` 是决定查询缓存是否真正启用的关键参数。通过设置 `query_cache_type` 为 `ON` 或 `1`,确保查询缓存被正确启用。只有当 `query_cache_size` 设置为 `0` 时,查询缓存才不会工作——即使内存分配了查询缓存。
常见误操作是只改了 query_cache_type,却忽略 query_cache_size 仍为默认的 0,导致以为开了缓存,实际完全没生效。
-
query_cache_size=0:强制禁用,不管type是什么值 -
query_cache_size=1048576(1M):最小有效值,低于此值 MySQL 启动时会自动设为0 - 建议初值设为
20971520(20M),再根据Qcache_free_memory和Qcache_lowmem_prunes监控调整
为什么不能盲目调大 query_cache_size
过大的 query_cache_size 不仅浪费内存,还会加剧锁竞争和碎片问题。查询缓存使用全局互斥锁(single mutex)管理,高并发下多个线程争抢同一把锁,反而拖慢整体查询速度。
本文共计956个文字,预计阅读时间需要4分钟。
在MySQL 5.7及更早版本中,`query_cache_size` 是决定查询缓存是否真正启用的关键参数。通过设置 `query_cache_type` 为 `ON` 或 `1`,确保查询缓存被正确启用。只有当 `query_cache_size` 设置为 `0` 时,查询缓存才不会工作——即使内存分配了查询缓存。
常见误操作是只改了 query_cache_type,却忽略 query_cache_size 仍为默认的 0,导致以为开了缓存,实际完全没生效。
-
query_cache_size=0:强制禁用,不管type是什么值 -
query_cache_size=1048576(1M):最小有效值,低于此值 MySQL 启动时会自动设为0 - 建议初值设为
20971520(20M),再根据Qcache_free_memory和Qcache_lowmem_prunes监控调整
为什么不能盲目调大 query_cache_size
过大的 query_cache_size 不仅浪费内存,还会加剧锁竞争和碎片问题。查询缓存使用全局互斥锁(single mutex)管理,高并发下多个线程争抢同一把锁,反而拖慢整体查询速度。

