zoukankan      html  css  js  c++  java
  • mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用

    mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句。

    慢查询配置和使用

    在msyqld的启动配置文件或命令行参数中增加以下参数

    long_query_time=1

    log-slow-queries=/var/mysql/logs/slow.log

    long_query_time参数表示的是慢查询的度量时间,单位是秒,最小是1,缺省值是10,凡是执行时间超过long_query_time的sql语句都会记录到慢查询日志中。

    --log-slow-queries[=file_name]的file_name参数可选,缺省值是host_name-slow.log,如果指定了file_name参数的话,mysql就会把慢查询的日志记录到file_name所设定的文件中,如果file_name提供的是一个相对路径,mysql会把日志记录到mysql的data目录中。

    未使用索引查询配置和使用

    在mysql的启动配置文件或命令行参数中增加--log-queries-not-using-indexes 参数就可以启用未使用索引查询语句了,日志记录的文件就是log-slow-queries对应的文件。

    //mysql.conf

    log-queries-not-using-indexes

    使用案例

    mysql的配置如下

    [mysqld]

    #Slow Query log
    long_query_time=3

    log-slow-queries

    # Log queries that is not using indexes
    log-queries-not-using-indexes

    执行以下命令

    select sleep(1);

    select sleep(3);

    select * from t1;

    日志内容如下

    D:MySQLMySQL Server 5.1inmysqld, Version: 5.1.31-community-log (MySQL Community Server (GPL)). started with:
    TCP Port: 3306, Named Pipe: (null)
    Time                 Id Command    Argument
    # Time: 090625 12:58:09
    # User@Host: root[root] @ localhost [127.0.0.1]
    # Query_time: 3.000077  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
    SET timestamp=1245905889;
    select sleep(3);
    # Time: 090625 12:58:42
    # User@Host: root[root] @ localhost [127.0.0.1]
    # Query_time: 0.046876  Lock_time: 0.031251 Rows_sent: 0  Rows_examined: 0
    SET timestamp=1245905922;
    select * from t1;

    其他

    除此之外还有一些专门的慢查询日志分析、查询工具,大家可以google以下相关的内容。

  • 相关阅读:
    大数据技术
    大数据技术
    大数据技术
    设计模式之代理模式
    大数据技术
    大数据技术
    大数据技术
    Intellij IDEA 解决 Maven 依赖下载慢的问题
    大数据技术
    QUdpSocket Class
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4867366.html
Copyright © 2011-2022 走看看