二叉树:

左右两个子节点 可以为空

二叉查找树:

左子树小于根节点,又子树大于根节点

平衡二叉树:

任何节点的左右两个子树的高度相差最大为1,(高度相差大于1会旋转操作)

B-Tree:(平衡多路查找树)

B-Tree是为磁盘等外存储设备设计的一种平衡查找树

系统从磁盘中读取数据是以磁盘块为单位,一次会把统一磁盘的数据都读出来

索引引入的目的是为了快速查询以及更新表中的数据,是有序表,可以用二分查找提高效率

磁盘I/O操作是影响整个B-Tree查找效率的决定因素

若数据量很大则B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率(采用B+Tree的原因)

B+Tree:

B+Tree是在B-Tree基础上的一种优化,使其更适合实现外存储索引结构

MySQL InnoDB引擎的索引底层实现采用的是B+tree

对于范围查找来说,b+树只需遍历叶子节点链表即可,b树却需要重复地中序遍历。

B+Tree相对于B-Tree有几点不同:

  1. 非叶子节点是叶子节点的索引,。
  2. 要存储的数据都存放在叶子节点中。
  3. 叶子节点之间都有一个链指针,不需要遍历整棵树就可以得到所存储的全部数据。
为什么使用B+树?言简意赅,就是因为:
1.文件很大,不可能全部存储在内存中,故要存储到磁盘上
2.索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数(为什么使用B-/+Tree,还跟磁盘存取原理有关。)
3.局部性原理与磁盘预读,预读的长度一般为页数的整数倍
4.数据库利用磁盘预读原理,讲一个节点的大小设置为一页,这样每一个节点只需要一次I/O就可以完全载入
   而红黑树的结构,逻辑上很近的节点物理上可能很远,无法利用局部性
B+树完全解析
B树 B-树 B+树
各种树
B+树图文详解
B树和B+树的应用
B+树比B树更合适作为索引的原因(这里面的两个图)

转载于:https://www.cnblogs.com/Aaron12/p/9580297.html

B-Tree与B+Tree的区别相关推荐

  1. linux+指令+tree,Linux命令——tree

    简介 Linux tree命令用于以树状图列出目录的内容. 执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件. 用法 无参数,列出当前目录下字目录.文件 [root@localhos ...

  2. 如何扩展Dojo tree成chekbox tree

    为什么80%的码农都做不了架构师?>>>    想找可以生产带有checkbox的树的js控件来做表单控件用,找了YUI, jquery plugin都觉的不怎么理想, 今天找一老外 ...

  3. 在windows上的git bash中安装tree 和 linux tree命令使用

    在windows上的git bash中安装tree 和 linux tree命令使用 文章目录: 1 在windows上的git bash中安装tree 1.1 下载windows版本的tree 1. ...

  4. BST、AVL、BTree、B+Tree、B*Tree、23Tree、234Tree、TTree、RBTree、LLRBTree、AATree、SplayTree、Treap、无旋Treap、scap

    喜欢这篇文章吗?喜欢的话去看博主的置顶博客,即可依据分类找到此文章的原版得到更好的体验, 图片及代码显示的问题,笔者深感抱歉,想要更好的体验去原博文即可. title: tree mathjax: t ...

  5. 【Leetcode】431. Encode N-ary Tree to Binary Tree(困难)

    一.题目 1.题目描述 Design an algorithm to encode an N-ary tree into a binary tree and decode the binary tre ...

  6. 【乘法器】大数乘法器的设计与优化(32位,16位,8位 树型阵列乘法器Dadda Tree与Wallace Tree)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  7. 关于索引的B tree B-tree B+tree B*tree 详解结构图

    2019独角兽企业重金招聘Python工程师标准>>> B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结 ...

  8. 关于索引的B tree B-tree B+tree B*tree 详解结构图

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...

  9. java easyui tree例子_EasyUI Tree的简单使用

    此前写过zTree插件的demo,没有记录下来,这次记录一下EasyUI的Tree. 实现效果:获取数据库表的数据,以树结构的形式展示出来. 树结构数据分为同步加载和异步加载,同步加载就是初始化加载时 ...

  10. php easyui tree 结构,EasyUI Tree树组件无限循环的解决方法

    在学习jquery easyui的tree组件的时候,在url为链接地址的时,发现如果最后一个节点的state为closed时,未节点显示为文件夹,单击会重新加载动态(Url:链接地址)形成无限循环. ...

最新文章

  1. 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)
  2. lucene 学习一
  3. IDC:2015年全球专用备份一体机市场稳健增长
  4. 使用 vue 一套功能 UI 全面 的 后台管理系统
  5. 3个月内通过7轮面试,程序员拿到谷歌offer后却被女友威胁......
  6. mysql数据库视图_MySQL数据库8(二十)视图
  7. tp5 保存图片背景黑色_将照片背景换成黑色或白色,用snapseed手机修图软件,怎么操作?...
  8. Android 项目必备(二十)-->NFC 的基本使用
  9. 支付宝,微信付款码正则表达式
  10. jQWidgets的TreeGrid 心得:
  11. Wox + Everything = 效率神器(附下载链接)
  12. 性能测试有哪些我们测试员必须要掌握的知识点?
  13. 网站分析实战——如何以数据驱动决策,提升网站价值(大数据时代的分析利器)
  14. python试卷管理系统的设计与实现_在线考试系统的设计与实现毕业设计论文.doc...
  15. cocos2dx之锚点/坐标系/精灵 详解
  16. java什么是this_java中的this是什么
  17. mysql别名引号与引用问题
  18. python实现erp系统后端_python开发erp教程《PYTHON编一套完整ERP系统,15万元能下来吗》...
  19. 中国大学慕课第六周编程题
  20. h5 版活体检测、视频活体检测

热门文章

  1. 学点 C 语言(35): 函数 - 递归
  2. Linux创建文件自动消失,Linux中没有文件创建时间的概念
  3. photoshop(ps) cs6中文版
  4. Three.js学习笔记 – “我和小伙伴都惊呆了”的特效和Three.js初探
  5. 【C#】C#创建Windows Service服务
  6. python web框架互相融合, Pyramid或取代Django
  7. 转: 回车(CR)与换行(LF), '\r'和'\n'的区别
  8. Nginx+lua 实现调用.so文件方法
  9. Swift 4 无限滚动轮播图(UICollectionView实现)
  10. zabbix自定义监控脚本,显示权限不足