mysql慢查询日志需直接操作mysql服务开启:先执行show variables like 'slow_query_log'检查状态,再用set global slow_query_log = on开启,set global long_query_time = 1.0设阈值,set global slow_query_log_file = '/var/log/mysql/mysql-slow.log'指定路径;持久化需写入my.cnf的[mysqld]段。

phpEnv 本身不提供 MySQL 查询慢日志或索引监控功能——它只是个 PHP 运行环境管理工具,底层数据库行为完全由你连接的 MySQL 实例决定。想诊断查询慢、确认索引是否生效,必须直接操作 MySQL 服务本身。
MySQL 慢查询日志怎么开(不是 phpEnv 配置)
慢查询日志是 MySQL 自带机制,和 phpEnv 无关。你需要登录到实际运行的 MySQL 服务(本地或远程),执行以下操作:
- 检查当前状态:
SHOW VARIABLES LIKE 'slow_query_log'; - 开启日志(需 SUPER 权限):
SET GLOBAL slow_query_log = ON; - 设置阈值(单位秒):
SET GLOBAL long_query_time = 1.0; - 指定日志路径:
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
注意:这些是会话级或全局动态变量,重启后失效;如需持久化,得写进 MySQL 配置文件(如 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)的 [mysqld] 段里。
怎么确认你的 SQL 有没有走索引
在 MySQL 客户端中对目标查询加 EXPLAIN 前缀,比如:EXPLAIN SELECT * FROM users WHERE email = 'a@b.c';
重点关注返回结果中的这几列:
-
type:值为const、ref、range是健康的;ALL表示全表扫描,大概率要优化 -
key:显示实际使用的索引名;如果为NULL,说明没走索引 -
rows:预估扫描行数;远大于结果集行数时,索引效率可能不高 -
Extra:出现Using filesort或Using temporary是性能警告信号
phpEnv 环境下容易忽略的 MySQL 连接陷阱
很多人在 phpEnv 里跑 PHP 脚本查 MySQL,却忘了连接方式会影响查询表现:
- 默认用
localhost连接时,MySQL 可能走 socket 而非 TCP,这本身没问题,但EXPLAIN和慢日志分析必须在服务端执行,不能只看 PHP 输出 - PHP 中用
PDO::ATTR_EMULATE_PREPARES => true(默认)会导致 MySQL 不真正预编译,某些索引提示(如USE INDEX)可能被忽略 - phpEnv 启动的 PHP 版本若太旧(如 7.4 以下),PDO 默认不启用
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,大结果集查询可能阻塞后续语句,造成“假慢”
真正卡点往往不在 PHP 层,而在 MySQL 的配置、索引设计、查询写法三者配合上。别在 phpEnv 配置里找“索引监控开关”——那不存在。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











