一、慢日志简述
在MySQL数据库中,每个查询都需要消耗一定的时间资源。为了定位数据库性能瓶颈,需要找出执行时间较慢的SQL语句。MySQL提供了慢日志(Slow Query Log)来记录所有执行时间超过阈值的SQL语句。
通过慢日志,可以定位到具体的查询语句和执行时间,以帮助DBA或开发人员优化MySQL数据库的性能。
二、开启MySQL慢查询日志
1. 修改MySQL配置文件
我们可以通过修改MySQL的配置文件(my.cnf)来开启慢日志的功能。在配置文件中添加以下参数:
slow_query_log = 1 #开启慢查询日志
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes = 1 #记录未使用索引的SQL语句
* slow_query_log:表示是否开启慢查询日志,1表示开启,0表示关闭;
* slow_query_log_file:指定慢查询日志文件的路径;
* log_queries_not_using_indexes:表示是否记录未使用索引的SQL语句,1表示记录,0表示不记录。
2. 重启MySQL服务器
修改完my.cnf配置文件后,需要重启MySQL服务器以使配置生效。
```
service mysql restart #重启MySQL服务
```
3. 查看慢日志文件
重启MySQL服务器后,可以查看MySQL慢日志文件是否已经生成。默认情况下,MySQL慢查询日志文件保存在/var/log/mysql/路径下。
```
cd /var/log/mysql/
tail -f mysql-slow.log #实时监控mysql-slow.log日志
```
三、开启php慢日志
1. 修改php.ini配置文件
我们可以通过修改php.ini文件来开启php的慢日志功能。在php.ini文件中添加以下参数:
```
php.ini
slowlog = /var/log/php/php-slow.log
request_slowlog_timeout = 10 (单位秒,设置超时时间)
```
* slowlog:指定慢查询日志文件的路径;
* request_slowlog_timeout:表示超时时间,单位为秒。超过这个时间的脚本将会被认为是慢脚本,并记录到慢日志中。
2. 重启php-fpm
修改完php.ini配置文件后,需要重启php-fpm服务使配置生效。
```
sudo service php-fpm restart
```
启动调试模式:
/temp/test.php?XDEBUG_SESSION_START=1
4. 查看慢日志文件
重启php-fpm服务后,可以查看php慢日志文件是否已经生成。默认情况下,php慢查询日志文件保存在/var/log/php/路径下。
```
cd /var/log/php/
tail -f php-slow.log #实时监控php-slow.log日志
```
四、总结
通过开启MySQL和php的慢查询日志,我们可以更加直观地了解到MySQL和php的执行情况,以便更好地进行性能优化工作。
五、致谢
本篇文章参考于 https://blog.csdn.net/liuxianyou666/article/details/101589462,感谢作者的无私分享。