美文网首页
MySql慢查询

MySql慢查询

作者: E码 | 来源:发表于2016-10-19 19:09 被阅读0次

    首先查看目前Mysql慢查询的参数情况

    mysql> show variables like '%slow%';
    +---------------------------+------------------------------------+
    | Variable_name             | Value                              |
    +---------------------------+------------------------------------+
    | log_slow_admin_statements | OFF                                |
    | log_slow_slave_statements | OFF                                |
    | slow_launch_time          | 2                                  |
    | slow_query_log            | ON                                 |
    | slow_query_log_file       | /var/lib/mysql/i-apsl772j-slow.log |
    +---------------------------+------------------------------------+
    5 行于数据集 (0.22 秒)
    
    slow_query_log       -- 是否开启的慢查询日志记录
    slow_query_log_file  -- 慢查询日志的文件位置
    

    如果 slow_query_log 是 OFF ,可以通过如下命令来开启慢查询日志;

    mysql> set global slow_query_log = ON;
    Query OK, 0 rows affected (0.02 秒)
    

    下面来看一下慢查询的时间,执行如下命令;同时可以通过如下命令来设置慢查询的时间;

    mysql> show variables like '%long_query%';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 2.000000 |
    +-----------------+----------+
    1 行于数据集 (0.03 秒)
    
    mysql> set long_query_time=2;
    Query OK, 0 rows affected (0.02 秒)
    

    下面来执行一个比较复杂的查询,来看一下是否能记录到慢查询日志中;下面只是一个例子,可以根据实际情况来写,命令执
    行完成后打开上面慢查询的日志文件。可以看到慢查询已经记录了新的记录。

    select * from xhy_device_log xl,xhy_device xd where xl.mcode = xd.mcode;
    
    [root@i-apsl772j ~]# cat  /var/lib/mysql/i-apsl772j-slow.log
    /usr/sbin/mysqld, Version: 5.7.10 (MySQL Community Server (GPL)). started with:
    Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
    Time                 Id Command    Argument
    # Time: 2016-10-12T04:31:48.245466Z
    # User@Host: root[root] @  [125.33.118.101]  Id: 886963
    # Query_time: 30.872068  Lock_time: 0.000198 Rows_sent: 65032  Rows_examined: 121726
    use xunheyun_device;
    SET timestamp=1476246708;
    select * from xhy_device_log xl,xhy_device xd where xl.mcode = xd.mcode;
    

    上面介绍了如何记录慢查询的日志,稍后会介绍如何对 SQL 进行优化。本文接下来再写一些慢查询相关的内容;

    查看文件输入方式;

    mysql> show variables like '%output%';
    +----------------------------+-------+
    | Variable_name              | Value |
    +----------------------------+-------+
    | innodb_status_output       | OFF   |
    | innodb_status_output_locks | OFF   |
    | log_output                 | FILE  |
    +----------------------------+-------+
    3 行于数据集 (0.05 秒)
    

    相关文章

      网友评论

          本文标题:MySql慢查询

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