《MySql技术内幕 InnoDb存储引擎》学习笔记【五 表】

版权声明:本文为博主原创,转载请注明出处! https://blog.csdn.net/greedystar/article/details/87864909

目录

五 表

(一)索引组织表

(二)逻辑存储结构

1 表空间

2 段

3 区

4 页

5 行


五 表

(一)索引组织表

在InnoDB中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。每个InnoDB的表都有主键,如果创建表时没有显式的定义主键,则InnoDB会自动为表选择或创建主键:

  1. 判断表中是否有非空的唯一索引,若有则该列为主键,若有多个则第一个定义的索引列为主键。
  2. 如果没有非空的唯一索引,则创建一个6字节大小的列作为主键。

(二)逻辑存储结构

InnoDB中,所有数据都被逻辑的存放在一个空间中,称为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成,如下图所示:

1 表空间

表空间是InnoDB逻辑结构的最高层,所有数据都放在表空间中。我们知道InnoDB有一个共享表空间,所有数据都存放在这个表空间中,如果用户启用了参数innodb_file_per_table,则每张表内的数据可以单独放到一个表空间内。

需要注意,每张表空间只存放数据、索引和插入缓冲Bitmap页,其他的回滚信息、事务信息、二次写缓冲还是存放在共享表空间。

2 段

表空间是有各个段组成的,常见的段有数据段、索引段、回滚段等。我们知道InnoDB是索引组织表,因此索引段即为表空间中的非叶子节点段,数据段为表空间中的叶子节点段(参照上文结构图)。

注意:回滚段较为特殊。

3 区

区是由连续页组成的空间,每个区的大小固定为1MB,为了保证区中页的连续性,InnoDB一次从磁盘申请4到5个区,一个区中默认包含64个连续的页(由于页的可压缩行和页默认大小的可配置性,这个值会发生变化)。

4 页

页是InnoDB磁盘管理的最小单位,页的大小默认为16KB,从InnoDB1.2.x版本开始,可通过innodb_page_size将页的默认大小设置为4K、8K、18K。

常见的页类型有:

  1. 数据页
  2. undo页
  3. 系统页
  4. 事务数据页
  5. 插入缓冲位图页
  6. 插入缓冲空闲列表页
  7. 未压缩的二进制大对象页
  8. 压缩的二进制大对象页

5 行

InnoDB中的数据是按行存放的,每个页中最多允许存放16KB / 2 – 200行,也就是7992行记录。

特此声明:本系列博客为均为《MySql技术内幕 InnoDb存储引擎》读书笔记,存在错误还请指正

参考资料

《MySql技术内幕 InnoDb存储引擎》

猜你喜欢

转载自blog.csdn.net/greedystar/article/details/87864909