MySQL慢查询

2021/5/13 19:27:41

本文主要是介绍MySQL慢查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 开启和设置MySQL慢查询
    • 通过命令(全局变量设置)
    • 配置文件设置
    • 注意
  • 分析慢查询日志

https://blog.csdn.net/qq_35571554/article/details/82800463


开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句;

通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。


开启和设置MySQL慢查询

可以通过配置文件或者命令开启MySQL慢查询;

查看慢查询相关参数

mysql> show variables like 'slow_query%';
+---------------------+--------------------------------------+
| Variable_name       | Value                                |
+---------------------+--------------------------------------+
| slow_query_log      | OFF                                  |
| slow_query_log_file | /var/lib/mysql/ef1f09eb8b52-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.00 sec)

通过命令(全局变量设置)

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

mysql> set global slow_query_log='ON';

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

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

查询超过1秒就记录

mysql> set global long_query_time=1;

配置文件设置

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

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 1

重启MySQL服务

service mysqld restart

注意

注意,设置slow_query_log_file时,目录必须存在,并且mysql 有权读写该目录,不然会报错;

mysql> set global slow_query_log_file='/root/slow.log';
ERROR 1231 (42000): Variable 'slow_query_log_file' can't be set to the value of '/root/slow.log'
mysql> set global slow_query_log_file='/var/lib/mysql/slow.log';
Query OK, 0 rows affected (0.00 sec)

分析慢查询日志

利用explain关键字可以模拟优化器执行SQL查询语句,来分析sql慢查询语句

mysql> EXPLAIN SELECT * FROM test_user ORDER BY id LIMIT 0,1000 ;
+----+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
| id | select_type | table     | type  | possible_keys | key     | key_len | ref  | rows | Extra |
+----+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
|  1 | SIMPLE      | test_user | index | NULL          | PRIMARY | 4       | NULL |    1 | NULL  |
+----+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
1 row in set (0.00 sec)

table显示这一行的数据是关于哪张表的
type显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL  
rows显示需要扫描行数  
key使用的索引


这篇关于MySQL慢查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程