表
InnoDB存储引擎中,每张表都有主键,如果在创建时没有显式地定义主键,则引擎会搜索表中是否有非空的唯一索引,如果有,该列为主键,如果没有,引擎会在表中创建一个大小6字节的指针。表都是根据主键顺序存放的。
1.InnoDB逻辑存储结构
所有的数据都被逻辑地存放在一个空间中,称之为表空间。表空间又由段、区、页组成。大致结构如图:
1.1 各区域解析
表空间——>之前有学到InnoDB引擎有一个共享表空间ibdata1,所有的数据都可以放在这个表空间内。如果开启了参数innodb_file_per_table,则每张表的数据都可以单独放在一个表空间内。但是每张表空间里存放的数据只有数据、索引和插入缓冲位图页。回滚信息、插入缓冲索引页、系统的事务信息,还有二次写缓冲还是存放在原来的共享表空间。
段——>常见的段有数据段,索引段和回滚段,索引段在B+树中是非叶结点,也就是上图的非叶结点段;数据段则为上图的叶结点段。回滚段对于事务非常重要,后期单独介绍。
区——>区是由连续页组成的空间,一个区里固定大小为1M,装着64个16KB的页。
页——>页是磁盘管理的最小单位。常见页类型有索引页,数据页,und