1. System Tablespaces区域
系统表空间是change buffer(更改缓冲区)的存放区域,这是在8.0之后重新规划的,在5.x版本的时候,系统表空间还会存放innodb的数据字典undolog日志等信息,在8.0之后主要主要存放更改缓冲区的数据。如果innodb引擎当中,每一张表的独立表空间关闭着的话,那么所有的表的数据以及表的索引也是在系统表空间存储着的,那么系统表空间对应着的参数为innodb_data_file_path
show variables like '%data_file_path%';
2. File-Per-Table Tablespaces区域
File-Per-Table Tablespaces: 每个表的文件表空间包含单个InnoDB表数据和索引,并存储在文件系统上的单个数据文件中 查看参数为:innodb_file_per_table
show variables like '%file_per_table%';
每一个 .ibd文件 都是一个表空间文件,表空间中存放着这张表的表结构,以及表中的数据索引。
3. General Tablespaces区域
通用表空间,如果没有自己去创建,是没有这个表空间文件的。创建完该表空间可以指定使用该表空间。 datafile关键字后面跟的是表空间关联的表空间文件。
创建表空间
create tablespace ts_itheima add datafile 'myitheima.ibd' engine = innodb;
创建表到指定的表空间内
create table a(id int primary key auto_increment,name varchar(10) engine = innodb tablespace ts_itheima;
通用表空间需要自己创建,并且在创建表的时候需要自己去指定关联的表空间是谁。
通用表空间创建完成,通用表空间需要自己创建,创建表的时候需要自己去指定关联的表空间是谁。
4. Undo Tablespaces撤销表空间
这个表空间主要存放着undolog日志,这里面会涉及到两个大小相同的表空间,这两个大小相同的表空间叫undo_001和undo_002,默认是这两个。这两个文件就是撤销表空间所对应的文件。
5. Temporary Tablespaces临时表空间
临时表空间主要存储一些用户创建的临时表。
6. Doublewrite Buffer Files双写缓冲区
7. Redo Log重做日志
当事务提交,redo log的意义就不大了,它的作用是异常时保证数据恢复。从而保证事务的持久性。