美文网首页
10.2 InnoDB系统表空间 (gold_axe)

10.2 InnoDB系统表空间 (gold_axe)

作者: 胖达_4b7e | 来源:发表于2019-07-22 00:55 被阅读0次

实际文件

数据目录下 有个 ibdata1 就是系统表空间

看数据目录SHOW VARIABLES LIKE 'datadir';

系统表空间实际文件

每个文件夹对应一个数据库, 选中的是系统数据库,文件夹名就是数据库名, 里面有几个 文件表名.ibd 是独立表空间实际放数据的文件

系统数据库

系统数据库有4个,除了图中选中的三个外 还有information_schema这个系统数据库

4个系统数据库

系统表空间 的数据结构

系统表空间 Space ID 是0
是记录整个系统的元数据的
和普通的表空间 , 在结构上的差异就是 表空间的 第一组的 3~7 号页(0 1 2 页和独立表空间类型也是一样的)


information_schema

如上文所述, 4个系统数据库里面 只有information_schema 没有对应的文件夹
因为它就没自己的数据

在存储引擎启动的时候,会读取 真的系统内部表(SYS开头的表), 填充到information_schema系统数据库里面的INNODB_SYS开头的表里面

内部系统表(也叫数据字典)

数据库除了我们自己插入的信息外, 还需要保存许多额外的数据才能运行
比如 有哪些库, 表,列,每个表的索引,外键, 表空间对应哪个文件路径
这些数据称为元数据
记在 内部系统表 (也叫数据字典)里面,
有很多内部系统表, 以下4个最重要
SYS_TABLES 整个InnoDB存储引擎中所有的的信息
SYS_COLUMNS 整个InnoDB存储引擎中所有的的信息
SYS_INDEXES 整个InnoDB存储引擎中所有的索引的信息
SYS_FIELDS 整个InnoDB存储引擎中所有的索引对应的列的信息

这些内部系统表的元数据 直接硬编码在代码里面
这4个表的 索引的根节点 记在 系统表空间的 7号页面(就是第八页)上


这页的类型是 SYS , 我们给它取名叫 data directory header 页

data directory header 页

data directory header

  • Max Row ID:不论哪个拥有row_id列的表插入一条记录时,该记录的row_id列的值就是Max Row ID对应的值,然后再把Max Row ID对应的值加1,也就是说这个Max Row ID是全局共享的。

  • Max Table ID:用于记录表号 最大到哪了

  • Max Index ID:用于记录索引号 最大到哪了

  • Max Space ID:用于记录表空间号 最大到哪了

  • 4个基本表对应的根节点

Segment Header


和每个根节点页的page header里面的2个Segment Header是一样的, 都是用于找到段对应的INODE Entry
INODE Entry主要记载了 段对应的3条链表在哪, 段对应的零散页是哪几个

相关文章

网友评论

      本文标题:10.2 InnoDB系统表空间 (gold_axe)

      本文链接:https://www.haomeiwen.com/subject/gaeblctx.html