美文网首页
mysql慢查询

mysql慢查询

作者: 一剑仙人跪_ | 来源:发表于2019-08-19 11:48 被阅读0次

    转自:https://www.cnblogs.com/luyucheng/p/6265594.html

    一、简介

    开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

    二、参数说明

    slow_query_log 慢查询开启状态
    slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
    long_query_time 查询超过多少秒才记录

    三、设置步骤

    1.查看慢查询相关参数

    mysql> show variables like 'slow_query%';
    +---------------------------+----------------------------------+
    | Variable_name             | Value                            |
    +---------------------------+----------------------------------+
    | slow_query_log            | OFF                              |
    | slow_query_log_file       | /mysql/data/localhost-slow.log   |
    +---------------------------+----------------------------------+
    
    mysql> show variables like 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    
    
    

    2.设置方法
    方法一:全局变量设置
    将 slow_query_log 全局变量设置为“ON”状态

    mysql>set global slow_query_log='ON';
    

    设置慢查询日志存放的位置

    mysql>set global slow_query_log_file='/usr/local/mysql/data/slow.log';
    

    查询超过1秒就记录

    mysql> set global long_query_time=1;
    

    方法二:配置文件设置
    修改配置文件my.cnf,在[mysqld]下的下方加入

    [mysqld]
    slow_query_log = ON
    slow_query_log_file = /usr/local/mysql/data/slow.log
    long_query_time = 1
    

    3.重启MySQL服务

    4.查看设置后的参数

    mysql> show variables like 'slow_query%';
    +---------------------+--------------------------------+
    | Variable_name       | Value                          |
    +---------------------+--------------------------------+
    | slow_query_log      | ON                             |
    | slow_query_log_file | /usr/local/mysql/data/slow.log |
    +---------------------+--------------------------------+
    
    mysql> show variables like 'long_query_time';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 1.000000 |
    +-----------------+----------+
    

    四、测试

    1.执行一条慢查询SQL语句

    mysql> select sleep(2);
    

    2.查看是否生成慢查询日志

    cat /usr/local/mysql/data/slow.log
    

    如果日志存在,MySQL开启慢查询设置成功!

    3.查询有多少条慢查询记录,可以使用Slow_queries系统变量

    mysql> show global status like '%Slow_queries%';
     +---------------+-------+
     | Variable_name | Value |
     +---------------+-------+
     | Slow_queries  | 8     |
     +---------------+-------+
    

    4.mysqldumpslow工具

    得到访问次数最多的10个SQL
    mysqldumpslow -s c -t 10 slow.log
    

    查看更多:
    MySQL优化
    MySQL各存储引擎
    MySQL锁详解
    MySQL事务
    MySQL索引类型

    分析:
    MySQL慢查询优化 EXPLAIN详解 - jerome_s的博客 - CSDN博客 https://blog.csdn.net/Jerome_s/article/details/52589860
    Mysql慢查询日志的使用 和 Mysql的优化 - m_nanle_xiaobudiu - CSDN博客 https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79288257

    五. mysqlsla 日志分析命令使用

    [root@server-10 ~]# mysqlsla -lt slow --sort t_sum --top 20 mysql-slow.log > /tmp/select.log
    
    // 查询记录最多的20个sql语句,并写到select.log中去。
    [root@server-10 ~]# mysqlsla -lt slow  -sf "+select" -top 100  mysql-slow.log >/tmp/sql_select.log
    
    // 统计慢查询文件为mysql-slow.log中的所有select的慢查询sql,并显示执行时间最长的100条sql,并写到sql_select.log中去
    [root@server-10 ~]# mysqlsla -lt slow  -sf "+select,update" -top 100 -sort c_sum  -db mydata mysql-slow.log >/tmp/sql_num.log
    
    // 统计慢查询文件为mysql-slow.log的数据库为mydata的所有select和update的慢查询sql,并查询次数最多的100条sql,并写到sql_num.sql中去
    

    统计参数说明

    1. queries total: 总查询次数

    2. unique:去重后的sql数量

    3. sorted by : 输出报表的内容排序 最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

    4. Count: sql的执行次数及占总的slow log数量的百分比.

    5. Time: 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.

    6. 95% of Time: 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.

    7. Lock Time: 等待锁的时间.

    8. 95% of Lock: 95%的慢sql等待锁时间.

    9. Rows sent: 结果行统计数量, 包括平均, 最小, 最大数量.

    10. Rows examined: 扫描的行数量.

    11. Database: 属于哪个数据库.

    12. Users: 哪个用户,IP, 占到所有用户执行的sql百分比.

    13. Query abstract: 抽象后的sql语句.

    14. Query sample: sql语句.

    相关文章

      网友评论

          本文标题:mysql慢查询

          本文链接:https://www.haomeiwen.com/subject/qilssctx.html