10.2 InnoDB系统表空间 (gold_axe)

2019-07-22  本文已影响0人  胖达_4b7e

实际文件

数据目录下 有个 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

Segment Header


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

猜你喜欢

热点阅读