MySQL(四):InnoDB 体系架构
1、InnoDB 体系架构简述
InnoDB 存储引擎架构分为两部分:
一个是InnoDB内存结构
- InnoDB 缓冲池(Buffer Pool)
- InnoDB 变更缓冲区(Change Buffer)
- InnoDB 自适应Hash索引(Adaptive Hash Index)
- InnoDB 日志缓冲区(Log Buffer)
一个是InnoDB磁盘结构
- InnoDB 表(Tables)
- InnoDB 索引(Indexes)
- InnoDB 表空间(Tablespaces)
- InnoDB 双写缓冲区(Doublewrite Buffer)
- InnoDB 重做日志(Redo Log)
- InnoDB 撤销日志(Undo Logs)
InnoDB 存储引擎采用了后写机制(还有人称为日志先行策略),也就是说当对数据进行修改时,先记录在内存中,然后由数据库线程刷新到磁盘文件。
事务的操作就会记录成 Redo Log (重做日志),然后转换为顺序的IO来提交事务。也就是说当事务记录到日志中之后,就表示事务已经完成了,会立即返回信息给用户。实际上,数据的操作可能还在内存中,并没有刷新到磁盘。所以,如果这时机器出现故障,那么这部分数据就会丢失。
InnoDB 存储引擎通过 Redo Log 来保证数据的一致性。有人会说那就保存所有的 Redo Log 不就万无一失了,这样系统出现故障或者崩溃后,根据日志重建数据,很显然这样是理想状态。InnoDB 存储引擎为了解决这个问题,引入了检查点机制,通过定时检查,可以保证在检查点之前的日志都写入磁盘,只会丢失一小部分数据。那么这些机制具体是怎么运转的呢,小编会另起文章详细参数。下面先上两张图,从整体上看一下 InnoDB 存储引擎的架构,后文会对其进行分解阐述。
官网的InnoDB 存储引擎图:
下图是网上找到的InnoDB 存储引擎架构图,很遗憾最终没有找到出处,感谢绘制这张图的作者。
2、参考文献
- 《高性能MySQL(第3版)》
- 《MySQL技术内幕:InnoDB存储引擎(第2版)》
- 《MySQL源码库》
- 《MySQL参考手册》
- 《MySQL实战45讲》
- 《MySQL 是怎样运行的:从根儿上理解 MySQL》
还没有评论,来说两句吧...