配置
- innodb文件的存储路径:
innodb_data_file_path行、页、区、段、表
行
行长度
对于4KB、8KB、16KB、32KB的页大小,最大的行长度为页大小的一半
对于64KB的页大小,最大的行长度为16KB行格式
页
innodb中的页具有固定大小,默认是16KB,也可以通过innodb_page_size配置修改页大小,可以将页修改为8KB、4KB或32KB、64KB区
在Innodb中,多个页会被组织为区。区大小
页大小与区大小 当页大小为16KB时,每个区有64个页,一个区大小为1M。 当页大小为8KB时,每个区有128个页,一个区大小为1M,同理当页大小为4KB时,每个区有256个页,一个区大小仍为1M。 当页大小为32KB时,每个区有64个页,一个区大小为2M,同理当页大小为64KB时,一个区大小为4M。(5.7.6版本之后)
Innodb的一些特性,如段、预读、双写等,都是读、写、申请、释放一个整个区
段
分配准则
一个段第一次申请时,会先分配32个页(不够1个区哦~),当这32个页使用完毕,再次申请分配时才会一次性分配1个区(64个连续页),为了保证数据的连续性,Innodb可以一次性分配4个连续的区给段。
段与索引
对于每个索引,都会分配两个段,一个存储B+Tree的非叶子节点,一个存储叶子节点。为什么要这样呢?因为我们知道B+Tree的叶子节点才会存储数据,将所有叶子节点连续存放会对顺序IO比较友好。
命令
show table status会显示表的状态,其中包含的Data_free,这些是可用的区数。Innodb总是会保留一些可用的区用来清理数据或者其他功能,这些保留的区不会算在Data_free中。
