MySQL之InnoDB存储引擎-逻辑存储结构

MySQL之InnoDB存储引擎-逻辑存储结构

1.InnoDB逻辑存储结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNgL4FGO-1653972538378)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220531124015899.png)]

2.表空间

表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,ibd文件其实就是表空间文件,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个表空间,用于存储记录(即表中数据)、索引等数据,在表空间中可以包含多个Segment段

3.段

表空间是由各个段组成的
段, 分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点, 索引段即为B+树的非叶子节点。段用来管理多个Extent(区)。InnoDB中对于段的管理,都是引擎自身完成,不需要人为对其控制,一个段中包含多个区。

4.区

区,表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一个区中一共有64个连续的页。

5.页

页,是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB。为了保证页的连续性,InnoDB 存储引擎每次从磁盘申请 4-5 个区;表结构中的记录以及索引都是在页中存储的
16KB是指16x1024个字节

6.行

InnoDB 存储引擎是面向行的,也就是说数据是按行进行存放的。
在行中,默认有两个隐藏字段:
Trx_id:每次对某条记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。
Roll_pointer:每次对某条引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。

猜你喜欢

转载自blog.csdn.net/qq_53267860/article/details/125063467