B-tree树也就是B树 且没有B- 树
磁盘IO与预读
磁盘读取依靠的是机械运动,分为寻道时间、旋转延迟、传输时间三个部分,这三个部分耗时相加就是一次磁盘IO的时间,大概9ms左右。这个成本是访问内存的十万倍左右;正是由于磁盘IO是非常昂贵的操作,所以计算机操作系统对此做了优化:预读;每一次IO时,不仅仅把当前磁盘地址的数据加载到内存,同时也把相邻数据也加载到内存缓冲区中。因为局部预读原理说明:当访问一个地址数据的时候,与其相邻的数据很快也会被访问到。每次磁盘IO读取的数据我们称之为一页(page)。一页的大小与操作系统有关,一般为4k或者8k。这也就意味着读取一页内数据的时候,实际上发生了一次磁盘IO。
B树B+树一般用于数据库的存储引擎 平衡二叉树以最坏的情况下 查找到自己所需要的的数据为树的
高度 因为不能一次加载所有的数据 那么只能逐一的加载每个结点的数据 每次访问结点相当于一次的
磁盘IO 这种频繁的访问数据就会造成大量的性能消耗 B树的形成在于提高查找速率 且把部分的数据比较放于内存中
内存的比较消耗相对于磁盘IO的消耗几乎忽略不计
B树形成原理: 假设为M阶的B树
1》根结点最少有2个子节点
2》除了根结点和叶子结点的结点 每个结点上面最少有m/2个子节点(向上取整) 最多有m个子节点
3》每个结点上面的值最多有k-1个 且子节点的值都是顺序增长的 相当于二叉树的左子节点小于根结点 右子结点大于根结点