1. InnoDB逻辑存储结构
上图截取互联网
InnoDB存储引擎中的数据按照表空间进行管理。在初始化时创建一个共享表空间(ibdata1),他存放innodb的所有数据(系统表,回滚(undo)信息【5.7可以单独配置undo表空间】,插入缓冲索引页、系统事务信息,二次写缓冲)。若开启了innodb_file_per_table参数时,每张表创建独立的表空间存储(B+树的数据、索引和插入缓冲Bitmap页),其它信息仍然存储在默认的表空间中。
2. 表空间(tablespace)
表空间由段(segment)、区(extent)、页(page)组成。
3. 段(segment)
段是表空间的主要组织结构,用来管理物理文件。创建一个索引(B+树)时,默认同时创建两个段,分别是内节点段(存储主键)和叶子节点段(存储数据)
4. 区(extent)
区是由物理上连续分配的一段空间(每个区的大小都为1MB),默认innodb页(16K)的情况下,一个区由64个连续页组成。【16K * 64 = 1M】
5. 页(page)
页是文件管理的最小单位,默认每个页的大小为16KB。innodb_page_size参数可以配置页面大小(2KB,4KB, 8KB,16KB等)
常见的页类型:
1)数据页(B-tree Node)
2)undo页(undo Log Page)
3)系统页(System Page)
4)事务数据页(Transaction system Page)
5)插入缓冲位图页(Insert Buffer Bitmap)
6)插入缓冲空闲列表页(Insert Buffer Free List)
7)未压缩的二进制大对象页(Uncompressed BLOB Page)
8)压缩的二进制大对象页(compressed BLOB Page)
6. 行(row)
关系型数据库中数据是按行进行存放的。