文件结构

1.目录结构

drwxrwxr-x   mysql mysql   Mar    bin
drwxrwxr-x mysql mysql Dec : binlogdir
-rw-r--r-- mysql mysql Nov COPYING
drwxrwxr-x mysql mysql Oct : data
drwxrwxr-x mysql mysql Nov docs
drwxrwxr-x mysql mysql Aug etc
drwxrwxr-x mysql mysql Nov include
drwxrwxr-x mysql mysql Nov lib
drwxrwxr-x mysql mysql Dec : logs
drwxrwxr-x mysql mysql Nov man
-rwxr-xr-x mysql mysql Mar mysql.server
-rw-r--r-- mysql mysql Nov README
drwxrwxr-x mysql mysql Nov share 包含MySQL初始化的一些SQL脚本以及错误代码,本地语言文件
drwxrwxr-x mysql mysql Nov support-files 单实例起停和多实例起停脚本
drwxrwxr-x mysql mysql Oct : 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_log\G
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

MySQL-慢日志slow log的更多相关文章

  1. 【PHP】善用php-fpm的慢执行日志slow log,分析php性能问题

    (转)善用php-fpm的慢执行日志slow log,分析php性能问题  众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题.作为mysql的好 ...

  2. mysql错误日志/var/log/mariadb/mariadb.log,二进制日志

    mariadb-日志 IT_luo关注0人评论65人阅读2018-10-15 08:59:03   mariadb日志 mariadb日志: 1.查询日志:query log: 2.慢查询日志:slo ...

  3. MySQL 错误日志(Error Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...

  4. MySQL 二进制日志(Binary Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分. MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志能够帮助我们定位mysqld ...

  5. 详细分析MySQL事务日志(redo log和undo log)

    innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...

  6. 【MySQL (六) | 详细分析MySQL事务日志redo log】

    Reference:  https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html 引言 为了最大程度避免数据写入时 IO ...

  7. 详细分析MySQL事务日志(redo log和undo log) 表明了为何mysql不会丢数据

    innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...

  8. 正确安全清空在线慢查询日志slow log的流程 (转)

    1, see the slow log status; mysql> show variables like '%slow%'; +---------------------+--------- ...

  9. 正确安全清空在线慢查询日志slow log的流程

    查看慢查询日志的状态: mysql> show variables like '%slow%'; +---------------------+------------------------- ...

随机推荐

  1. 本机无oracle,远程连接

    描述 本机无oracle,通过PLSQL Developer程序,连接虚拟机中的oracle11gR2 1 下载instant-client 需要和服务端版本对应 下载相应的instant-clien ...

  2. golang用slice、list当queue

    背景 golang没有queue这种类型,不过可以用slice.list模拟 slice当queue 声明队列 var queue []int 入队一个元素: queue = append(queue ...

  3. Java自学-集合框架 Comparator和Comparable

    Java Comparator和Comparable 步骤 1 : Comparator 假设Hero有三个属性 name,hp,damage 一个集合中放存放10个Hero,通过Collection ...

  4. Essay写作如何提升自己的辩驳水平?

    辩证思维在英文写作上的表现方式有许多种,今天来讲讲Counterargument&Rebut,广泛用于英文写作和口语辩论.其作用就是通过辩驳和你论点相反的意见,来突出自己的论点更正确. 话说衡 ...

  5. CF1209B Koala and Lights

    It is a holiday season, and Koala is decorating his house with cool lights! He owns n lights, all of ...

  6. 【剑指Offer】面试题05.替换空格

    题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy." 输出:"We%20are ...

  7. Maven:java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

    直接参考前面一篇文章中间介绍的第2种方法即可:Maven:sun.security.validator.ValidatorException: PKIX path building failed: s ...

  8. 自学Java第五章——《面向对象的基本特征》

    面向对象的基本特征: 1.封装 2.继承 3.多态 6.1 封装 1.好处: (1)隐藏实现细节,方便使用者使用 (2)安全,可以控制可见范围 2.如何实现封装? 通过权限修饰符 面试题:请按照可见范 ...

  9. SQL的查询结果复制到Excel 带标题Head 有换行符导致换行错乱 的解决方案

    将SQL查询到的结果保存为excel有很多方法,其中最简单的就是直接复制粘贴了 1.带Head的复制粘贴 1)先左击红色区域实现选择所有数据 2)随后右击选择Copy with Headers  再粘 ...

  10. HZNU-ACM寒假集训Day8小结 最小生成树

    最小生成树(无向图) Kruskal 给所有边按从小到大排序 形成环则不选择(利用并查集) P1546 最短网络   https://www.luogu.com.cn/problem/P1546 #i ...