今天来学习下buffer pool里面的细节–里面的数据是怎么样的一个结构
我们知道buffer pool其实就是内存里的一块空间,那么它是怎么存储mysql里面的表、行、字段的呢?
这就要提到mysql的数据页了。根据程序的局部性原理,每次从磁盘加载数据到内存,不是只加载一行记录,而是加载一批相邻的数据行。也就是一整页的数据。这个数据页大小默认是16k。
大概就是下面这个图
buffer pool默认大小是128M,数据页的大小是16KB。
我们可以在图中看到磁盘中的数据页和内存中的数据页是一一对应的,也是16k,
还可以看到页描述文件,这个用于描述数据页,实际上就是记录了页的一些基本信息,比如页的所属表空间、页的编号、页在内存中的地址等等信息。、
下一章复习一下,数据页是如何加载数据到对应的buffer pool中、缓存满了如何运用冷热lru算法淘汰以及如何进行脏数据刷盘。敬请期待