DBMS - B-trees

209 阅读1分钟

UNSW COMP9315

如有错误,欢迎指正

B-trees介绍

本质上是平衡二叉树,优良的储存性能。按速度来说,二叉树的查询速度其实已经很快了,但是在数据库场景下,不可能将整个二叉树索引结构都加载到磁盘中,一次只能加载一个page,而这个page则对应着树的一个节点,这就是B树的应用所在

image.png

一些定义

  1. B树的阶M,表示B树中的一个node可以拥有的sub-node的最大值。DBMS下,M的大小取决于disk page的大小
  2. 根节点至少有两个子节点,最多有M个节点
  3. 中间节点(也就是不是根节点和叶节点的node)所包含的key的数量K最大为M(磁盘页),最小为M/2(需要高效利用磁盘页的空间),子节点的数量为K-1.
  4. 节点的key从大到小排序 这些定义需要结合B-trees的图去思考

image.png

Insertion

依次插入12,15,30,10. B树的阶为M=3

image.png 插入12,15,30,10。 B树结构不变,所有节点都满足key的数量 <= M (阶)

image.png 插入10,B树发生分裂

image.png

B-Trees in PostgreSQL

image.png