页面类型
InnoDB 是以页为单位来管理存储空间的,针对不同的使用场景设计了不同类型的页面。
类型名称 | 十六进制 | 描述 |
---|---|---|
页面的结构
![](https://img.haomeiwen.com/i7304940/40ef990444968976.png)
-
File Header
记录页面的通用信息。名称 占用空间大小 描述 -
File Trailer
校验页是否完整,保证页面在从内存刷新到磁盘后内容是相同的。
区和段的概念
表空间中的页面太多,为了方便管理,于是又提出了区的概念。对于16KB的页来说,连续的64个页就是一个区,也就是说一个区默认占用1MB空间大小。每256个区划分为1个组。
![](https://img.haomeiwen.com/i7304940/43848ba612fa62ba.png)
-
为什么要引入区的概念呢?
image.png
我们向表中插入一条记录,本质上就是向该表的聚簇索引以及所有二级索引代表的B+树节点中插入数据。而B+树每一层中的页都会形成一个双向链表,如果以页为单位来分配存储空间。双向链表相邻的两个页之间的在磁盘的物理位置可能离得非常远。对于传统的机械磁盘来说,需要重新定位磁头位置,也就是说会产生随机IO。所以,为了尽量让这些在页面链表中相邻页的物理位置页相邻,尽可能的消除随机IO,才引入了区的概念。一个区就是物理位置上连续的64个页面,在表中的数据量很大时,为某个索引分配空间的时候就不再以页为单位,而是按照区为单位分配,甚至在表中数据非常多的时候,可以一次性分配多个连续的区。
网友评论