一般情况,我们可以把整个数据结构存储到计算机的主存中;可如果数据更多装不下主存,那么意味着必须把数据结构放到磁盘上。
此时“大O模型”不再适用,因为大O分析假设所有操作耗时都是相同的,所以涉及到磁盘I/O就不再适用了。与内存相比,磁盘必须花成倍的时间来存取一个数据元素,这是因为磁盘的机械部件读写数据的速度远远赶不上纯电子媒体的内存。
【CPU】 <---> 【内存】 <--I/O--> 【磁盘】当在大量数据存储中,查询时我们不能一下子将所有数据加载到内存中,只能逐一加载磁盘页,每个磁盘页对应树的节点。造成大量磁盘I/O操作(最坏情况下为树的高度)。
平衡二叉树由于树深度过大而造成磁盘I/O读写过于频繁,进而导致效率低下。
为了减少磁盘I/O操作的次数,就你必须降低树的深度,将“瘦高”的树变得“矮胖”。
所以,就引入了B 树。B 树利用多个分支(称为子树)的节点,减少获取记录时所经历的节点数,从而达到节省存取时间的目的。
1. B 树(B Tree)
B 树(B-Tree),是一种平衡的多路查找树,主要面向于动态查找,常用于文件系统中。
B 树中,节点的子树最大数目称为 B 树的阶。
