InnoDB存储引擎

本文深入探讨了InnoDB存储引擎的体系架构,包括内存管理的缓冲池、LRU List、FreeList、Flush List以及重做日志缓存。介绍了Master Thread的工作方式、Checkpoint技术以及InnoDB的关键特性如插入缓冲、两次写、自适应哈希索引和异步IO。这些机制确保了数据库的高效运行和数据一致性。
摘要由CSDN通过智能技术生成

第二章 InnoDB存储引擎

行锁设计、支持MVCC(多版本并发控制)、支持外键、提供一致性非锁定读

InnoDB体系架构

在这里插入图片描述
后台线程:(1)负责刷新内存池中的数据,保证缓存池中的内存缓存是最近的数据;
(2)将已修改的数据文件刷新到磁盘文件,保证能够异常回复

内存

在这里插入图片描述

缓冲池

InnoDB存储引擎基础磁盘存储,并将其中的记录按照页的方式进行管理,缓冲池就是一块内存区域,通过内存的速度来弥补磁盘速度较慢的影响

修改操作首先修改在缓存中的页,然后再以一定的频率刷新到磁盘上(Checkpoint机制)
LRU List、FreeList、Flush List

数据库中的缓冲池通过LRU(最近最少使用)算法来进行管理,最频繁使用的页在LRU列表的前端,当缓冲池不能存放新读取到的页时,将首先释放LRU列表中尾端的页

在InnoDB中缓冲池中页的大小默认16KB,LRU列表加入midpoint位置,新读取到的页放入到midpoint位置而非首部,默认该位置在LRU列表长度的5/8处

在InnoDB中把midpoint之后的列表成为old列表,之前的列表称为new列表

为什么引入midpoint:防止将尽在这次查询操作中需要的页放入首部导致热点数据页被移除(全表扫描引起LRU列表被污染)
另外引入一个time参数用于表示需要等待多久才会被加入到LRU列表的热端

Free列表:维护空闲可分配的缓冲页
缓存页申请流程:
(1)从Free列表中查找是否由可用的空闲页
(2)有则将该页删除放入LRU列表中
(3)无则淘汰LRU列表末尾分配给新页
对于非16KB的页采用伙伴算法进行内存分配
脏页:LRU列表上的页被修改后(缓冲池中的页)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值