xampp 自带的 mysql 5.7.33+ 或 mariadb 10.4+ 已彻底移除查询缓存,querycache* 配置无效;应删除相关配置,重点调优 innodb_buffer_pool_size、max_connections 等实际生效参数。

别改了——XAMPP 自带的 MySQL 5.7.33+ 或 MariaDB 10.4+ 已彻底移除查询缓存,配置项只是残留垃圾。
查 my.ini 里还有没有 query_cache_type
打开 XAMPP\mysql\bin\my.ini(不是 my.cnf),在 [mysqld] 段落里搜 query_cache。如果看到类似:
query_cache_type = 1 query_cache_size = 16M
这些行已经无效。MySQL 启动时会忽略它们,并在错误日志里写一句 warning,但不会报错,容易让人误以为“还在生效”。
- MySQL 5.7 是最后一个支持查询缓存的大版本,但 XAMPP 7.4+ 默认捆绑的 MySQL 5.7.33 起已默认关闭且不加载模块
- MariaDB 10.4+ 和所有 MySQL 8.0+ 版本直接删掉了相关代码,
SHOW VARIABLES LIKE 'query_cache%'会返回空结果 - 如果你用的是较老 XAMPP(如 7.2.x),才可能真有作用;但低配机上它反而拖慢性能
运行 SHOW VARIABLES LIKE 'query_cache%' 看是否真存在
连进 MySQL 执行这句:
mysql> SHOW VARIABLES LIKE 'query_cache%';
如果返回空集,说明查询缓存根本没编译进去,改配置毫无意义。
- 返回结果含
query_cache_type且值为OFF或0,也等于没开——不是“被你关了”,而是启动时就跳过了 - 哪怕你手动 SET GLOBAL,也会提示
Unknown system variable或直接静默失败 - 别信网上教程里“调大
query_cache_size能提速”的说法,那是针对 2015 年前的老环境
真正该调的内存参数是 innodb_buffer_pool_size
用户想“优化缓存”,实际卡顿根源几乎全是 innodb_buffer_pool_size 设得太高。XAMPP 默认设成 128M,2GB 内存机器一开 MySQL 就占 500MB+。
- 打开
my.ini,在[mysqld]下加或改这一行:innodb_buffer_pool_size = 32M - 如果只用 MyISAM 表(比如老 WordPress),可压到
16M;低于12M可能启动失败 - 改完必须用管理员身份重启 MySQL 服务,否则配置不加载
-
innodb_buffer_pool_size是实打实常驻内存的,且 MySQL 不会主动释放——这才是你看到“启动就吃光内存”的元凶
真正影响性能的是缓冲池和连接内存,不是那个早就下线的查询缓存。删掉所有 query_cache_* 配置,专注调 innodb_buffer_pool_size、max_connections 和禁用冗余引擎,才对低配机有效。











