zoukankan      html  css  js  c++  java
  • MySQL:动态开启慢查询日志(Slow Query Log)

    前言

    在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一。要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改

    慢日志设置方式

    • 写入文件

    • 写入数据库

    实践操作

    方式一:写入文件

    编辑my.conf 中修改 log_slow_queries 的日志地址

    $ cd /etc/mysql
    $ cat my.cnf |grep slow 
    log_slow_queries	= /data/logs/mysql/mysql-slow.log
    $ sudo /etc/init.d/mysql restart


    简单验证

    $ mysql -uroot -p
    mysql> show variables like '%slow_query_log%';
    +---------------------+---------------------------------+
    | Variable_name       | Value                           |
    +---------------------+---------------------------------+
    | slow_query_log      | ON                              |
    | slow_query_log_file | /data/logs/mysql/mysql-slow.log |
    +---------------------+---------------------------------+
    2 rows in set (0.00 sec)
    
    $ tail -f /data/logs/mysql/mysql-slow.log
    # Time: 161110 23:20:22
    # User@Host: root[root] @ localhost []
    # Query_time: 3.007048  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
    SET timestamp=1478791222;
    select sleep(3);

    方式二:写入数据库

    先查看目前日志输出方式

    mysql> show variables like '%log_output%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  |
    +---------------+-------+
    1 row in set (0.00 sec)


    设置输出方式为FILE,TABLE

    mysql> set global log_output='FILE,TABLE';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show variables like '%log_output%';
    +---------------+------------+
    | Variable_name | Value      |
    +---------------+------------+
    | log_output    | FILE,TABLE |
    +---------------+------------+
    1 row in set (0.00 sec)
    
    mysql> select count(*) from mysql.slow_log;
    +----------+
    | count(*) |
    +----------+
    |        2 |
    +----------+
    1 row in set (0.00 sec)


    600


    备注: log_output 参数设定日志文件的输出,可选值为 TABLE, FILE ,NONE;  "TABLE" 意思为设定日志分别记录到 mysql 库的 general_log 和 slow_log 表中; "FILE" 意思为记录日志到操作系统的文件中, "NONE" 意思为取消日志记录。

    参考资料

    1. http://dev.mysql.com/doc/refman/5.6/en/slow-query-log.html    


    原文地址:MySQL:动态开启慢查询日志(Slow Query Log)
    标签:mysql   slow_log   log   log_output   query   

    智能推荐

  • 相关阅读:
    面向消息的持久通信与面向流的通信
    通信协议
    [1]序章,基本
    深拷贝和浅拷贝
    堆/栈 内存管理相关
    C++的四种cast(显示类型转换)
    智能指针相关
    C++对象模型:单继承,多继承,虚继承
    HTTP/TCP
    [读书笔记] 为什么绝不在构造/析构函数中调用virtual函数
  • 原文地址:https://www.cnblogs.com/apanly/p/6052863.html
Copyright © 2011-2022 走看看