表空间:ibdata公用表空间文件,也可以通过配置innodb_file_per_table设置独立表空间文件
ibd独立表空间,只存储(数据,b+树索引,插入缓冲区)其余信息还是存储在ibdata中
Ibd存储了一个表的所有索引数据
一个表空间可以有多个文件,从0号文件开始
段:构成索引,表,回滚段的基本元素 - 79 (主要作用管理逻辑单元)
重点:段是一个逻辑的概念,用来管理,参看段生成 - p85
创建索引时会创建两个段 1.内节点段,2.叶子段
一个表段的数目=索引数目*2 (ibd文件就是由段组成)
Inode:一个inode代表一个段
簇:extent,构成段的基本元素(主要作用,申请空间)
1.连续分配的一段空间
2.多个簇在段内是随机组织的
3.默认包含64个页面(固定大小)
页面:簇的组成单位,也是段管理的最小单位 - p80(主要作用管理物理单元)
段中没有任何空间脱离页面形式存在
一个页大小16kb
0号文件0号页面
38号位置开始存储了表空间描述信息
38号前存储页面头信息
表空间信息和段信息中都存储了满簇链表,半满簇链表,空闲簇链表(双向链表)
簇描述页
一个簇描述页管理16384个页面 16384/40b = 256个簇,第一个簇为描述簇,实际管理255个簇
第一个簇(中第一个页面)被用来做簇描述页,未被加入表空间链表,不存储其它数据
通过描述符地址可得到后面连续64个页面的地址
槽
b+树定位到页面,槽用于页面内搜索(多条记录对应一个槽)(一个槽2字节)
数据改变,修改槽的位置以确定数据顺序
槽内存储的是数据位置,数据之间通过链表相连
页面尾部
存储校验等信息,如果不完整说明数据断裂,两次写保证最终写入正常。
行格式(存储数据的具体格式)
行格式有三种存储方式
1.server层格式:适用所有存储引擎,row模式下binlog存储格式
2.索引元组格式:内存存储格式
3.物理存储格式:compact
变长字段长度存储(如果<128 || (<256 && !blob)) 1字节存储 否则2字节存储
物理长度=extra_size+data_size
网友评论