美文网首页
MySQL之B-tree学习

MySQL之B-tree学习

作者: 田真的架构人生 | 来源:发表于2017-08-16 21:26 被阅读0次

一,B tree定义:
B-树是一种平衡的多路查找树,它在文件系统中很有用,一棵m阶B树满足下列性质:
1,节点:
a,每个节点最多可以有m个子节点
b,根节点若非叶子节点,至少2个子节点,最多m个子节点
c,每个非根,非叶子节点至少[m/2]子节点或叫子树([]表示向上取整),最多m个子节点

2,关键字:
a,根节点的关键字个数1~m-1
b,非根非叶子节点的关键字个数[m/2]-1~m-1

3、所有的叶子结点都位于同一层

4、每个结点中关键字从小到大排列

5,叶子结点不包含关键字

6,性能分析:
设B-树包含N个关键字,因此有N+1个叶子结点,叶子都在第L层。因为根至少有两个孩子,因此第二层至少有2个结点。除根和叶子外,其它结点至少有┌m/2┐个孩子,因此在第三层至少有2┌m/2┐个结点,在第四层至少有2(┌m/2┐2)个结点,...,在第L层至少有2*(┌m/2┐(L-2) )个结点,于是有:
N+1 ≥ 2*┌m/2┐^(L-2)
即: L ≤ log┌m/2┐((N+1)/2 )+2
这个公式保证了B-树的查找效率是相当高的。

如果要计算数据检索时间复杂度的话,还得考虑每个节点进行关键字的查找(二分法)

一般数据库采用的是b-tree的变体:b+tree
和b-tree相比,区别在于:
1,每个节点关键字个数和子节点个数相等。
2,b+tree的每个非叶子节点只有key,没有data,而且叶子节点没有指针。
一般数据库会对b+tree进行优化,比如在叶子节点上增加了顺序访问指针,提高区间查询效率。

相关文章

  • MySQL之B-tree学习

    一,B tree定义:B-树是一种平衡的多路查找树,它在文件系统中很有用,一棵m阶B树满足下列性质:1,节点:a,...

  • 16. MySQL的索引的方式

    MySQL目前主要有以下几种索引方法:B-Tree,Hash,R-Tree。 一、B-Tree B-Tree是最常...

  • Mysql索引的使用方式

    MySQL索引: B-Tree索引 没有明确指定的大多为B-Tree索引。底层使用的数据结构一般是B-Tree 也...

  • MySQL索引底层

    1.分析B树 相关概念 B-Tree B+Tree B+Tree与B-Tree区别 Mysql底层结构 InnoD...

  • MySQL的数据库索引优化

    1.Btree索引和Hash索引 MySQL支持的索引类型: B-tree索引的特点: B-tree索引以B+树的...

  • mysql 索引原理以及优化

    mysql 参考 参考 b树(b-tree) 一棵m阶的B-Tree有如下特性: 每个节点最多有m个孩子。 除了...

  • MySQL索引知多少

    mysql索引 总结关于mysql的索引,查询优化,SQL技巧等 1 索引类型 B-Tree索引 Hash索引 ...

  • mysql

    MySQL mysql b tree每个节点怎么存储B-Tree和 B+Tree的数据存储结构温斯顿1984的博客...

  • mysql索引

    mysql支持的索引 索引是在存储引擎层实现。而不是在mysql内实现 B-tree索引 index 普通索引 没...

  • Mysql 基础知识(上)

    1. Mysql 基础知识汇总1.1. Mysql 的数据结构1.1.1. 什么是 B 树(B-Tree)1.1....

网友评论

      本文标题:MySQL之B-tree学习

      本文链接:https://www.haomeiwen.com/subject/vsewrxtx.html