MySQL 5.6+ 应使用 slow_query_log 等新变量名,废弃 log_slow_queries;需在 my.ini 的 [mysqld] 段下配置,设 slow_query_log=1、slow_query_log_file 和 long_query_time,并重启服务验证生效。

确认 MySQL 版本和配置语法差异
XAMPP 5.6.21 内置的是 MySQL 5.6(或 MariaDB 兼容版),但很多网上教程混用旧参数,比如 log_slow_queries 或 log-slow-queries,这些在 5.6+ 已被废弃,直接执行会报错 Error 1193 (HY000): Unknown system variable 'log_slow_queries'。必须改用新变量名:slow_query_log、slow_query_log_file、long_query_time。
验证当前版本:启动 XAMPP 控制面板 → 点击 MySQL 的 Shell 按钮,输入:
mysql -u root -p -- 输入密码(默认为空)后执行: SELECT VERSION();
若返回类似 5.6.21 或 10.1.13-MariaDB,就按对应语法操作;MariaDB 行为基本兼容,但部分变量名略有不同(如 slow_query_log_file 仍可用)。
修改 my.ini 并设置可写路径
XAMPP 的 MySQL 配置文件是 C:\xampp\mysql\bin\my.ini(Windows)或 /opt/lampp/etc/my.cnf(Linux)。关键不是“加几行”,而是加在正确位置:必须放在 [mysqld] 段落下,否则不生效。
在 [mysqld] 下添加或修改以下三行:
slow_query_log = 1-
slow_query_log_file = "C:/xampp/mysql/data/mysql-slow.log"(Windows 路径需用正斜杠或双反斜杠,且目录必须存在) -
long_query_time = 2(单位秒,设为 0 可记录所有查询,仅调试用)
注意:mysql/data/ 目录需对运行 MySQL 的用户(通常是 SYSTEM 或 mysql 用户)有写权限。如果日志不生成,先检查该目录是否存在、是否为空、是否被杀毒软件拦截。
动态开启 vs 配置文件开启的区别
通过命令行临时开启(重启后失效):
SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 2;
但 XAMPP 中常遇到问题:SET GLOBAL 不影响已存在的连接,且某些 MariaDB 版本对 slow_query_log 的全局设置有延迟或限制。更可靠的做法是:改完 my.ini 后,彻底停止 MySQL 服务(XAMPP 控制面板点 Stop),再重新 Start —— 不是“Restart”,因为部分进程可能残留。
验证是否生效:
-
SHOW VARIABLES LIKE 'slow_query_log';应返回ON -
SHOW VARIABLES LIKE 'slow_query_log_file';应显示你指定的路径 -
SHOW VARIABLES LIKE 'long_query_time';确认数值符合预期
再执行一条慢查询测试:SELECT SLEEP(3);,然后去指定路径查看 mysql-slow.log 文件是否新增了记录。
日志文件权限与监控落地的关键点
很多人配置完发现日志文件始终为空,最常见原因不是配置错,而是:MySQL 进程没权限往目标路径写入。XAMPP 默认以管理员或 SYSTEM 身份运行,但如果你把 slow_query_log_file 设到桌面、文档等用户目录,容易因 UAC 或权限策略失败。
稳妥做法:
- 坚持用默认数据目录:
C:/xampp/mysql/data/(Windows)或/opt/lampp/var/mysql/(Linux) - 确保该目录下存在空的
mysql-slow.log文件(手动新建并留空,避免首次写入时因父目录无权创建文件而静默失败) - 不要依赖
log_queries_not_using_indexes = 1来“补漏”——它会极大增加日志体积,且对性能影响比slow_query_log更明显
真正做数据库性能监控时,光有日志不够;你需要定期用 mysqldumpslow 分析,例如:mysqldumpslow -s c -t 10 "C:/xampp/mysql/data/mysql-slow.log" 查看调用次数最多的 10 条慢 SQL。这个工具就在 C:/xampp/mysql/bin/ 下,别漏掉它。











