Innodb存储引擎在存储设计上模仿了Oracle的存储结构,其数据是按照表空间进行管理的。所有的数据都要存储在表空间中。
Innodb的表空间分为:
- 系统表空间
新建一个数据库时,Innodb会初始化一个名为ibdata1的系统表空间。可通过innodb_data_file_path来定义其路径、大小以及自动
扩展策略。例如 innodb_data_file_path= ibdata1:1G:autoextend。
系统表空间中主要包括:数据字典、double write buffer、change buffer、回滚段(undo页的索引信息)、undo表空间(5.6之后
可单独定义其路径)、用户数据(如果innodb_file_per_table=0)等。
- 独立表空间
可通过innodb_file_per_table=1来让每张表有独立的表空间,每张表有各自的xx.ibd文件,但是表定义信息还是在ibdata1中。这
里面主要存储数据信息(聚集索引)和普通索引。
- Undo表空间
5.6开始支持创建独立的undo表空间
- 临时表空间
5.7引入的独立表空间文件ib