InnoDB 学习(一:InnoDB体系架构)

体系架构

在这里插入图片描述

后台线程

1.master Thread
2.IO Thread
write read insertBuffer LogIO
3.Purge Thread:可以单独开一个处理undoLog
4.Page Cleaner Thread,处理脏页(在LRU中修改后被换出的,需要将内容写到磁盘上)的刷新

内存

1.缓冲池
innodb是基于磁盘存储的,按照页的方式进行管理,基于磁盘。
实用缓存的机制加快速度,先查缓冲池,再查硬盘;不在缓冲池读完放进缓冲池;
修改时先看是否在内存中,在的话直接修改,利用checkpoint机制刷新到磁盘。
在这里插入图片描述
2.LRU FREE FLUSH
LRU:最近最少使用,最频繁的在LRU的前端,最少使用的在尾部。
定义midpoint点3/8位置,一般新读取的放在midpoint处。保护热点数据,防止扫描或索引影响效率;全表扫描引起LRU污染.
定义old_block_time,代表加入多长时间后才能被加入顶端.
加入顶端make young,因为oldBlockTime不能放入顶端叫cant make young
在这里插入图片描述
Free list:空闲页都放在freelist中,当需要从缓冲池分页的时候先查询freelist,若没有空闲就页面置换,一般一页16k

unzip_LRU处理压缩页表
在这里插入图片描述

FlushLIst:
FlushList即脏页列表,脏页既存在于LRU也存在于FlushList,两者不影响.
FlushList负责页刷新会磁盘.

3.重做日志缓冲
负责缓冲重做日志,并刷新到日志文件
在这里插入图片描述
4.额外的内存池
Innodb对内存用heap管理,当对一些数据结构进行内存分配时首先从额外内存池中申请,若不足 则去缓冲池中申请.

Checkpoint技术

事务提交时,先写undo log,再修改页.出现故障也能通过日志恢复, ACID中的D,持久性.

在这里插入图片描述
缓冲池不够用时,若换出的为脏页,则强制执行checkpoint

在这里插入图片描述
在这里插入图片描述
Ma:每秒刷新一定的脏页到磁盘
FL:5.6之前,保证空闲页数量 ,page clean
As:一般定义一个区间达到区间就执行checkpoint , page clean
Di:脏页达到一定数量

Master Thread的工作方式

  1. 5.6之前:循环执行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

插入缓冲Insert Buffer

对非聚集不唯一索引假装插入,每隔一段时间进行合并,避免多次查询索引位置.在这里插入图片描述

Change Buffer

在这里插入图片描述

Merge BUffer

在这里插入图片描述

两次写

在这里插入图片描述
在这里插入图片描述

自适应哈希

在这里插入图片描述

异步IO

AIO:
在这里插入图片描述

刷新临近页

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值