导入
从流程来看,先由cpu 发出读取指令根据指令层层查找文件数据。 一旦找到数据则通过总线系统将数据传给cpu/高缓存。文件如何读取最快?
根据上面层次 越靠近cpu则越快。
内存和硬盘区别?
1 内存 > 硬盘(热知识)
2 当断电,电脑宕机 内存数据则会消失。而存储到硬盘数据则不会。
由于大部分数据存储在硬盘所有我们应该把主要问题放到硬盘数据读取。
我们可以把硬盘看成机械结构如图,硬盘慢主要问题是寻址耗时,根据主轴旋转的磁盘碟片和移动的磁头。找到正确的盘面,将磁头移动到正确的磁道上来定位数据。
总:减少磁盘io读写次数则文件读取更省时间。
目前最科学的读取(速度快)方法是什么?
导入:红黑树 (平衡二叉排序树)
如图这是典型的红黑树
b树
这是最经典,主要特点是分裂
如图当我们最大度是 3,现在叶子最大是2 我们再次插入一个max则会进行分裂。具体过程可以看自己插入看看。
再补一张更清晰的
b+树
它是根据b树基础上进行爆改,把data域全部放在最低层并且是以链式相连的。
根据下面图2 与上面对比 显而易见的多出了2倍的空位
回归话题
目前最科学的方式是利用从硬盘读取数据块到内存中,然后在内存中构建b+树存储块。如果把度设置为1024 则4g的内存 2次磁盘io即可拉满。
为什么不能红黑树 b树?
红黑树只能开2个插导致树高度很大,b树带着数据域,影响树高度大小。当然根据业务也可以选择。
记录学习过程