慢
sql
,顾名思义就是执行的慢的sql
语句,无论是增删改查都会存在慢sql
,一旦有大量的慢sql
出现,就会导致整个程序变慢,卡顿。
1、mysql如何开启慢sql记录(修改配置文件)
[root@jier ~]# vim etc/my.cnf
[mysqld]
# 开启慢SQL查询日志
slow_query_log=1
# 慢SQL日志文件的位置
slow_query_log_file=/data/mysql/logs/mysql-slow.log
# 慢SQL的时间阈值。超过long_query_time设定的,就会记录到/data/mysql/logs/mysql-slow.log日志文件中
long_query_time=3
[root@jier ~]# vim etc/my.cnf
以上执行完毕之后需要重启数据库方可生效哈。
2、mysql如何开启慢sql记录(临时生效,重启失效)
如果我们的数据库在最初修改配置文件的时候,没有配置有关于慢sql
的内容,且数据库已经投产了,不能重启。
那我们应该如何操作的,这种时候我们就可以通过临时生效的方式来配置。
(1)连接数据库
我们需要先连接数据库,到以下状态:

(2)查看是否开启了慢sql
记录
mysql> show VARIABLES like 'slow_query_log';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | OFF |
+----------------+-------+
1 row in set (0.00 sec)
mysql>
参数含义:
OFF:关闭
ON:开启
可以看到上面是OFF
,也就是关闭的状态,那么我们开启一下;
(3)开启慢sql
查询记录
mysql> set global slow_query_log='ON';
Query OK, 0 rows affected (0.00 sec)
mysql>
我们再查一下结果:
mysql> show VARIABLES like 'slow_query_log';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | ON |
+----------------+-------+
1 row in set (0.00 sec)
mysql>
(4)配置慢sql时长
在mysql
中默认是操作10秒的sql
是慢sql
;
mysql> show VARIABLES like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
mysql>
我们可以根据我们的需要进行手动配置,如下:
mysql> set global long_query_time = 3;
Query OK, 0 rows affected (0.00 sec)
mysql>
这样我们就配置了执行时间大于3秒的sql
都将记录到慢sql
文件中;
看下配置是否生效了没有吧;
mysql> show VARIABLES like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
mysql>
为什么没有生效呢???
注意:配置慢sql
阈值,只有重启数据库才可以生效。
(5)慢sql
日志保存位置
mysql> show VARIABLES like 'slow_query_log_file';
+---------------------+------------------------------+
| Variable_name | Value |
+---------------------+------------------------------+
| slow_query_log_file | var/lib/mysql/jier-slow.log |
+---------------------+------------------------------+
1 row in set (0.00 sec)
mysql>
修改该文件存放位置:
# 先创建该文件,并将属主属组修改成mysql
[root@jier ~]# touch home/mysql-slow.log
[root@jier ~]# chown mysql:mysql home/mysql-slow.log
# 然后执行以下语句来修改,并验证是否生效了。
mysql> set GLOBAL slow_query_log_file='/home/mysql-slow.log';
Query OK, 0 rows affected (0.00 sec)
mysql> show VARIABLES like 'slow_query_log_file';
+---------------------+----------------------+
| Variable_name | Value |
+---------------------+----------------------+
| slow_query_log_file | home/mysql-slow.log |
+---------------------+----------------------+
1 row in set (0.00 sec)
mysql>
3、慢SQL
文件简单分析
如下是一个慢sql
文件中记载内容的示例;
# Time: 2023-05-11T09:44:52.481135Z
# User@Host: devdb[devdb] @ [192.168.121.251] Id: 2099943
# Query_time: 8.165586 Lock_time: 0.000027 Rows_sent: 0 Rows_examined: 171249
SET timestamp=1657532692;
DELETE FROM `order_202207`;
以下为释义:
Time # sql开始执行的时间
User@Host # 执行sql的主机信息
Query_time # sql的查询时间
Lock_time # 锁定时间
Rows_sent # 所影响的行数
Rows_examined # 扫描的行数
以上即为本章内容。
文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




