Mysql 的慢查询日志开启

       慢查询日志其实就是将mysql 的 sql 执行过程中执行时间超过阈值的sql 语句记录下来,方便后续优化。而阈值的大小由 long_query_time 来设置,默认是10秒。

       在默认的情况下,mysql 的慢查询日志事关闭的,需要人工手动开启。

mysql> show variables like 'long_query_time'\G;
*************************** 1. row ***************************
Variable_name: long_query_time
        Value: 10.000000
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> show variables like '%slow_%';
+---------------------------+--------------------------------------------------------+
| Variable_name             | Value                                                  |
+---------------------------+--------------------------------------------------------+
| log_slow_admin_statements | ON                                                     |
| log_slow_slave_statements | OFF                                                    |
| slow_launch_time          | 2                                                      |
| slow_query_log            | OFF                                                    |
| slow_query_log_file       | /usr/local/mysql/data/chenguoweideMacBook-Pro-slow.log |
+---------------------------+--------------------------------------------------------+
5 rows in set (0.00 sec)

      由上图可知,slow_query_log 是关闭中的,下面我们手动开启下

mysql> set global slow_query_log = on;
Query OK, 0 rows affected (0.00 sec)

      而慢查询日志默认是保存在文件中的。

mysql> show variables like 'log_output'\G;
*************************** 1. row ***************************
Variable_name: log_output
        Value: FILE
1 row in set (0.00 sec)

      下面我们可以将慢查询日志修改为输出到 mysql.slow_log 表中。

mysql> set global log_output='table';
Query OK, 0 rows affected (0.01 sec)

mysql> show variables like 'log_output'\G;
*************************** 1. row ***************************
Variable_name: log_output
        Value: TABLE
1 row in set (0.00 sec)

      我们执行一条慢查询语句看看

mysql> select sleep(30)\G;
*************************** 1. row ***************************
sleep(30): 0
1 row in set (30.01 sec)

mysql> select *from slow_log\G;
*************************** 1. row ***************************
    start_time: 2019-10-21 21:23:48.651561
     user_host: root[root] @ localhost []
    query_time: 00:00:20.005284
     lock_time: 00:00:00.000000
     rows_sent: 1
 rows_examined: 0
            db: mysql
last_insert_id: 0
     insert_id: 0
     server_id: 0
      sql_text: select sleep(20)
     thread_id: 4
1 row in set (0.00 sec)

ERROR: 
No query specified

         可以看到这条慢查询日志保存到了 mysql.slow_log 表中。我们可以根据这些信息来优化sql 语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值