什么是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 #安装