【MySQL】InnoDB引擎 —— 架构 —— 后台线程

后台线程的作用就是:将InnoDB存储引擎的缓冲池中的数据在合适的时机刷新到磁盘文件中。

image-20240720223633702

在InnoDB的后台线程中,分为4类,分别是:Master Thread 、IO Thread、Purge Thread、 Page Cleaner Thread。

1). Master Thread

核心后台线程,负责调度其他线程,还负责将缓冲池中的数据异步刷新到磁盘中, 保持数据的一致性,还包括脏页的刷新、合并插入缓存、undo页的回收 。


2). IO Thread

在InnoDB存储引擎中大量使用了AIO(Asynchronous Input/Output,异步非阻塞IO)来处理IO请求, 这样可以极大地提高数据库的性能,而IO Thread主要负责这些异步IO请求的回调。

主要有以下四类,一共10个线程:

线程类型默认个数职责
Read thread4负责读操作
Write thread4负责写操作
Log thread1负责将日志缓冲区刷新到磁盘
Insert buffer thread1负责将写缓冲区内容刷新到磁盘

我们可以通过以下的这条指令,查看到InnoDB的状态信息,其中就包含IO Thread信息。

show engine innodb status \G;

包含事务的情况,也包含IO的情况,大家直接看IO这块信息就行了,此时就可以看到read tread有4个线程;write thread有4个线程,log thread1个线程,insert buffer thread1个线程。这里全部采用的是aio,即异步IO。

对于这些线程,目前大家来看,aio read:[0, 0, 0, 0] 所有的线程都是在等待接受请求;aio writes: [0, 0, 0, 0] :所有的写线程也都是在等待接收请求。

image-20240720223726905


3). Purge Thread

主要用于回收事务已经提交了的undo log(撤销日志),在事务提交之后,undo log可能不用了,就用它来回收。


4). Page Cleaner Thread

协助 Master Thread 刷新脏页到磁盘的线程,它可以减轻 Master Thread 的工作压力,减少阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值