千家信息网

php mysql慢查询是什么意思

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"php mysql慢查询是什么意思",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"php mysql慢查询是什么意思"这篇文章吧。
千家信息网最后更新 2026年11月03日php mysql慢查询是什么意思

这篇文章主要为大家展示了"php mysql慢查询是什么意思",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"php mysql慢查询是什么意思"这篇文章吧。

php mysql慢查询是指在日志中记录运行比较慢的SQL语句,而开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

php mysql慢查询是什么?

MySQL慢查询就是在日志中记录运行比较慢的SQL语句,这个功能需要开启才能用。

1.简介

开启慢查询日志,可以让 MySQL 记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

2、参数介绍

slow_query_log 慢查询开启状态

slow_query_log_file 慢查询日志存放的位置(这个目录需要 MySQL 的运行帐号的可写权限,一般设置为 MySQL 的数据存放目录)

long_query_time 查询超过多少秒才记录,默认是 10 秒

3、开启慢查询

(1) 查看慢查询相关参数

mysql> show variables like 'slow_query%';+---------------------------+-----------------------------------+| Variable_name             | Value                              |+---------------------------+-----------------------------------+| slow_query_log            | OFF                                || slow_query_log_file       | /usr/local/var/mysql/slow.log          |+---------------------------+-----------------------------------+mysql> show variables like 'long_query_time';+-----------------+-----------+| Variable_name   | Value     |+-----------------+-----------+| long_query_time | 10.000000 |+-----------------+-----------+

(2)设置方法

方法一:全局变量设置

将 slow_query_log 全局变量设置为 "ON" 状态

mysql> set global slow_query_log='ON';

设置慢查询日志存放的位置

mysql> set global slow_query_log_file='/usr/local/var/mysql/slow.log ';

设置慢查询时间,查询超过 1 秒就记录

mysql> set global long_query_time=1;

方法二:配置文件设置

修改配置文件 my.cnf,在 [mysqld] 下的下方加入

[mysqld]slow_query_log = ONslow_query_log_file = /usr/local/var/mysql/slow.log long_query_time = 1

(3)重启 MySQL 服务

service mysqld restart

(4)慢查询日志分析

截取一段慢查询日志:

# Time: 180918 19:06:21# User@Host: proxy[proxy] @  [192.168.0.16]  Id: 6707197# Query_time: 1.015429  Lock_time: 0.000116 Rows_sent: 1  Rows_examined: 44438SET timestamp=1537268781;select        id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag,        nodisturb_mode, nodisturb_start_time,        nodisturb_end_time, binding_time, device_os_type, app_type, state        from app_mobile_device        where user_id = '78436'            and app_type = 'YGY'        order by binding_time desc;# User@Host: proxy[proxy] @  [192.168.0.16]  Id: 6707236# Query_time: 1.021662  Lock_time: 0.000083 Rows_sent: 1  Rows_examined: 44438SET timestamp=1537268781;select        id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag,        nodisturb_mode, nodisturb_start_time,        nodisturb_end_time, binding_time, device_os_type, app_type, state        from app_mobile_device        where user_id = '14433'            and app_type = 'YGY'        order by binding_time desc;

这里可以看到:

Query_time (慢查询语句的查询时间) 都超过了设置的 1s,

Rows_sent (慢查询返回记录) 这里只返回了 1 条

Rows_examined (慢查询扫描过的行数) 44438 -> 通过这里大概可以看出问题很大

现在将这个 SQL 语句放到数据库去执行,并使用 EXPLAIN 分析 看下执行计划

EXPLAIN                                select                                         id, user_id, device_uuid, bd_client_id, bd_user_id, bd_tag,                                nodisturb_mode, nodisturb_start_time,                                  nodisturb_end_time, binding_time, device_os_type, app_type, state                                  from app_mobile_device                                 where user_id = '78436'                                        and app_type = 'YGY'                               order by binding_time desc;

查询结果是:

解释下参数:

这里可以发现:rows 为查询的行数,查询了 4w 多行,那慢是肯定的了。

因为这里是好几个条件,并且没有使用一个索引,那就只能给添加索引了,

这里给选择添加普通多列索引,因为这个表在最开始设计出问题了,导致有重复的数据,不能设置唯一索引了。

ALTER  TABLE  app_mobile_device  ADD  INDEX user_app_type_only (  `user_id` ,`app_type` )

索引设置了,再看下刚的 SQL 的执行计划。

可以发现 rows 的检查行数,很明显的下降了。

到此,慢查询的使用和优化就基本完成了。

以上是"php mysql慢查询是什么意思"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

查询 日志 语句 数据 索引 性能 时间 分析 意思 内容 参数 数据库 方法 篇文章 系统 运行 位置 全局 变量 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网新科技 广东万易互联网科技有限公司惠州分公司 科技互联网龙头 互联网科技公司税收优惠 金诺互联网科技 互联网高科技企业 互联网高科技股票 天扬科技互联网广告 互联网巨头投资的硬核科技 华脉科技工业互联网产品 博兴的互联网电子科技公司 现代科技和互联网有关系吗 世界互联网科技公司市值排名 互联网科技公司实习生 速维有品互联网信息科技(苏州)有限公司 链环科技传统企业怎么转型互联网 互联网保险科技创业 有人说阿里系是互联网科技企业 福建互联网展示科技馆设计 三亚科技创新互联网基地 关于新基建和互联网科技 鑫亿盛互联网科技 互联网科技上市公司 苏州大垚互联网科技 火传媒上海互联网科技 互联网金融科技公司干啥的 电子科技大学互联网创业大赛 四川互联网展示科技馆设计 互联网风格科技公司名称 现代科技的标志之一的互联网
0