四、表

image

数据在表中是如何组合字和存放的。

4.1 索引组织表

在InnoDB 存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table)。在InnoDB存储引擎表中,每张表都有个主键,如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键:

  • 首先判断表中是否有非空的唯一索引,如果有,则该列即为主键
  • 如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针

当表中有多个非空唯一索引时,InnoDB存储引擎将选择建表时第一个定义的非空唯一索引引为主键。这里需要注意的是:主键的选择根据的是定义索引的顺序,而不是建表时列的顺序。

4.2 InnoDB 逻辑存储结构

表空间(tablespace):由段(segment)、区(extent)、页(page)组成。页在一些文档有时也称为块(block)

image

1)表空间

如果启用了 innodb_file_per_table 的参数,需要注意的是每张表的表空间内存放的只是数据、索引和插入缓冲 Bitmap 页,其他类的数据,如回滚(undo)信息,插入缓冲索引页、系统事务信息,二次写缓冲等还是存放在原来的共享表空间内。

2)段

常见的段有数据段,索引段,回滚段等

3)区

区由连续页组成的空间,在任何情况下每个区的大小都为1MB。为了保证区中页的连续性,InnoDB存储引擎一次从磁盘申请4~5个区。在默认情况下,InnoDB存储引擎页的大小为16KB,即一个区中一共有64个连续的页。

4)页

页是InnoDB磁盘管理的最小单位。默认16KB

常见页类型:

  • 数据页
  • undo页
  • 系统页
  • 事务数据页
  • 插入缓冲位图页
  • 插入缓冲空闲列表页
  • 未压缩的二进制大对象页
  • 压缩的二进制大对象页

5)行

Redundant格式是为兼容之前版本而保留的

Compact是为高效地存储数据

4.4 InnoDB数据页结构

  • File Header(文件头)
  • Page Header(页头)
  • Infimum 和 Supremum Records
  • User Records(用户记录,即行记录)
  • Free Space(空闲空间)
  • Page Directory(页目录)
  • File Trailer(文件结尾信息)
posted @ 2023-10-07 20:32  LHX2018  阅读(9)  评论(0编辑  收藏  举报