读模型
1、主键读
最常见的读模型,说是主键,其实也包括其它索引键,或者联合主键。
常见实现:hash,时间复杂度可以接近 O(1);B 树或变种:时间复杂度接近 O(log(n))。
关于 B 树和变种:
B 树(B-树):本质上是二叉查找树的升级版,变成了平衡的 N 叉查找树,这个 N 的范围根据磁盘一次读取的块大小来调整,这样复杂度 log n 的底数就从 2 变成一个更大的数,减少了树的高度。除此以外,还有一些额外的优化,比如为了插入和删除的性能考虑,通常准备一些预留的空间,只要在当前块或者邻近块中找到空间写入,就避免了开销巨大的所有记录向后偏移的操作。
B 树的阶:
一棵 m 阶的 B 树最多有 m 棵子树;
根节点至少有两棵子树;
每个非根分支节点至少有 ceil(m/2) 棵子树;
叶节点全部在同一层;
有 x 个孩子的非叶节点恰有 x-1 个递增排列的关键字。
图片来自此页面。
B+树:和 B 树相比,改变的地方包括:
全部关键字信息都放在叶子节点;
所有叶子节点串成一个 linked list 以便搜索;
存放重复的搜索键。
B*树在 B+树基础上做了进一步改进:
非