引言
在上一篇文章中,我们主要讲解了InnoDB存储引擎的架构,并提到了一个关键点:不管是查询还是更新操作,都是借助Buffer Pool来完成的。 所以,Buffer Pool的重要性不言而喻,我们今天就来更加进一步剖析Buffer Pool这个组件。
Buffer Pool大小
Buffer Pool本质上是一个内存组件,所以它是有大小限制的。默认情况下它的大小是128MB,在实际生产环境中,我们可以根据实际情况来调整Buffer Pool的大小,你可以通过show variables like 'innodb_buffer_pool_size'
命令来查看当前数据库的Buffer Pool的大小,单位是字节。
Buffer Pool结构
现在我们知道了Buffer Pool的大小,那么Buffer Pool是以什么样的方式来存储数据的呢?
缓存页
对操作系统内存管理了解的同学都知道,操作系统中的非连续分配内存管理主要有三种方式:a) 页式管理、b)段式管理、c)段页式管理。其中页式管理就是:将逻辑地址空间划分为固定大小的页,同时物理内存也划分为同样大小的页框,程序加载的时候,可以将任意一页放入任意一个页框,页框可以不连续,从而达到非连续分配。
同样的,Buffer