《MySQL是怎样运行的》【第9章 InnoDB的表空间】笔记

第9章 InnoDB的表空间

上一张思维导图
《MySQL是怎样运行的》【第9章 InnoDB的表空间】笔记

前导知识

系统表空间:对应一个文件系统中一个或多个实际文件

独立表空间:对应文件系统中名为“表名.ibd”的文件

一个表空间最多可以拥有2^32个页

独立表空间

区(extent)

  • 对16KB的页来说,物理位置上连续的64个页组成一个区,即区的大小默认1MB

  • 当表的数据量很大时,为某个索引分配空间不以页为单位,而是以区为单位

  • 区的分类

    • FREE:空闲的区
    • FREE_FRAG:有剩余空闲页面的碎片区
    • FULL_FRAG:没有剩余空闲页面的碎片区
    • FSEG:附属于某个段的区

XDES Entry

  • 每个区都有一个该结构,记录了区的属性
  • 存储在每组开头的第一个页面中
  • 直属于表空间的区将该结构组织成三个链表:FREE、FREE_FRAG、FULL_FRAG

  • 每256个区分为一组
  • 每个组的最开始的几个页面类型是固定的

  • 是一些零散页面和完整的区的集合
  • 一个索引会产生两个段,一个叶子节点段,一个内节点段
  • 每个段中的区对应的XDES Entry结构可以构成FREE、NOT FULL和FULL三个链表
  • 每个段都有一个INODE Entry结构来记录段的属性

碎片区

  • 直属于表空间,不属于任何段,可以存储任何段的页,其中有些页也可以不属于任何段
上一篇:16.查看ORACLE的SAG和PGA的使用率


下一篇:《The way to go学习笔记》第三章