Mysql之BufferPool中chunk的使用及说明
BufferPool中chunk的概述
由于每次调整Buffer Pool的大小时,都需要重新向操作系统申请一块连续的内存空间,然后将旧的Buffer Pool中的内容复制到这一块新空间,但是这种操作是极其耗时的。
所以,InnoDB不再一次性为某个Buffer Pool实例向操作系统申请一大片连续的内存空间,而是以一个chunk为单位向操作系统申请空间。
也就是说,一个Buffer Pool实例其实是由若干个chunk组成的。一个chunk就代表一片连续的内存空间,里面包含了若干缓冲页与其对应的控制块。
Buffer Pool包含2个实例
每个实例里包含2个chunk。
- 如下图所示:

通过innodb_buffer_pool_chunk_size指定chunk的大小
- 如下图所示:

【注】:8388608/1024/1024=8MB, innodb_buffer_pool_chunk_size的值并不包含缓冲页对应的控制块的内存空间大小。
因为有chunk这个概念,那么针对上图来看,BufferPool中是存在两个实例的,并且每个BufferPool实例中,又是存在两个chunk的。
而当服务器运行的时候,如果有需要调整BufferPool容量大小的情况发生,那么,就可以针对chunk为维度去执行新增或删除BufferPool内存空间的操作。
如果没有chunk的话,那么我们针对BufferPool容量调整的操作,就需要以BufferPool为维度了,那么必然需要向操作系统再次申请一大片的内存空间,然后再进行缓冲页的拷贝操作。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
win10 mysql 5.6.35 winx64免安装版配置教程
这篇文章主要为大家详细介绍了win10 mysql 5.6.35 winx64免安装版配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-05-05
docker 部署mysql详细过程(docker部署常见应用)
这篇文章主要介绍了docker 部署mysql之docker部署常见应用,本文以docker部署mysql5.7.26为例,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-08-08


最新评论