MySQL-Innodb存储结构


1. InnoDB逻辑存储结构

image

       上图截取互联网


         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)

关系型数据库中数据是按行进行存放的。





posted @ 2020-04-06 20:27  KuBee  阅读(203)  评论(0编辑  收藏  举报