You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL/MariaDB中query_cache_size与query_cache_limit的区别是什么?

MySQL/MariaDB中query_cache_size与query_cache_limit的核心差异

嘿,刚好对这俩参数熟得很,给你掰扯清楚它们的核心差异:

1. query_cache_size:查询缓存的总内存“池子”

  • 本质是整个查询缓存区的总内存上限,MySQL会专门划出这么一块内存来存储符合缓存条件的查询结果。比如你设置query_cache_size=64M,就意味着给查询缓存分配了64MB的专属内存。
  • 关键细节:如果把这个值设为0,就直接关闭了查询缓存功能;值太小的话,缓存的结果很快会被新结果挤出去,起不到缓存加速的作用;但也不能设得过大,不然会占用过多系统内存,甚至引发缓存碎片问题,拖慢数据库性能。

2. query_cache_limit:单个查询结果的缓存“准入门槛”

  • 这是单个查询结果能被缓存的最大大小阈值。举个例子,如果你设置query_cache_limit=2M,那任何查询结果超过2MB的请求,哪怕当前缓存池还有剩余空间,MySQL也不会把它放进缓存里。
  • 设计目的:用来过滤掉大结果集的查询——这类查询要么占缓存空间太大,要么很少被重复执行,缓存它们性价比极低,反而会浪费宝贵的缓存资源。

关键差异总结

  • 作用范围:query_cache_size是全局总容量控制,管的是整个缓存池的大小;query_cache_limit是单条结果的准入控制,针对每个独立查询。
  • 控制逻辑:query_cache_size决定“缓存总共能存多少东西”,query_cache_limit决定“单个东西能不能被存进来”。
  • 配置影响:调大query_cache_size能容纳更多小结果的缓存(只要总容量允许);调大query_cache_limit可能会让大结果集进入缓存,导致缓存池被快速占满,反而影响其他高频小查询的缓存效率。

内容的提问来源于stack exchange,提问作者Elijah Lynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:33:44