InnoDB引擎的逻辑存储结构(在前面的a_44_0笔记里学过一遍,我这里直接复制粘贴我前面写的笔记)

1、TableSpece:表空间。存放例如ibd后缀的文件 在一个表空间中会包含若干个Segment段

2、Segment:段。在一个Segment段中包含若干个Extent区

3、Extent:区。一个区包含若干个Page页。一个Extent区的大小是固定的,为1M。一个区中包含64个页

4、Page:页,有数据页、索引页。一个Page页包含若干个Row行。是磁盘操作的最小单。一个Page页的大小是固定的,为16K

5、Row:行。行就是我们存储在表里面具体的一行行的数据。一个Row行包含如下 (1)Trx id:最后一次操作事务的id (2)Roll pointer:指针 (3)col1:字段1 (4)col2:字段2 (5)col3:字段3 (6)......

 

表空间(ibd文件): 一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 例如linux的mysql数据文件是在 /var/lib/mysql 目录下,其中的mysql.ibd文件就是表空间文件

: 分为数据段、索引段、回滚段,InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个区

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

: 是InnoDB存储引擎磁盘管理的最小单元,每个页的大小默认为16KB。为了保证页的连续性,InnoDB存储引擎每次从磁盘申请4~5个区

: InnoDB存储引擎数据是按行进行存放的

Trx_id: 每次对某条记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。简单理解Trx_id就是最后一次操作事务时的id

Roll_pointer: 每次对某条引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该 记录修改前的信息。简单理解Roll_pointer就是指针,通过这个指针我们能找到数据在增删改之前的数据