首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维教程数据库【mysql】mysql调优时必须掌握的慢查询语句排查命令

【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,连接数信息(准确度不高)

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

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

本文链接:http://www.geekyunwei.com/1200.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部