mysql慢查询

什么是mysql慢查询,全称慢查询日志

  • MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
  • 具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。
  • 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合explain进行全面分析。

如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。

分析mysql性能的时候会查看数据库的哪些sql语句有问题,效率低。
作用就是: 它能记录下所有执行超过long_query_time时间的SQL语句,帮你找到执行慢的SQL,方便我们对这些SQL进行优化。
show variables like 'slow_query%';
#
Variable_name           Value
slow_query_log            ON
slow_query_log_file    /var/lib/mysql/mysql-slow.log


show variables like 'long_query_time';
#
long_query_time    10.000000

临时生效

set global slow_query_log = 1; # 只对当前数据库生效,如果MySQL重启后则会失效
set session long_query_time=1; # 对当前连接立刻生效 

永久生效

修改配置文件my.cnf, [mysqld]下增加或修改参数 slow_query_log 和slow_query_log_file后,然后重启MySQL服务器。

【mysqld】下配置: //my.cnf 或者my.ini
slow_query_log=1; 
slow_query_log_file=/var/lib/mysql/atguigu-slow.log 
long_query_time=3; 
log_output=FILE 

日志分析工具mysqldumpslow, mysqlsla

-s: 是表示按照何种方式排序; 
   c: 访问次数 l: 锁定时间 r: 返回记录 t: 查询时间 al:平均锁定时间 ar:平均返回记录数 at:平均查询时间
-t:即为返回前面多少条的数据; -g:后边搭配一个正则匹配模式,大小写不敏感的;
mysqldumpslow   /var/lib/mysql/mysql-slow.lo

# 得到的信息解释:

主要功能是, 统计不同慢sql的
出现次数(Count),
执行最长时间(Time),
累计总耗费时间(Time),
等待锁的时间(Lock),
发送给客户端的行总数(Rows),
扫描的行总数(Rows),
用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

mysqlsla : https://pan.baidu.com/s/1frrMQCYqP8KlI4VBrc6WfQ 提取码: 4at2 

tar zxvf mysqlsla-2.03.tar.gz  #解压
cd  mysqlsla-2.03  #进入安装目录
perl Makefile.PL  #配置
make  #编译
make install  #安装
原文地址:https://www.cnblogs.com/Mint-diary/p/14871135.html