数据页结构

  1. 数据页是mysql中进行数据操作的最小单元。每个数据页默认是16kb。
  2. 数据页并不是全部存储的数据,而是由很多部分组成,大体包括文件头,数据页头,最大记录,最小记录,多数据行,空闲区域,数据页目录,文件尾部。
  3. 文件头占据了38字节,数据页头占据56字节,最大记录和最小记录占据26字节,数据区域大小不固定,空闲区域也不固定,数据页目录大小也不固定,文档尾部8字节。
  4. 假如插入一条数据,先将数据页加载进buffer pool作为缓存页,在缓存页中插入数据,移动链表,最后刷进磁盘中。

    表空间和数据区

  5. 平常创建的表,会对应表空间的概念,在磁盘上会对应”表名.ibd”的磁盘数据文件。

  6. 表空间中有数据区,数据区中包含数据页。1个数据区 = 1个数据页 * 64个连续,1个数据页=16kb,1个数据区=1mb,256个数据区划分为一组。大小包含关系为:表空间,组,数据区,数据页
  7. 表空间中,第一组数据区的第一个数据区的前三个数据页,是固定的,存放描述性信息。

    比如FSP_HDR数据页,存放表空间和这一组数据区的一些属性
    IBUF_BITMAP数据页,存放这一组数据页的所有的insert buffer信息
    INODE数据页,存放特殊信息。
    4. 表空间中,其他组的数据区,第一组数据区的第一个数据区的前两个数据页,也是存放特殊信息的。
    image.png