2.innodb后台线程

本文深入探讨InnoDB存储引擎架构,解析后台线程、内存池、重做日志(redolog)及撤销日志(undolog)功能。介绍masterthread、IOthread、purgethread和pagecleanerthread的角色,以及它们如何确保数据一致性和高效回收内存。

innodb存储引擎架构

后台线程的作用:

刷新内存中的数据和写入磁盘的数据,并且在数据库异常时,innodb能恢复正常

 

内存池的作用:

维护内部使用的数据结构,缓存磁盘上的数据,重做日志(redo log)缓冲

 

redo log就是让数据库前滚,比如修改某个数据,没有修改成功,如果redo log中有记录,那么就可以使用redo log前滚

undo log就是让数据库回滚,比如修改某个数据,没有修改成功,放弃修改,undo log会记录该操作前数据库的状态,此时就可以使用undo log进行回滚

 

后台线程的组成

1.master thread:核心线程,异步刷新缓冲区的数据,保证数据一致

2.IO thread:innodb中大量使用异步IO,而IO thread的作用就是执行异步IO的回调(异步IO就是IO操作后,不阻塞,随后以状态的方式返回IO结果,并进行对应状态的处理)

 

查看IO thread的相关参数

show variables like 'innodb_%threads'\G

这三个参数表示读写线程和purge线程的数量

 

观察innodb的状态

show engine innodb status\G

显示的是过去31s的状态

 

可见当前MySQL实例的IO线程有一个insert buffer线程,一个log线程,4个读线程,4个写线程

 

3.purge thread

主要用来回收undolog所使用的undo页(就是回收undolog所占的内存和磁盘空间),因为数据库实例执行成功后,有些undolog就不需要了,需要回收

 

查看purge thread的个数(和上面一样)

show variables like 'innodb_%threads'\G

 

4.page cleaner thread

作用是刷新脏页(页就是磁盘或内存空间),关于脏页的说明见第三节

 

参考

《MySQL技术内幕,innodb存储引擎》

 

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值