在MySQL中,InnoDB是最常用的存储引擎之一,它具有高度的事务支持、行级锁、ACID特性以及自动崩溃恢复等特性。InnoDB的逻辑存储结构可以分为多个层次,下面是详细的解析。
1. 表空间 (Tablespace)
InnoDB的物理存储结构以表空间为基础。表空间负责管理存储数据、索引、表、日志等内容。InnoDB可以使用系统表空间(ibdata 文件)或独立表空间(*.ibd 文件)来存储数据。
- 系统表空间:默认情况下,InnoDB将所有数据库的表和索引都存储在一个共享的表空间文件(
ibdata1)中。可以包含多个数据库的表。 - 独立表空间:如果开启了
innodb_file_per_table配置项,每个表的数据和索引会存储在独立的.ibd文件中。
2. 页 (Page)
在InnoDB的存储引擎中,数据是按页(page)存储的,最小的I/O操作单位是页。每个页的大小通常为16KB,可以通过配置项 innodb_page_size 设置。一个表的数据文件由多个这样的页组成。
页分为以下几种类型:
- 数据页 (Data Page):存储实际的数据行。每个数据页通常存储多个记录(row),它们的存储格式由行的长度和字段决定。
- 索引页 (Index Page):存储B+树索引结构。索引是通过B+树结构来实现的,B+树的每个节点也是一个页。
- 系统页 (System Page):存储InnoDB的元数据,如表空间、段、文件和表的相关信息。

最低0.47元/天 解锁文章
1456

被折叠的 条评论
为什么被折叠?



