InnoDB引擎底层逻辑讲解——架构之磁盘架构

1. System Tablespaces区域

系统表空间是change buffer(更改缓冲区)的存放区域,这是在8.0之后重新规划的,在5.x版本的时候,系统表空间还会存放innodb的数据字典undolog日志等信息,在8.0之后主要主要存放更改缓冲区的数据。如果innodb引擎当中,每一张表的独立表空间关闭着的话,那么所有的表的数据以及表的索引也是在系统表空间存储着的,那么系统表空间对应着的参数为innodb_data_file_path

InnoDB引擎底层逻辑讲解——架构之磁盘架构_第1张图片

show variables like '%data_file_path%';

InnoDB引擎底层逻辑讲解——架构之磁盘架构_第2张图片
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第3张图片

2. File-Per-Table Tablespaces区域

File-Per-Table Tablespaces: 每个表的文件表空间包含单个InnoDB表数据和索引,并存储在文件系统上的单个数据文件中 查看参数为:innodb_file_per_table

show variables like '%file_per_table%';

在这里插入图片描述
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第4张图片
每一个 .ibd文件 都是一个表空间文件,表空间中存放着这张表的表结构,以及表中的数据索引。

3. General Tablespaces区域

通用表空间,如果没有自己去创建,是没有这个表空间文件的。创建完该表空间可以指定使用该表空间。 datafile关键字后面跟的是表空间关联的表空间文件。
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第5张图片
创建表空间

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;

通用表空间需要自己创建,并且在创建表的时候需要自己去指定关联的表空间是谁。
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第6张图片
通用表空间创建完成,通用表空间需要自己创建,创建表的时候需要自己去指定关联的表空间是谁。

4. Undo Tablespaces撤销表空间

这个表空间主要存放着undolog日志,这里面会涉及到两个大小相同的表空间,这两个大小相同的表空间叫undo_001和undo_002,默认是这两个。这两个文件就是撤销表空间所对应的文件。
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第7张图片
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第8张图片

5. Temporary Tablespaces临时表空间

临时表空间主要存储一些用户创建的临时表。
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第9张图片

6. Doublewrite Buffer Files双写缓冲区

InnoDB引擎底层逻辑讲解——架构之磁盘架构_第10张图片

7. Redo Log重做日志

当事务提交,redo log的意义就不大了,它的作用是异常时保证数据恢复。从而保证事务的持久性。
InnoDB引擎底层逻辑讲解——架构之磁盘架构_第11张图片

你可能感兴趣的:(MySQL知识,架构,性能优化,数据库,mysql)