xampp 7.4+ 自带 mysql 5.7.33+ 已彻底移除查询缓存,query_cache_size 配置无效且会触发 warning;真正需调优的是 innodb_buffer_pool_size(低配机设为 32m 或 16m)、tmp_table_size 与 max_heap_table_size(同设为 16m)等核心内存参数。

别调 query_cache_size —— 它在 XAMPP 自带的 MySQL 5.7.33+ 和 MariaDB 10.4+ 中已彻底移除,配置项残留只会干扰判断。
为什么改 query_cache_size 没用还可能报 warning
XAMPP 7.4+ 默认捆绑 MySQL 5.7.33 或更高版本,官方已在该版本中完全删除查询缓存模块。即使你在 my.ini 里写上:
query_cache_type = 1 query_cache_size = 16M
MySQL 启动时会直接忽略这两行,并在错误日志里记一条 warning,比如:
[Warning] 'query_cache_size' is deprecated and will be removed in a future release.
这不是“没生效”,而是压根不认——连加载都不加载。
常见误操作包括:复制老教程配置、用 MySQL 5.6 的调优文档套用到新版 XAMPP、或看到 SHOW VARIABLES LIKE 'query%' 返回空结果后反复重试修改。
怎么确认你的 XAMPP 已禁用查询缓存
连进 MySQL 执行:
SHOW VARIABLES LIKE 'have_query_cache';
返回值一定是:
have_query_cache | NO
再执行:
SHOW VARIABLES LIKE 'query%';
结果为空集,或只返回 query_cache_wlock_invalidate 这类废弃变量(值为 OFF)。
如果看到 query_cache_size 显示非零值,说明你连的是旧版 MySQL(比如手动装了 5.6),不是 XAMPP 自带的默认实例。
真正该调的缓冲区:innodb_buffer_pool_size 和临时表参数
低配电脑(2GB 内存)下,query_cache_size 不但无效,还会让人误以为“还有缓存可挖”,反而忽略真正吃内存的大头:
-
innodb_buffer_pool_size:XAMPP 默认设为 128M,但低配机应压到32M或16M;低于12M可能启动失败 -
tmp_table_size和max_heap_table_size:必须设为相同值(如16M),否则 MySQL 按较小值生效 -
sort_buffer_size和read_buffer_size:每连接独占,设成64K足够,设高了反而加速 OOM
这些参数都在 XAMPP\mysql\bin\my.ini 的 [mysqld] 段落下修改,改完必须用管理员身份重启 MySQL 服务(XAMPP 控制面板点 “Stop” 再 “Start”,或命令行 net stop mysql && net start mysql)。
最容易被忽略的一点:XAMPP 的 my.ini 里常混着多段重复配置(比如两个 [mysqld]),改错位置会导致参数完全不生效;务必确认你编辑的是最下方那个、且未被注释掉的 [mysqld] 块。











