InnoDB Storage Engine
page 表示磁盘(数据文件)和内存( 缓冲池 buffer pool) 之间每一次传输的数据量基本单位。一页可以包含一行或多行,具体取决于每行中的数据量。如果一行不完全适合单个页面,则设置额外的指针样式数据结构,以便可以将有关该行的信息存储在一个页面中。
在每页中容纳更多数据的一种方法是使用 压缩行格式(compressed row format)。对于使用 BLOBs 或大文本字段的表, 紧凑行格式(compact row format) 允许将这些大列与行的其余部分分开存储,从而减少不引用这些列的查询的 I/O 开销和内存使用。
当 InnoDB 批量读取或写入页面集以增加 I/O 吞吐量时,它一次读取或写入一个区(extent)。
MySQL 实例中的所有InnoDB磁盘数据结构共享相同的页面大小。
row 由一组列(columns)定义的逻辑数据结构。一组行(rows)组成一个表。在 InnoDB 数据文件中,每一页可以包含一行或多行。
尽管 InnoDB 使用术语行格式是为了与 MySQL 语法保持一致,但行格式是每个表的属性,适用于该表中的所有行。
InnoDB Record Structure
Name | Size | Meaning |
---|---|---|
Field Start Offsets | (F1) or (F2) bytes | a list of numbers containing the information “where a field starts”. |
Extra Bytes | 6 bytes | a fixed-size header. |
Field Contents | depends on content | contains the actual data. |
EXTRA BYTES
InnoDB Page Structure
「页」是InnoDB管理存储空间的基本单位,也是内存和磁盘交互的基本单位。
InnoDB有很多类型的页,它们的用处也各不相同。比如:有存放undo日志的页、有存放INODE信息的页、有存放Change Buffer信息的页、存放用户记录数据的页等等。
InnoDB默认的页大小是16KB,在初始化表空间之前可以在配置文件中进行配置,一旦初始化完成就不可再变更了。
|
|
Fil Header
Page Header
The Infimum and Supremum Records
User Records
Free Space
Page Directory
Fil Trailer
最小存储单元
为什么要说到最小存储单元呢?这要从计算机的存储说起。计算机在存储数据的时候,有最小存储单元,这就好比现金的流通最小单位是一毛。
在计算机中,最小存储单位分别为:
1)磁盘:扇区(512byte)
2)文件系统:块(4kb)
3)InnoDB:页(16kb)