InnoDB的表格空间-Part3(系统表格空间)

在了解了独立表格空间的基本结构後,系统表格空间就好了解多了,基本上很类似,但系统表格空间需要纪录一些与整个系统相关的资讯,所以多一些用来记录这些资讯耊面,因为其是最重要的,相当於所有表格空间的带头大哥,所以他的SpaceID是0。

我们知道独立表格空间第一组的前三页固定是[FSP_HDR(页号0)、IBUF_BITMAP(页号1)、INODE(页号2)]
而系统表格空间又多了以下五个页面

  • SYS(insert buffer header):储存change buffer的表头资讯
  • INDEX(insert buffer root):储存change buffer的根页面
  • TRX_SYS(transaction system):交易系统的相关资讯
  • SYS(fisrt rollback segment):第一个回覆段的资讯
  • SYS(data dictionary header):资料字典表头资讯

Innodn资料字典

要实现一个插入纪录的动作,Mysql除了保存我们要插入的使用者纪录外,还需要其他额外的资讯。比如:

  • 表属於那个表格空间,表内有多少列?
  • 表对应的每一列类型是什麽?
  • 表有多少索引?每个索引对应那些栏位?该索引的根页面在那个表格空间的那个页面?
  • 表有那些外键?外键对应表的那些列?
  • 某个表格空间对应的档案系统上的档案路径是什麽?
    这些为了更进一步管理使用者纪录而不得不引入的一些额外机料,又称为中继资料。

Innodb储存引擎特意定义了一系列的内部系统表来纪录这些中继资料。

  • SYS_TABLES:整个Innodb储存引擎中所有表的资讯
  • SYS_COLUMNS:整个Innodb储存引擎中所有列的资讯
  • SYS_INDEXES:整个Innodb储存引擎中所有索引的资讯
  • SYS_FIELDS:整个Innodb储存引擎中所索引对应的列的资讯
  • SYS_FOREIGN:整个Innodb储存引擎中所有外键的资讯
  • SYS_FOREIGN_COLS:整个Innodb储存引擎中所有外键对应的列的资讯
  • SYS_TABLESPACES:整个Innodb储存引擎中所有的表格空间资讯
  • SYS_DATAFILES:整个Innodb储存引擎中所有表格空间对应的档案系统路径资讯
  • SYS_VIRTUAL:整个Innodb储存引擎中所有虚拟生成列的资讯
    这些系统表也被称为资料字典,它们都是以B+树的形式保存在系统表格空间的某些页面。
    来看看几个较重要的表的详细资讯
  1. SYS_TABLES表
  • NAME:表的名称
  • ID:表的唯一ID
  • N_COLS:该表拥有列的个数
  • TYPE:表的类型,纪录了些档案格式、行格式、压缩等资讯
  • MIX_ID:已过时,忽略
  • MIX_LEN:表的额外属性
  • CLUSTER_ID:未使用,忽略
  • SPACE:表所属表格空间的ID
    该表有两个索引
    (1)以NAME列为主键的聚簇索引
    (2)以ID列建立的二级索引
  1. SYS_COLUMNS表的列
  • TABLE_ID:所属表的ID
  • POS:该列在表中是第几列
  • NAME:该列的名称
  • MTYPE:主资料类型(ex:int, char, varchar之类的)
  • PRTYPE:精确资料类型,修饰主资料的那些东西(ex:是否允许NULL之类的)
  • LEN:该列最多占用储存空间的位元组数
  • PREC:该列的精度(似乎没有使用),预设值都是0
    该表只有一个索引 - 以(TABLE_ID,POS)列为主键的聚簇索引
  1. SYS_INDEXES表的列
  • TABLE_ID:该索引所属表对应的ID
  • ID:索引的唯一ID
  • NAME:索引的名称
  • N_FIELDS:索引包含列的个数
  • TYPE:索引类型(ex:聚簇索引, 唯一二级索引, 全文索引之类的)
  • SPACE:索引根页面所在的表格空间ID
  • PAGE_NO:索引根页面所在的页面号
  • MERGE_THRESHOLD:如果页面中的纪录被删除到某个比例,就尝试把该页和相邻页合并,这个值就是这个比例
    该表只有一个索引 - 以(TABLE_ID,ID)列为主键的聚簇索引
  1. SYS_FIELDS表的列
  • INDEX_ID:该列所属索引的ID
  • POS:该列在索引列中是第几列
  • COL_NAME:该列的名称
    该表只有一个索引 - 以(INDEX_ID,POS)列为主键的聚簇索引

除了这四个重要的表外,系统表格空间的第7个页面纪录了资料字典的表头资讯(未来有需要在进一步说明)


<<:  全端入门Day16_前端程序撰写之多一点的CSS

>>:  Unity自主学习(二):如何安装Unity(一)

Powershell 远程连接

使用过 Linux 的都知道,Linux 的 shell 不但可以本地运行,也可以通过远程的方式连接...

Day 16 AWS云端实作起手式第六弹 串接两大网路流量导流服务Route53和ELB

今天我们会把Route 53串接到昨天建置的ELB上。但开始之前,我们先问自己一个问题,Route ...

【Vim 编辑器 配置指南】订制个人的编辑神器

欲善其事 先利其器 目录 前言 Vim 配置 Vim 插件 终端机指令 前言 工程师要学习 Vim ...

LeetCode解题 Day19

115. Distinct Subsequences https://leetcode.com/pr...

Day 5:建立专案(三):专案档案架构

继续执行上一篇未完的流程,如下图,点选 Projucer 上方的 Xcode 图示(若左方的 Exp...