type
status
date
slug
summary
tags
category
icon
password
notion image

表空间

InnoDB 将所有数据都逻辑地存放在一个空间中,称为表空间(Tablespace)。表空间由段(Segment)、区(extent)、页(Page)组成。
  • 开启独立表空间innodb_file_per_table=1,每张表的数据都会存储到一个独立表空间,即 表文件 (5.7 之后默认开启);
  • 关闭独占表空间innodb_file_per_table=0,则所有基于InnoDB存储引擎的表数据都会记录到系统 表空间,即 ibdata1 文件。

系统表空间(System Tablespace)

  • 系统表空间是 InnoDB 数据字典、双写缓冲、修改缓冲和回滚日志的存储位置,如果关闭独立表空间,它也将存储所有表数据和索引;
    • 数据字典(Data Dictionary): 数据字典是由各种表对象的元数据信息(表结构,索引,列信息 等)组成的内部表;
    • 双写缓冲(Doublewrite Buffer):双写缓冲用于保证写入磁盘时页数据的完整性,防止发生部 分写失效问题。非常重要!!!
    • 修改缓冲(Change Buffer): 内存中 Change Buffer 对应的持久化区域 回滚日志(Undo Log):实现事务进行 回滚 操作时对数据的恢复。是实现多版本并发控制 (MVCC)重要组成;
  • 它默认下是一个初始大小 12MB、名为 ibdata1 的文件,系统表空间所对应的文件由 innodb_data_file_path 定义;
  • 指定系统表空间文件自动增长后,其增长大小由 innodb_autoextend_increment 设置(默认为 64MB)且不可缩减,即使删除系统表空间中存储的表和索引,此过程释放的空间仅仅是在表空间文件 中标记为已释放而已,并不会缩减其在磁盘中的大小。

独立表空间(File-per-table Tablespace)

  • 独立表空间用于存放每个表的数据、索引和插入缓冲 Bitmap 页

通用表空间(General Tablespace)

回滚表空间(Undo Tablespace)

临时表空间(The Temporary Tablespace)

存储结构

上一篇
InnoDB - 内存结构
下一篇
InnoDB - 内存数据落盘过程