zoukankan      html  css  js  c++  java
  • MySQL-慢日志slow log

    文件结构

    1.目录结构

    drwxrwxr-x  2 mysql mysql  4096 Mar 25  2019 bin
    drwxrwxr-x  2 mysql mysql  4096 Dec 19 14:52 binlogdir
    -rw-r--r--  1 mysql mysql 17987 Nov 29  2018 COPYING
    drwxrwxr-x 10 mysql mysql  4096 Oct 23 16:55 data
    drwxrwxr-x  2 mysql mysql  4096 Nov 29  2018 docs
    drwxrwxr-x  2 mysql mysql  4096 Aug  6  2019 etc
    drwxrwxr-x  3 mysql mysql  4096 Nov 29  2018 include
    drwxrwxr-x  5 mysql mysql  4096 Nov 29  2018 lib
    drwxrwxr-x  2 mysql mysql  4096 Dec 10 10:41 logs
    drwxrwxr-x  4 mysql mysql  4096 Nov 29  2018 man
    -rwxr-xr-x  1 mysql mysql  6856 Mar 25  2019 mysql.server
    -rw-r--r--  1 mysql mysql  2478 Nov 29  2018 README
    drwxrwxr-x 28 mysql mysql  4096 Nov 29  2018 share 包含MySQL初始化的一些SQL脚本以及错误代码,本地语言文件
    drwxrwxr-x  2 mysql mysql  4096 Nov 29  2018 support-files 单实例起停和多实例起停脚本
    drwxrwxr-x  2 mysql mysql  4096 Oct 23 16:55 tmp

    2.文件

    慢日志

    参考:

    https://www.cnblogs.com/kerrycode/p/5593204.html

    https://blog.csdn.net/weixin_39004901/article/details/89918236

    https://www.iteye.com/blog/asyty-1202943

    1.位置记录参数

    slow_query_log            | ON                                        |  是否打开慢日志
    slow_query_log_file       | /data/mysql/jin1_mysql/logs/jin1-slow.log |  慢日志路径
    

      

    2.限制参数

    • log_output :日志格式.默认为FILE,还可以设置成TABLE
    • slow_launch_time:
    • long_query_time = 2 #表示慢查询阈值,SQL执行时间超过该值,则会记录到慢查询日志中。SQL的执行耗时不包含锁等待时间
    • log_queries_not_using_indexes=on #记录没有使用索引的查询语句。!可能导致日志文件激增,谨慎使用。配合log_throttle_queries_not_using_indexes 使用
    • log_throttle_queries_not_using_indexes #表示每分钟允许记录到slow log的且未使用索引的sql语句次数。配合long_queries_not_using_indexes开启使用。默认值为0表示没有限制
    • min_examined_row_limit = 1000 #对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中;
    • log_slow_admin_statements #该参数决定是否记录管理类的命令,有 ALTER TABLE,ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE,REPAIR TABLE,默认是不记录这一类语句到慢日志。;
    • log_slow_slave_statements #从库应用binlog,如果binlog格式是statement,执行时间超过阈值时,将写入从库的慢查询日志, 对于ROW格式binlog,不管执行时间有没有超过阈值,都不会写入到从库的慢查询日志。
    • 其中min_examined_row_limit参数表示SQL执行过程中扫描的行数阈值,如果扫描的行数小于该参数设置的值,即使SQL执行耗时大于慢查询阈值,也不会记录到慢查询日志中,该参数默认值为0。如果设置为非0值,管理语句将无法计入慢日志,比如DDL语句影响的行数总是视为0.
    • slow_launch_time=# 表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加

    3.慢日志内容

    ----------------------------------------

    # Time: 2020-02-17T23:35:20.373370+08:00
    # User@Host: admin[admin] @ [127.0.0.1] Id: 110
    # Query_time: 0.002527 Lock_time: 0.000289 Rows_sent: 21 Rows_examined: 1026
    SET timestamp=1581953720;
    show variables like 'log%';

    -----------------------------------------

    第一行,SQL查询执行的时间 第二行,执行SQL查询的连接信息,用户和连接IP 第三行,记录了一些我们比较有用的信息,如下解析:
    - Query_time,这条SQL执行的时间,越长则越慢
    - Lock_time,在MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间
    - Rows_sent,查询返回的行数,最终返回给客户端的行数
    - Rows_examined,查询检查的行数,越长就当然越费时间,查询语句在存储引擎中的检查记录数
    第四行,设置时间戳,没有实际意义,只是和第一行对应执行时间。
    第五行及后面所有行(第二个# Time:之前),执行的sql语句记录信息,因为sql可能会很长。

    设置成table格式输出:

    set global log_output='TABLE';

       
    select * from mysql.slow_logG
    start_time: 2020-02-18 00:35:10.725995
         user_host: admin[admin] @  [127.0.0.1]
        query_time: 00:00:00.000255
         lock_time: 00:00:00.000000
         rows_sent: 0
     rows_examined: 0
                db: jinhailan
    last_insert_id: 0
         insert_id: 0
         server_id: 12085
          sql_text: show processlist
         thread_id: 112
    

      慢查询语句中,获取锁的时间不计入执行时间,慢查询日志记录的执行时间为:在获取锁之后,并在语句执行完成之后,将锁释放之前.所以,慢查询日志中记录语句的顺序可能与M有SLQ服务器接收到的与 语句的顺序并不相同,因为有的语句可能先执行,但是最后释放了锁.

    以下是慢日志记录逻辑判断,治好了我的颈椎

    Q:MySQL的slow log中Query_time包含了lock_wait_time吗?

    A:

    1、Query_time为SQL的消耗时间,包括了Lock_time

    2、Lock_time为锁等待的时间,包括行锁、MDL锁等

    3、是否记录slow log的判定条件为SQL的实际执行时间(Query_time - Lock_time)是否超过long_query_time,或者是否开启log_queries_not_using_indexes

  • 相关阅读:
    最简单跳转,待反混爻的合集
    搜索引擎劫持代码
    Warning: Cannot modify header information
    editplus 正则删换行
    在全程Linux環境部署IBM Lotus Domino/Notes 8.5
    3.5-杂项②
    3.4-杂项①
    3.3-ISDN
    3.2-帧中继②
    3.2-帧中继①
  • 原文地址:https://www.cnblogs.com/asea123/p/10078090.html
Copyright © 2011-2022 走看看