本章主要介绍Buffer Pool特性。双写缓冲区参考《mysql5.7系统表空间和独立表空间,断,组,区,页的概念,innodb双写缓冲区》
即使select一行数据,innodb也会读取一页16kb数据,那么当一行数据返回到应用层时,innodb分析出来有很大的概率数据都是顺序读的,比如分页,那么innodb此时会把这一页缓存起来,称为Buffer Pool,这个buffer默认是128MB:
show variables like ‘innodb_buffer_pool_size‘; -- 默认134217728字节 = 128MB
可以在mysql的配置文件里把它调大,默认128MB是偏小的。
Buffer Pool里面肯定放的是缓存页,这个页和磁盘大小是一样的,都是16KB,里面会有很多页,一个页就有一个控制块,控制块会存很多信息:表空间编号、页号、页地址等等控制信息,一个控制块就对应了一个缓存页,控制块在buffer pool中的位置:
一个控制块大约占页的5%大小,也就是 16kb * 5%,上面提到的innodb_buffer_pool_size里的大小是不包含控制块大小的。如果你设置的是128MB,那么系统申请的将是 128 * 105% 会把控制块大小再加上去。
end.
mysql5.7 Buffer Pool特性介绍。innodb三大特性:双写缓冲区、Buffer Pool、AHI(自适应HASH索引)
原文:https://www.cnblogs.com/zhuwenjoyce/p/15041517.html