xampp当前主流版本(mysql 5.7.33+/mariadb 10.4+)已彻底移除query_cache,配置query_cache_size或query_cache_type无效且会触发警告;优化重点应转向innodb_buffer_pool_size、max_connections和tmp_table_size等内存参数及慢查询日志分析。

query_cache 在 XAMPP 当前主流版本(MySQL 5.7.33+ / MariaDB 10.4+)中**已完全移除**,任何试图通过 query_cache_size 或 query_cache_type 启用它的配置都是无效的,还会在启动时被 MySQL 忽略或报 warning。
别白费力气调它了——这不是配置没写对,是功能本身不存在了。
为什么你查到的教程还在教设 query_cache_size?
那些文章大多基于 MySQL 5.6 或更早版本。XAMPP 7.4+(含 8.0、8.2)默认搭载的 MySQL 已彻底废弃该机制。你在 my.ini 里加了 query_cache_size = 16M,MySQL 启动日志里大概率会输出:[Warning] 'query_cache_size' is deprecated and will be removed in a future release. 或直接静默跳过。
真正影响本地查询速度的三个关键点
实际卡顿往往不出在“缓存有没有”,而出在连接、解析、执行路径上:
-
localhostvs127.0.0.1:Windows 下 PHP 连 MySQL 用localhost会走命名管道或 socket,但某些系统(尤其 Win8/10/11)会因 DNS 解析延迟卡住;换成127.0.0.1强制走 TCP,响应快几倍 - 未使用索引的
SELECT:慢查询日志里最常见的是Using filesort或Using temporary,说明 WHERE/ORDER BY 字段缺索引 - InnoDB 缓冲池太小:默认
innodb_buffer_pool_size = 16M,连一个中等 WordPress 站的 wp_posts 表都装不下,每次查都刷磁盘
怎么开慢查询日志定位真瓶颈?
这才是排查速度问题的第一步,不是调缓存:
- 编辑
XAMPP\mysql\bin\my.ini,在[mysqld]段下添加: slow_query_log = ON-
long_query_time = 0.5(记录超过 500ms 的查询) -
log_queries_not_using_indexes = ON(揪出漏建索引的语句) -
slow_query_log_file = "D:/xampp/mysql/data/slow.log"(确保目录可写) - 重启 MySQL,然后跑几轮页面请求
- 用
mysqldumpslow -s t D:/xampp/mysql/data/slow.log查看最耗时的 SQL
低配机器必须改的三项内存参数
很多“慢”其实是内存不足触发频繁 swap,不是 SQL 本身慢:
-
innodb_buffer_pool_size = 32M(1GB 内存机器设 32M;2GB 可设 64M;低于 16M 可能启动失败) -
max_connections = 30(默认 151,PHP-FPM 开 5 个进程就占满,OOM 风险高) -
tmp_table_size = max_heap_table_size = 16M(二者必须相等,否则按小值生效;设太高会让单个 GROUP BY 查询吃光内存)
query_cache 这个词现在只适合出现在兼容性文档里。











