视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL慢查询的2种分析方案_MySQL
2020-11-09 17:26:43 责编:小采
文档


MySQL查询

以下的文章主要介绍的是MySQL慢查询分析方法,前一段日子,我曾经设置了一次记录在MySQL数据库中对慢于1秒钟的SQL语句进行查询。想起来有几个十分设置的方法,有几个参数的名称死活回忆不起来了,于是重新整理一下,自己做个笔记。

对于排查问题找出性能瓶颈来说,最容易发现并解决的问题就是MySQL慢查询以及没有得用索引的查询。

OK,开始找出MySQL中执行起来不“爽”的SQL语句吧。

MySQL慢查询分析方法一:

这个方法我正在用,呵呵,比较喜欢这种即时性的。

MySQL5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。

  1. MySQL> show variables like 'long%';

注:这个long_query_time是用来定义慢于多少秒的才算“慢查询”

  1. +-----------------+-----------+
  2. | Variable_name | Value |
  3. +-----------------+-----------+
  4. | long_query_time | 10.000000 |
  5. +-----------------+-----------+
  6. 1 row in set (0.00 sec)
  7. MySQL> set long_query_time=1;

注: 我设置了1, 也就是执行时间超过1秒的都算慢查询。

  1. Query OK, 0 rows affected (0.00 sec)
  2. MySQL> show variables like 'slow%';
  3. +---------------------+---------------+
  4. | Variable_name | Value |
  5. +---------------------+---------------+
  6. | slow_launch_time | 2 |
  7. | slow_query_log | ON |

注:是否打开日志记录

  1. | slow_query_log_file | /tmp/slow.log |

注: 设置到什么位置

  1. +---------------------+---------------+
  2. 3 rows in set (0.00 sec)
  3. MySQL> set global slow_query_log='ON'

注:打开日志记录

一旦slow_query_log变量被设置为ON,MySQL会立即开始记录。

/etc/my.cnf 里面可以设置上面MySQL全局变量的初始值。

  1. long_query_time=1
  2. slow_query_log_file=/tmp/slow.log

MySQL慢查询分析方法二:

MySQLdumpslow命令

  1. /path/MySQLdumpslow -s c -t 10 /tmp/slow-log

这会输出记录次数最多的10条SQL语句,其中:

-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;

-t, 是top n的意思,即为返回前面多少条的数据;

-g, 后边可以写一个正则匹配模式,大小写不敏感的;

比如

  1. /path/MySQLdumpslow -s r -t 10 /tmp/slow-log

得到返回记录集最多的10个查询。

  1. /path/MySQLdumpslow -s t -t 10 -g “left join” /tmp/slow-log

得到按照时间排序的前10条里面含有左连接的查询语句。

以上的相关内容就是对MySQL慢查询分析的介绍,望你能有所收获。

下载本文
显示全文
专题