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

news/2024/5/18 23:53:44 标签: mysql, 架构, 流程图

文章目录

  • 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


http://www.niftyadmin.cn/n/5419843.html

相关文章

使用Windows API实现一个简单的串口助手

使用Windows API实现一个简单的串口助手 目录 使用window API开发一个具有字符串收发功能的串口助手 开发环境串口设备相关的API步骤实现代码收发测试图 使用window API开发一个具有字符串收发功能的串口助手 开发环境 Visual Studio 2015 串口设备相关的API CreateFile 参…

计算机设计大赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

计算机设计大赛 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…

【JAVA】CSS定位与CSS3属性、渐变、CSS3字体、2D变换

1 定位 1.1 相对定位 相对定位没有脱离文档流 定位元素的显示层级比普通元素高 定位元素可以通过margin&#xff0c;float调整位置&#xff0c;但不推荐 包含块&#xff1a;父元素 left和right同时写&#xff0c;右失效 上下同时写&#xff0c;下失效 <head><s…

opencv解析系列 - 基于DOM提取大面积植被(如森林)

Note&#xff1a;简单提取&#xff0c;不考虑后处理&#xff08;填充空洞、平滑边界等&#xff09; #include <iostream> #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include <opencv2/opencv.hpp> using namespace cv…

Git分支管理(Git分支的原理、创建、切换、合并、删除分支)

系列文章目录 文章一&#xff1a;Git基本操作 文章目录 系列文章目录前言一、Git分支是什么二、Git分支的原理三、创建分支四、切换分支五、合并分支六、删除分支 前言 在上一篇文章中&#xff0c;我们学习了如何使用Git的一些基本操作&#xff0c;例如安装Git、创建本地仓库…

链接modbus静态库操作方法

作用&#xff1a;链接静态modbus库&#xff0c;生成可执行文件能够在没有modbus的环境中运行。 确实需要链接静态库&#xff0c;您需要首先确保您有 libmodbus 的源代码&#xff0c;并且从源代码编译生成静态库。通常&#xff0c;开源库的源代码可以从其官方网站、GitHub 仓库…

elasticsearch 深度分页查询 Search_after(图文教程)

Search_after使用 一. 简介二. 不带PIT的search_after查询2.1 构造数据2.2 search_after分页查询2.2 问题 三. 带PIT的search_after查询3.1 构建第一次查询条件3.2 进行下一页查询3.3 删除PIT 四.参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注…