Mysql高级11-后台进程
一、前言
二、Master Thread
- 复制事件的写入:当有新的事务被提交到主数据库时,Master Thread负责将复制事件写入到二进制日志(Binary Log)中。这些复制事件是描述对主数据库进行的数据修改操作的逻辑记录。
- 二进制日志文件的轮询:Master Thread负责轮询二进制日志文件,以确定是否有新的复制事件添加到日志中。它会定期检查是否需要创建新的二进制日志文件,以限制单个日志文件的大小。
- 与从数据库进行通信:Master Thread与从数据库进行网络通信,将复制事件传输给从库。它将复制事件以事件流的形式发送给从数据库,确保从数据库可以获取到主库上所有的数据更改操作。
- 复制相关的线程管理:Master Thread管理其他复制相关的线程,如IO Thread和SQL Thread。IO Thread负责从从库读取和处理复制请求,SQL Thread负责执行复制事件。
- Master Thread在MySQL启动时启动,并一直运行在后台,直到MySQL关闭。它是MySQL复制架构中非常重要的一部分,保证了数据的可靠复制和同步
三、IO Thread
- 与从库建立连接:IO Thread负责与一个或多个从库建立连接,并保持与从库的持久连接。通过这些连接,从库可以向主库发送复制请求,请求复制主库中的数据。
- 从从库读取复制事件:一旦与从库建立了连接,IO Thread会定期从从库读取复制事件。这些复制事件是由Master Thread将主库上的数据更改操作以二进制格式写入到二进制日志中,并通过IO Thread传输给从库的。
- 处理复制事件:IO Thread读取复制事件后,会将这些事件发送给SQL Thread处理。SQL Thread将复制事件解析并执行相应的数据更改操作,保证从库中的数据与主库保持同步。
IO Thread是在MySQL启动时启动的,并一直运行在后台,直到MySQL关闭。它与Master Thread紧密合作,共同完成复制架构中主从之间的数据传输和同步。通过IO Thread,从库能够从主库获取数据更改并进行复制,确保从库和主库之间的数据保持一致性。
IO Thread 主要负责下面IO请求的回调

使用指令: show engine innodb status; 可以查看

总结:IO Thread是MySQL复制架构中的核心组件,负责与从库建立连接,并处理从库的复制请求。它从主库读取复制事件,并将这些事件发送给SQL Thread进行处理。IO Thread在MySQL启动时启动,与Master Thread紧密合作,实现主从数据库之间的数据传输和同步。了解IO Thread的运行和行为对于复制环境的监控和故障排除非常重要。
四、Purge Thread
在MySQL中,Purge Thread(清理线程)是复制架构中的一个重要组件。它负责删除不再需要的二进制日志文件,以释放磁盘空间并维护二进制日志的大小。
Purge Thread的主要任务包括:
- 删除过期的二进制日志:当从库成功复制了主库上的数据更改后,它会通知主库上的Purge Thread,以删除已经不再需要的二进制日志。这些已经复制到从库并且不再需要的二进制日志会占用宝贵的磁盘空间。Purge Thread会根据从库的状态信息,删除这些过期的二进制日志,并释放磁盘空间。
- 维护二进制日志的大小:Purge Thread还负责维护和管理二进制日志的大小。它会检查当前的二进制日志文件是否已经达到了指定的大小限制。如果已经达到了限制,Purge Thread会关闭当前的二进制日志文件,并开始写入新的日志文件。旧的日志文件将被重命名和压缩,以节省磁盘空间。
Purge Thread是在MySQL启动时启动的,并一直运行在后台,直到MySQL关闭。它会定期检查并删除不再需要的二进制日志文件,以及维护二进制日志的大小。通过这些操作,在复制过程中保持磁盘空间的有效利用,并防止二进制日志文件无限增长。
总结:Purge Thread是MySQL复制架构中的一个组件,负责删除不再需要的二进制日志文件,并维护二进制日志的大小。它会根据从库的状态信息,删除已经复制到从库并且不再需要的二进制日志,并释放磁盘空间。此外,Purge Thread还会检查并维护二进制日志的大小,以防止它们无限增长。了解Purge Thread的运行和行为对于复制环境的监控和故障排除非常重要。
五、Page cleaner thread
在MySQL中,Page Cleaner Thread是InnoDB存储引擎的一个重要后台线程,用于管理和维护脏页(已被修改但尚未写入磁盘的页)的刷新工作。它在InnoDB存储引擎启动时自动启动,并持续运行以处理脏页的刷新需求。
Page cleaner thread的主要职责包括:
- 扫描脏页:Page Cleaner Thread周期性地扫描InnoDB缓冲池,检查其中的脏页。脏页是指已被修改的页面,它们的内容需要被刷新到磁盘上的数据文件中,以确保数据的持久性。
- 脏页刷新:当找到脏页时,Page Cleaner Thread会将这些脏页的数据写回到对应的数据文件中,使其变成干净页。这个过程称为脏页刷新。
- 决定刷新速率:根据系统的负载情况和磁盘IO能力,Page Cleaner Thread会根据需要自动调整脏页刷新的速率,以避免对系统性能造成过大的负担。
Page Cleaner Thread的存在和正常运行对于保证数据库的数据持久性和性能起着重要作用。如果Page Cleaner Thread无法及时刷新脏页,会导致脏页积压在内存中,可能导致缓冲池不足,影响数据库性能。因此,在监控和优化MySQL性能时,需要关注Page Cleaner Thread的运行状况以及相关配置参数的调整。
Mysql高级11-后台进程的更多相关文章
- MySQL高级知识(十四)——行锁
前言:前面学习了表锁的相关知识,本篇主要介绍行锁的相关知识.行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高. 0.准备 #1.创建相关测试表tb_ ...
- MySQL高级知识(六)——索引优化
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABL ...
- MySQL高级知识(五)——索引分析
前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表 ...
- MySQL高级知识(四)——Explain
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句.explain主要用于分析查询语句或表结构的性能瓶颈. 注:本系列随 ...
- MySQL高级知识(二)——Join查询
前言:该篇主要对MySQL中join语句的七种情况进行总结. 0.准备 join主要根据两表或多表之间列的关系,从这些表中进行数据的查询. 首先创建两张表:tb_emp(员工表)和tb_dept(部门 ...
- 【MySQL 高级】索引优化分析
MySQL高级 索引优化分析 SQL 的效率问题 出现性能下降,SQL 执行慢,执行时间长,等待时间长等情况,可能的原因有: 查询语句写的不好 索引失效 单值索引:在 user 表中给 name 属性 ...
- mysql高级day4
Mysql高级-day04 1. MySql中常用工具 1.1 mysql 该mysql不是指mysql服务,而是指mysql的客户端工具. 语法 : mysql [options] [databas ...
- mysql高级day3
Mysql高级-day03 1. 应用优化 前面章节,我们介绍了很多数据库的优化措施.但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力. 1.1 ...
- mysql高级day2
Mysql高级-day02 1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & ...
- mysql高级day1
Mysql高级-day01 MySQL高级课程简介 序号 Day01 Day02 Day03 Day04 1 Linux系统安装MySQL 体系结构 应用优化 MySQL 常用工具 2 索引 存储引擎 ...
随机推荐
- .Net NPOI Excel 导出
NPOI 导出 Excel 最终效果图 环境:Revit,WPF,NPOI 2.5.6,.Net Framework 4.7.2 一.引用 NPOI 右击项目引用,选择 "管理NuGet程序 ...
- MySQL uuid及其相关的一些简单性能测试
运维同事导入一批大约500万左右的数据,耗时较久.他使用的是纯SQL导入,主键使用的是UUID,因为业务原因没有使用自增ID. 因为是内网,不能远程访问. 通过沟通,大致觉得有两个原因,一是因为UUI ...
- Java 新的生态,Solon v2.3.2 发布
Solon 是什么框架? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(全球第二级别的生态).与其他框架相比,它解决了两个重要的痛点:启动慢,费资源. 解决痛点? ...
- 「学习笔记」Garsia-Wachs 算法
前言 本文的资料和图片均来自 \(\texttt{OI-Wiki}\). 引入 题目描述 在一个操场上摆放着一排 \(N\) 堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的 \(2\) 堆 ...
- 在 Istio 服务网格内连接外部 MySQL 数据库
为了方便理解,以 Istio 官方提供的 Bookinfo 应用示例为例,利用 ratings 服务外部 MySQL 数据库. Bookinfo应用的架构图如下: 其中,包含四个单独的微服务: pro ...
- k8s实战案例之基于StatefulSet控制器运行MySQL一主多从
1.前言 Pod调度运⾏时,如果应⽤不需要任何稳定的标示.有序的部署.删除和扩展,则应该使⽤⼀组⽆状态副本的控制器来部署应⽤,例如 Deployment 或 ReplicaSet更适合⽆状态服务需求, ...
- SpringBoot 多环境切换
日常开发中一般都会有三个不同的环境,分别是开发环境(dev),测试环境(test)和生产环境(prod),不同的环境各种配置都不相同,比如数据库配置,服务器端口等等. Spring Boot 多环境配 ...
- UI自动化打开游览器失败 elenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 90
原因是: 驱动和当前游览器版本不一致 查看游览器版本: 下载对应驱动: http://npm.taobao.org/mirrors/chromedriver/ 在自己电脑上 找到原来驱动的存放位置 将 ...
- RDB初步了解
RDB概念 快照文件是.rdb结尾 redis6.2以前和之后(包括6.2)在什么条件下会保存rdb文件有所不同 以前 15min&&1个key(改变)调用保存 5min&&a ...
- 【译】如何在 Visual Studio 中调试异步代码
虽然异步代码可以提高程序的整体吞吐量,但异步代码仍然无法免除错误!当潜在的死锁.模糊的错误消息以及查找导致 Bug 的 Task 时,编写异步代码会使调试更加困难.幸运的是,Visual Studio ...