MySQL 8.0+及XAMPP 7.4+中query_cache_size已失效,因其查询缓存功能被彻底移除;真正需优化的是innodb_buffer_pool_size,它决定InnoDB数据与索引的内存缓存大小,直接影响磁盘I/O性能。

别设 query_cache_size —— XAMPP 自带的 MySQL 5.7.33+ 或 MariaDB 10.4+ 已彻底移除查询缓存,配置项残留只会触发 warning,不生效,还干扰判断。
为什么 XAMPP 里 query_cache_size 没用
MySQL 官方从 8.0 版本起完全删除了查询缓存模块;XAMPP 当前主流版本(如 v8.2.x、v8.3.x)捆绑的 MySQL 均为 8.0+,而较旧但仍在广泛使用的 XAMPP v7.4.x 捆绑的是 MySQL 5.7.33+,该版本虽保留配置项语法,但启动时会忽略 query_cache_type 和 query_cache_size 并写入 warning 日志:[Warning] 'query_cache_size' is deprecated and will be removed in a future release.
你改了也白改,MySQL 进程根本不读它。
- 检查是否真有生效:连进 MySQL 执行
SHOW VARIABLES LIKE 'query_cache%';,结果全是OFF或0,不是你设的值 - 搜索错误日志(
XAMPP\mysql\data\mysql_error.log),大概率能看到上述 warning - 即使你用的是极老版 XAMPP(如 2015 年前的 5.6.x),高并发写入场景下开启 query cache 反而拖慢性能,锁争抢严重
真正该调的缓存参数只有 innodb_buffer_pool_size
这是 MySQL 实际在用、且影响最大的缓存区——它缓存 InnoDB 表的数据页和索引页,直接决定磁盘 I/O 频率。XAMPP 默认设为 128M(Windows)或更高,对低配机(≤2GB 内存)是内存黑洞。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 打开
XAMPP\mysql\bin\my.ini(注意不是my.cnf),定位到[mysqld]段落 - 添加或修改:
innodb_buffer_pool_size = 32M(2GB 内存机器)或16M(1GB 内存机器) - 低于
12M可能导致 MySQL 启动失败,不要硬压 - 改完必须以管理员身份重启 MySQL 服务(控制面板点“Start”或命令行运行
net start mysql) - 验证:执行
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';,返回值应与你写的完全一致
其他会误以为“是缓存”的参数,其实属于连接级资源分配
像 sort_buffer_size、tmp_table_size、read_buffer_size 等,不是全局缓存池,而是每个客户端连接独占的内存块。设太高会导致并发稍增就 OOM,尤其在 PHP 多请求场景下。
-
sort_buffer_size和read_buffer_size建议保持默认或设为64K~256K,不是越大越好 -
tmp_table_size和max_heap_table_size必须设成相同值(如16M),否则 MySQL 按小的那个生效 - 这些值不会出现在
SHOW VARIABLES LIKE '%cache%'结果里,它们跟缓存无关,只是临时计算资源
真正要盯住的只有一个数字:innodb_buffer_pool_size。其余所谓“缓存”配置,要么已废弃(query_cache_*),要么是 per-connection 开销(sort_buffer_size 类),要么是日志缓冲(innodb_log_buffer_size)——后者只在批量导入时才值得动,日常开发根本不用碰。










