MySQL技术内幕4表

4.1索引组织表

如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按照如下方式选择或者创建主键:

  • 首先判断表中是否有非空的唯一索引,如果有,则该列为主键
  • 如果不符合以上条件,InnoDB存储引擎自动创建一个6字节大小的指针
    当表中有多个非空唯一索引时,InnoDB存储引擎将选择第一个定义的非空唯一索引为主键。需要注意的是,主键的选择是根据定义索引的顺序,而不是建表时列的顺序。
    当没有显示的声明主键或者声明单列主键时,可以用_rowid来查询自动生成的表的主键;_rowid只能用于查询单个列表作为主键的情况,对于多列组成的主键无能为力

4.2InnoDB逻辑存储结构

所有数据被逻辑的存放在表空间中,表空间又由段segment,区extent,页page组成。

4.2.1表空间

4.2.2段

常见的段有数据段、索引段和回滚段。
数据段即B+树的叶子节点,索引段即为B+树的非叶子节点。

4.2.3区

区是由连续页组成的空间,在任何情况下每个区的大小都为1MB。为了保证区中页的连续性,InnoDB存储引擎一次从磁盘申请4~5个区。在默认情况下,InnoDB存储引擎页的大小为16KB,即一个区中一共有64个连续的页

猜你喜欢

转载自www.cnblogs.com/zhouyu0-0/p/11963869.html