慢查询日志

环境: ubuntu14.04    mysql5.7

当查询超过一定时间没有返回结果的时候,才会记录慢查询日志

慢查询日志可以找到执行效率缓慢的sql语句,为数据库优化做提供帮助

慢查询日志默认不开启也不必一直开启,需要进行采样分析时手动开启

相关参数

        slow-querg-log=on/off
            -- 是否开启慢查询日志
        slow_query_log_file=filename
            指定慢查询日志保存路径及文件名,默认存放/usr/local/mysql/data/hostname-slow.log
        long_query_time=2
            -- 指定2秒后未返回结果的的查询语句属于慢查询
        long-queries-not-using-indexes
            -- 记录所有没有使用到索引的查询语句
        min_examined_row_limit=1000
            -- 记录那些由于查找了多余1000次而引发的慢查询
        log-slow-admin-statements
            -- 记录那些慢的OPTIMIZE TABLE,ANAKYZE TABLE和ALTER TABLE语句
        log-slow-slave-statements
            -- 记录由slave所产生的慢查询



一、启动

-参数中写入my.cnf文件中,需重启

-不重启修改慢查询配置

        SET global.slow_query_log=1            开启慢查询日志
        SET global.long_query_time=3           3秒后未返回结果的的查询语句属于慢查询
        其他命令可以通过以下命令查阅
            > show variables like ‘%slow%‘;

二、慢查询日志分析工具

1.mysqldumpslow

mysql自带分析工具,不宜看出,只做简单统计

2.mysqlsla

backmysql.com 出品的分析工具

·下载

官网下载或在系统提示符下下载

            # wget http://backmysql.com/scripts/mysqlsla-2.03.tar.gz

       ·解压

            # tar zxvf mysqlsla-2.03.tar.gz                
                mysqlsla-2.03/
                mysqlsla-2.03/Changes
                mysqlsla-2.03/INSTALL
                mysqlsla-2.03/README
                mysqlsla-2.03/Makefile.PL
                mysqlsla-2.03/bin/
                mysqlsla-2.03/bin/mysqlsla
                mysqlsla-2.03/META.yml
                mysqlsla-2.03/lib/
                mysqlsla-2.03/lib/mysqlsla.pm
                mysqlsla-2.03/MANIFEST
            # cd mysqlsla-2.03/                              //进入安装目录//

·执行perl脚本检查包依赖关系

            # perl Makefile.PL                               //配置//

·编译 安装

            # make
            # make install

使用方法

            # mysqlsla -lt slow nengjian-slow.log
Report for slow logs: nengjian-slow.log
2 queries total, 1 unique
Sorted by ‘t_sum‘
Grand Totals: Time 7 s, Lock 0 s, Rows sent 2, Rows Examined 0
______________________________________________________________________ 001 
Count         : 2  (100.00%)
Time          : 7.001213 s total, 3.500606 s avg, 3.000447 s to 4.000766 s max  (100.00%)
Lock Time (s) : 0 total, 0 avg, 0 to 0 max  (0.00%)
Rows sent     : 1 avg, 1 to 1 max  (100.00%)
Rows examined : 0 avg, 0 to 0 max  (0.00%)
Database      :
Users         :
        [email protected]  : 100.00% (2) of query, 100.00% (2) of all users
Query abstract:
SET timestamp=N; SELECT sleep(N);
Query sample:
SET timestamp=1464159700;
select sleep(3);

3.percona-toolkit   (未)

依赖包

percona-toolkit

perl-IO-Socket-SSL

perl-Net-libIDN

perl-Net-SSLesy

三、删除慢查询日志

慢查询日志会不断的增长。因此只在做采样分析这样的特别工作时才开启,其他时候则是关闭的,无用的慢查询日志要及时删除。

1.关闭慢查询日志

注释掉my.cnf 配置文件中关于慢查询日志的参数

2.删除日志文件

# rm -f /usr/local/mysql/data/hostname-slow.log

时间: 2024-10-06 00:16:32

慢查询日志的相关文章

Elasticsearch慢查询日志分析

目前架构: n台filebeat客户端来将每台应用上的日志传到kafka,3台kafka做集群用于日志队列,四台ES做集群,前两台存放近两天热数据日志,后两台存放两天前的历史日志,数据保存一个月,目前总数据量6T.logstash与kibana与ES在一台机器上,kibana访问域名三个kibana做轮询, 目前ELK中发现有些索引查询有点慢,于是打开ES索引查询日志来记录慢查询,进而对慢查询日志进行分析,定位问题.慢日志内容如下: [2017-08-28T11:21:02,377][WARN 

Mysql慢查询日志脚本

#!/bin/bash LOG=/diskb/mysql/slowlog/   #定义日志存储路径 DATE=`date +"%Y-%m-%d"`   #定义时间参数 user=root                                 #填写MySQL账户信息 passwd=123456 mysql -u$user -p$passwd -e "set global slow_query_log=0" #停止mysql慢查询日志 mysql -u$us

MYSQL开启慢查询日志实施

查看当前服务器是否开启慢查询: 1.快速办法,运行sql语句show VARIABLES like "%slow%" 2.直接去my.conf中查看. my.conf中的配置(放在[mysqld]下的下方加入) [mysqld] log-slow-queries = /usr/local/mysql/var/slowquery.loglong_query_time = 1  #单位是秒log-queries-not-using-indexes 使用sql语句来修改:不能按照my.con

mysql慢查询日志分析工具mysqlsla

一.介绍    mysqlsla是一个分析mysql慢日志的工具,可以分析出慢查询的原因,包括执行某条sql出现的次数及在slow log数据的百分比.执行时间.等待销的时间等. 公司的数据库有很多慢查询日志,导致的系统的负载很高,而mysql慢查询日志文件内容格式不太好看,经推荐使用mysqlsla:使用方便,操作简单. 二.安装mysqlsla 系统环境 CentOS release 6.6 (Final) 2.6.32-504.el6.x86_64 官网已经不能下载,所需要的文件已在百度云

mysql慢查询日志

1.如何开启慢查询日志cd /etc/my.cnf[mysqld]log-slow-queries=/var/lib/mysqllong_query_time=n 停止mysql启动mysql -----------------------------------2.删除慢查询日志 1)直接删除即可2)#mysqladmin -u root -poracle flush-logs 注释:重新生成一个

Mysql慢查询日志过程

原创地址 :http://itlab.idcquan.com/linux/MYSQL/922126.html mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考.本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步. 1.mysql慢查询日志 打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加

Mysql--慢查询日志之一

慢查询日志 1.当查询超过一定时间没有返回结果的时候,才会记录进慢查询日志. 2.慢查询日志可以帮助DBA找出执行效率缓慢的SQL语句,为数据库优化工作提供帮助. 3.慢查询日志默认是不开启的,也没必要一直开启.(如果开启必定会消耗系统的性能) 4.当需要进行采样分析时手工开启. 慢查询日志相关参数 mysql.cnf中修改以下配置后,需要重新启动数据库服务使之生效. slow_query_log=on|off---是否开启慢查询日志 slow_query_log_file=filename--

MySQL慢查询日志相关的配置和使用。

MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的参考依据,是一个非常实用的功能,MySQL慢查询日志的开启和配置非常简单,可以指定记录的文件(或者表),超过的时间阈值等就可以记录到慢sql了,实话讲,相比较sqlserver的trace或者扩展事件(虽然此二者的作用并非仅仅如此),MySQL的配置总是给人一种非常清爽的感觉. 1,慢查询日志的打开 正常情况下,只需要在配置文件中增加slow_query_log = 1配置,即打开慢查询日志,未指定slow_query_

MySQL高级-慢查询日志

一.慢查询日志是什么 1. 2. 3. 2.开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? 3.案例 1.查看当前多少秒算慢 2.设置慢的阙值时间 3.为什么设置后看不出变化? 4.记录慢SQL并后续分析 5.查询当前系统中有多少条慢查询记录 4.配置版 4.日志分析工具mysqldumpslow ① ②查看mysqldumpslow的帮助信息

MySQL 普通查询日志 和 慢查询日志介绍

1. 普通查询日志(general query log)介绍 普通查询日志记录客户端连接信息和执行的sql语句信息 1.1 临时开启general_log日志开关 mysql> show variables like 'general_log%'; +------------------+---------------------------+ | Variable_name    | Value                     | +------------------+-------