美文网首页
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