索引数据结构及数据组织方式
1、数据存储单元
磁盘:扇区 512字节
文件系统:块 4KB
InnoDB:页 16KB
2、InnoDB索引数据结构
1)B-Tree
在看B+Tree之前,我们先看看B-Tree
B-Tree是一种为外查找(磁盘类外存储设备,数据量太大不能全放在内存里)而设计的平衡多叉树。那为什么用B树而不用其他的如二叉树、平衡二叉树呢?
原因在于当存储关键字个数确定后,用B树进行存储所需要的最大树高相对于二叉树、平衡二叉树要小。这能够减小IO次数,从而提高检索效率。换句话说,使用B树能够确保,访问到任意数据的IO请求的最大次数是确定的。
2)B+Tree
所谓的B+Tree和B-Tree的区别仅仅在于,B-Tree的所有节点均用于存储键或者值。而B+Tree只有叶子节点才用于存储数据,而非叶子节点用于存储键。
B+Tree是对B-Tree的一种优化。因为当非叶子节点存储的值占位太多时,便会增加树的高度。树高的增加带来的是IO的增加。
3、数据组织方式
InnoDB 存储引擎以页(默认为16KB)为基本单位存储
-索引与数据
1)非叶节点页用于存储键和键所在页的指针(键为孩子页的最小键,指针内容为孩子页的页码)。
2)叶节点(数据页)用于存储数据记录。