InnoDB---体系架构

一、后台线程

后台线程作用:负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据,并将已修改的数据文件刷新到磁盘文件中。

分类:

Master Thread:负责将缓冲池中的数据异步刷新到磁盘中,保证数据的一致性。

IO Thread:负责InnoDB存储引擎中使用的AIO(Async IO 异步非阻塞)请求的回调(call back)处理。

Purge Thread:负责回收已经使用并分配的undo页。

Page Cleaner Thread:负责脏页的刷新操作。

二、缓冲池

缓冲池作用:本质是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响
在这里插入图片描述

注意:对缓冲池中的操作刷新到磁盘并不是每次页发生更新的时候触发,而是通过Checkpoint的机制刷新回磁盘

配置参数:

innodb_buffer_pool_size---配置缓冲池大小
innodb_buffer_pool_instances---配置缓冲池实例

三、LRU List 、Free List 、Flush List

**LRU列表:**用来管理已经读取的页。
**Free列表:**用来管理未在LRU列表中的页。
**Flush列表:**用来管理将页刷回磁盘。

LRU列表使用的是优化LRU算法(midpoint insertion strategy),在LRU列表中添加了midpoint位置,每次新读取的页并不是直接放入LRU列表的首部,而是放入LRU列表的midpoint位置。等待innodb_old_blocks_time才会加入到LRU热端。
在这里插入图片描述
参数:

innodb_old_blocks_pct ---设置midpoint位置
innodb_old_blocks_time ---设置加入热点数据的等待时间

Free列表,在数据库刚启动时,LRU列表是空的,这时所有的页存放在Free列表中,当需要从缓冲池中分页时,首先从Free列表中查找是否有可用的空闲页,若有则从Free列表中删除,放入到LRU列表中。

Flush列表,当LRU列表中的页被修改后,该页就变成了脏页,即缓冲池中的页和磁盘中的页的数据产生了不一致,数据库通过Checkpoint机制将脏页刷新回磁盘中,Flush列表就是脏页列表,脏页即存在Flush列表中也存在LRU列表中,两者互不影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值