Innodb表结构详解

原文地址

表空间由segment、extend、page组成,其中page是InnoDB磁盘管理的最小单位(默认大小为16K)。如下图:
在这里插入图片描述

Segment (段)

常见的segment有数据段、索引段、回滚段等, 数据段为B+树的叶子节点(Leaf node segment)、索引段为B+树的非叶子节点(Non-leaf node segment)。如下图:
在这里插入图片描述

Extend (区)

​ 每个区大小固定为1MB,为保证区中page的连续性通常InnoDB会一次从磁盘中申请4-5个区。在默认page的大小为16KB的情况下,一个区则由64个连续的page。

​ InnoDB 1.2.x版本增加参数innodb_page_size参数指定page的大小,但区的大小不会改变。 当启用了innodb_file_per_table参数后创建的表大小默认是96KB,而不是立即是1MB,是由于每个段开始先使用32个页大小的fragment page(碎片页)来存放数据,对于一些小表可节省磁盘空间。

Page (页)

​ 每个page默认大小为16K, InnoDB 1.2.x版本增加参数innodb_page_size参数指定page的大小,设置完成后表中所有page大小都固定,除非重新dump再imports数据,否则不能再修改page大小。page类型有:

(1) B-tree node - 数据页

(2) undo log page - undo页

(3) system page - 系统页

(4) transaction system page - 事务数据页

(5) insert buffer bitmap - 插入缓冲位图页

(6) insert buffer free list - 插入缓冲空闲列表页

(7) uncompressed BLOB page - 未压缩缓冲空闲列表页

(8) compressed BLOB page - 压缩的二进制大对象页

ROW (行)

Innodb 存储引擎表的数据是按行进行存放的。每个页存放的行记录也是有硬性定义的,最多允许存放 16 KB / 2 - 200 行的记录,即 7992 行记录。行空间中存放实际的表数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值