MySQL 8.0 架构 之 慢查询日志(Slow query log)(2)流程图:查询记录到慢查询日志中的条件

本文主要是介绍MySQL 8.0 架构 之 慢查询日志(Slow query log)(2)流程图:查询记录到慢查询日志中的条件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • MySQL 8.0 架构 之 慢查询日志(Slow query log)(2)流程图:查询记录到慢查询日志中的条件
    • 确定查询是否会记录在慢查询日志中的流程图
    • 参考

【声明】文章仅供学习交流,观点代表个人,与任何公司无关。
来源|Walt@SQL和数据库技术(ID:SQLplusDB)

MySQL 8.0 OCP (1Z0-908) 考点概要

MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
【MySQL】控制MySQL优化器行为方法之optimizer_switch系统变量
【MySQL】MySQL系统变量(system variables)列表(mysqld --verbose --help的结果例)
【MySQL】MySQL系统变量(system variables)列表(SHOW VARIABLES 的结果例)
MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1:MySQL Enterprise Backup概要

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1:sys.statement_analysis视图
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认

MySQL 8.0 性能优化之 EXPLAIN ANALYZE
MySQL 8.0 性能优化之 慢速查询日志(slow query log)
MySQL 8.0 性能优化之 表连接算法(join algorithm)
MySQL 8.0 性能优化之 MySQL Enterprise Monitor之Query Analyzer

MySQL 8.0 架构 之数据字典(Data Dictionary)

MySQL 8.0 InnoDB Tablespaces之System Tablespace(系统表空间)
MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces(单独表空间)
MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)
MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces(临时表空间)
MySQL 8.0 InnoDB Tablespaces之Undo Tablespaces(UNDO表空间)

【MySQL】在数据目录之外创建InnoDB 表(Creating Tables Externally)

MySQL 8.0 InnoDB 架构之 日志缓冲区(Log Buffer)和重做日志(Redo Log)

MySQL 8.0 架构 之错误日志文件(Error Log)(1)
MySQL 8.0 架构 之错误日志文件(Error Log)(2)
MySQL 8.0 架构 之 通用查询日志(General Query Log)
MySQL 8.0 架构 之 二进制日志文件(Binary log)
MySQL 8.0 架构 之 慢查询日志(Slow query log)

MySQL 8.0 架构 之 慢查询日志(Slow query log)(2)流程图:查询记录到慢查询日志中的条件

MySQL中有多种类型的日志文件,这些日志可用于故障排除、性能调整和审计等目的,帮助找出正在发生的活动。

常见的日志文件包括:

日志类型写入日志的信息
错误日志(Error log)启动、运行或停止mysqld时遇到的问题
二进制日志(Binary log)更改数据的语句(也用于复制)
中继日志(Relay log)从复制源服务器接收到的数据更改
通用查询日志(General query log)已建立的客户端连接和从客户端接收到的语句
慢查询日志(Slow query log)执行时间超过long_query_time秒的查询
DDL日志(元数据日志)(DDL log)DDL语句执行的元数据操作

确定查询是否会记录在慢查询日志中的流程图

我们在下面的文章中介绍了慢速查询日志(slow query log)使用和参数等内容。

MySQL 8.0 架构 之 慢查询日志(Slow query log)

下面是我根据《MySQL 8 Query Performance Tuning》:Figure 9-1. Flowchart to determine whether a query is logged to the slow log一书的内容进行了部分扩展,用于确定SQL查询是否会被记录到慢查询日志中的简化流程图:

在这里插入图片描述
对于查询记录到慢查询日志中的条件,简化的流程如下:

  1. 确认slow_query_log参数是否启用了慢查询日志
  2. 判断SQL的查询类型
  3. 对于管理语句(例如 ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、OPTIMIZE TABLE、 REPAIR TABLE),确认log_slow_admin_statements参数的设置。
    3.1 如果参数为禁用(OFF),则不记录到慢查询日志
    3.2 如果参数为启用(ON),则进行SQL的执行时间和时间阀值(long_query_time)比较,当小于等于这个时间阀值时不记录到慢查询日志;当执行时间大于时间阀值,进行3.4的判断。
    3.4 SQL语句执行扫描的行数和最小返回行数参数(min_examined_row_limit)进行比较,如果SQL语句执行扫描的行数小于这个参数设置,则不记录到慢查询日志。如果大于参数设置,则记录到慢日志中。
  4. 对于复制相关的语句,确认log_slow_replica_statements (版本>=8.0.26)或者log_slow_slave_statements (版本<8.0.26)参数的设置。
    4.1 如果参数为禁用(OFF),则不记录到慢查询日志
    4.2 如果参数为启用(ON),确认log_queries_not_using_indexes的设置,如果启用判断是否进行了全表扫描,如果SQL语句的执行计划为进行全表扫描,则进行4.4,否则进行4.3的判断。
    4.3 进行SQL的执行时间和时间阀值(long_query_time)比较,当小于等于这个时间阀值时不记录到慢查询日志;当执行时间大于时间阀值,进行4.4的判断。
    4.4 SQL语句执行扫描的行数和最小返回行数参数(min_examined_row_limit)进行比较,如果SQL语句执行扫描的行数小于这个参数设置,则不记录到慢查询日志。如果大于参数设置,则记录到慢日志中。
  5. 对于普通查询语句,首先确认log_queries_not_using_indexes的设置,如果启用判断是否进行了全表扫描,如果SQL语句的执行计划为进行全表扫描,则进行5.1,否则进行5.2的判断。
    5.1 进行SQL的执行时间和时间阀值(long_query_time)比较,当小于等于这个时间阀值时不记录到慢查询日志;当执行时间大于时间阀值,进行4.4的判断。
    5.2 SQL语句执行扫描的行数和最小返回行数参数(min_examined_row_limit)进行比较,如果SQL语句执行扫描的行数小于这个参数设置,则不记录到慢查询日志。如果大于参数设置,则记录到慢日志中。

参考

《MySQL 8 Query Performance Tuning》:Figure 9-1. Flowchart to determine whether a query is logged to the slow log
7.4.5 The Slow Query Log
https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html

这篇关于MySQL 8.0 架构 之 慢查询日志(Slow query log)(2)流程图:查询记录到慢查询日志中的条件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/795082

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec