极客进化岛
技术自由路

【mysql】mysql调优时必须掌握的慢查询语句排查命令

文章目录

前言:
开启并设置慢查询语句的时间
1. 查看是否开启慢查询语句
2. 开启慢查询
3. 修改满查询定义的时间
4. 开启 记录没有使用索引的查询
5. 查询有多少慢查询记录
分析工具

前言:

mysql慢查询日志用来记录mysql在相应时间内超过阈值的语句。 阈值定义在long_query_time里。

mysql> show variables like '%long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

从上面的查询出来的结果可以看到,long_query_time的默认值为10,意思是运行10S以上的语句定义为慢查询语句。
当然这个数字你可以进行修改,今天我们就来聊聊在做mysql调优时,必会的那些慢查询语句。

开启并设置慢查询语句的时间

1. 查看是否开启慢查询语句

在这里插入图片描述

2. 开启慢查询
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)

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

zmgaosh  致码高胜寒

3. 修改满查询定义的时间

方法一: 在数据库里设置

mysql> set global long_query_time=4;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 4.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
致码高胜寒提示: 这里设置完有时候不生效,需要退出并重新连接数据库即可。
zmgaosh

方法二: 在配置文件里设置

在[my.ini]中添加如下信息:

[mysqld]

log-slow-queries=" /var/run/mysqld/mysqld-slow.log"  ## mysql慢查询日志目录

long_query_time = 4    ## 最长执行时间(超过这个时间就背记录到慢查询日志里)

log-queries-not-using-indexes  ## 没有使用索引的查询也被记录在日志里
4. 开启 记录没有使用索引的查询

在这里插入图片描述
设置开启:

mysql> set global log_queries_not_using_indexes=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON    |
+-------------------------------+-------+
1 row in set (0.00 sec)
zmgaosh
5. 查询有多少慢查询记录
mysql> show global status like '%Slow-queries%';
Empty set (0.00 sec)

分析工具

  1. mysqldumpslow
  2. show processlist
  3. explain
  4. 使用zabbix监控获取数据的IO,cpu,连接数信息(准确度不高)

在这里前三个工具经常使用,最后一个用的比较少,因为可靠度不够。

床前明月光,我是高胜寒,欢迎收藏,我们下篇文章见!

赞(0)
未经允许不得转载:极客进化岛 » 【mysql】mysql调优时必须掌握的慢查询语句排查命令