暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
18调节磁盘和CPU的矛盾 —— InnoDB 的 Buffer Pool(02).pdf
444
29页
21次
2022-03-14
免费下载
InnoDB Buffer Pool
标签 MySQL 是怎样运⾏的
缓存重要
通过前边的唠叨我们知道,对于使InnoDB作为存储引擎的表
说,不管是⽤于存储⽤户数据的索引(包括聚簇索引和⼆级索引)
还是各种系统数据,都是以⻚的形式存放在表空间中的,⽽所谓的
空间只不过InnoDB⽂件系统上⼀个或⼏个实际⽂件的抽象,也
就是说我们的数据说到底还是存储在磁盘上的。但是各位也都知道
磁盘的速度慢的跟乌⻳⼀样,怎么能配得上快如⻛,疾如CPU
呢?所以InnoDB储引擎在处理客户端的请求时,当需要访问某个
⻚的数据时,就会把完整的⻚的数据全部加载到内存中,也就是说
使我们只需要访问⼀个⻚的⼀条记录,那也需要先把整个⻚的数据
载到内存中。将整个⻚加载到内存中后就可以进⾏读写访问了,在
⾏完读写访问之后并不着急把该⻚对应的内存空间释放掉,⽽是将
缓存起来,这样将来有请求再次访问该⻚⾯时,就可以省去磁IO
的开销了。
InnoDBBuffer Pool
啥是Buffer Pool
设计InnoDB⼤叔为了缓存磁盘中的⻚,在MySQL务器启动的时
候就向操作系统申请了⼀⽚连续的内存,他们给这⽚内存起了个名
叫做Buffer Pool(中⽂名是缓冲池)。那它有多⼤呢?这个其实
看我们机器的配置,如果你是⼟豪,你512G存,你分配个⼏百
G作为Buffer Pool也可以啊,当然你要是没那么有钱,设置⼩点
也⾏呀~ 默认情况Buffer Pool128M⼩。当然如果你嫌
弃这128M⼤或者太⼩,可以在启动服务器的时候
innodb_buffer_pool_size数的值,它表Buffer Pool
的⼤⼩,就像这样:
[server]
innodb_buffer_pool_size = 268435456
其中268435456的单位是字节,也就是我指定Buffer Pool的⼤
⼩为256M。需要注意的是,Buffer Pool也不能太⼩,最⼩值
5M(当⼩于该值时会⾃动设置成5M)
Buffer Pool组成
Buffer Pool中默认的缓存⻚⼤⼩和在磁盘上默认的⻚⼤⼩是⼀样
的,都是16KB。为了更好的管理这些在Buffer Pool中的缓存⻚,
设计InnoDB⼤叔为每⼀个缓存⻚都创建了⼀些所谓的控制信息,
这些控制信息包括该⻚所属的表空间编号、⻚号、缓存⻚Buffer
Pool中的地址、链表节点信息、⼀些锁信息以及LSN信息(锁LSN
我们之后会具体唠叨,现在可以先忽略),当然还有⼀些别的控制
息,我们这就不全唠叨⼀遍了,挑重要的说嘛~
每个缓存⻚对应的控制信息占⽤的内存⼤⼩是相同的,我们就把每
⻚对应的控制信息占⽤的⼀块内存称为⼀个控制块吧制块和缓
⻚是⼀⼀对应的,它们都被存放到 Buffer Pool 中,其中控制块被
放到 Buffer Pool 前边,缓存⻚被存放到 Buffer Pool 后边,所
整个Buffer Pool对应的内存空间看起来就是这样的
of 29
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜