1 内存结构
InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理,因此可将其视为基于磁盘的数据库系统(Disk-base Database)。在数据库中CPU速度与磁盘速度是有很大差距的,基于磁盘的数据库系统通常使用缓冲池技术来提高数据库的整体性能。结构如下图所示:
内存结构部分主要分为四个部分,Buffer Pool(缓冲池)、Change Buffer(变更缓冲)、Adaptive Hash Index(自适应哈希索引)、Log Buffer(日志缓冲)。
可以使用命令SHOW ENGINE INNODB STATUS;查看具体的信息。
如果从内存上来看,Change Buffer 和 Adaptive Hash Index 占用的内存都属于 Buffer Pool,Log Buffer占用的内存与 Buffer Pool独立。
1.1 缓存池 Buffer Pool
Buffer Pool是InnoDB内存中的一块占比较大的区域,通过内存的速度来弥补磁盘速度慢对数据库性能的影响。为了能够更好的提高查询效率,缓冲池划分为多页来更高效地存储多行数据。缓冲池的结构是双向链表的形式实现的,页与页