您当前的位置: 首页 >  sql

小志的博客

暂无认证

  • 1浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Mysql——BufferPool中chunk的理解

小志的博客 发布时间:2021-11-03 20:30:00 ,浏览量:1

一、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为维度了,那么必然需要向操作系统再次申请一大片的内存空间,然后再进行缓冲页的拷贝操作。

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0461s