B树是一种多路平衡的查找树,它的每个节点最多包含k个孩子,k被称为B树的阶,k的大小取决于磁盘页的大小。

B树具有以下的特征:

[if !supportLists]1.[endif]根结点至少有2个子女;

[if !supportLists]2.[endif]每个中间节点都包含k-1个元素和孩子,其中m/2<= k <=m;

[if !supportLists]3.[endif]每个叶子节点都包含k-1个元素,其中m/2<= k <=m;

[if !supportLists]4.[endif]所有叶子节点都位于同一层;

[if !supportLists]5.[endif]每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子所包含元素的值域划分。

B树的查找比较快速,但是插入和删除就比较复杂了,所以B树主要用于文件系统以及部分数据库索引,比如MongoDB,MySQL中使用的是B+树索引。

B+树是B树的一种变种,有这比B树更加优秀的查询性能。

B+树具有以下特征:

[if !supportLists]1.[endif]有k个子树的中间节点包含k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据保存在叶子节点。

[if !supportLists]2.[endif]所有叶子节点包含了全部的元素信息,以及指向这些元素记录的指针,且叶子节点按照关键字的大小从小到大的顺序排列;

[if !supportLists]3.[endif]所有中间节点元素都同时存在于子节点,子节点是最大(或最小)元素。

MySQL是基于磁盘的数据库,索引是以索引文件的形式存在于磁盘中的,索引的查找过程就会涉及到磁盘IO消耗,磁盘IO的消耗相比较于内存IO的消耗要高好几个数量级,所以索引的组织结构要设计得在查找关键字时要尽量减少磁盘IO的次数。

B+树更适合外部存储(一般指磁盘存储),由于内节点(非叶子节点)不存储data,所以一个节点可以存储更多的内节点,每个节点能索引的范围更大更精确。也就是说使用B+树单次磁盘IO的信息量相比较B树更大,IO效率更高。

MySQL是关系型数据库,经常会按照区间来访问某个索引列,B+树的叶子节点间按顺序建立了链指针,加强了区间访问性,所以B+树对索引列上的区间范围查询很友好。而B树每个节点的key和data在一起,无法进行区间查找。

mysql b 树 b树_MySQL B树和B+树的区别相关推荐

  1. mysql存储过程和自定义函数_MySQL存储过程/存储过程与自定义函数的区别

    语法: 创建存储过程: CREATE[definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_paramet ...

  2. mysql after 不起作用_mysql之触发器before和after的区别(2)

    我们先做个测试: 接上篇日志建的商品表g和订单表o和触发器 假设:假设商品表有商品1,数量是10: 我们往订单表插入一条记录: insert into o(gid,much) values(1,20) ...

  3. mysql n叉树_MySQL索引底层:B+树详解

    前言 当我们发现SQL执行很慢的时候,自然而然想到的就是加索引.对于范围查询,索引的底层结构就是B+树.今天我们一起来学习一下B+树哈~ 公众号:捡田螺的小男孩 树简介.树种类 B-树.B+树简介 B ...

  4. mysql为什么用B 树做索引_mysql为什么用b+树做索引

    关键字就是key的意思 一.B-Tree的性质 1.定义任意非叶子结点最多只有M个儿子,且M>2: 2.根结点的儿子数为[2, M]: 3.除根结点以外的非叶子结点的儿子数为[M/2, M]: ...

  5. mysql函数包含的意思_MySQL存储函数的特性说明中,______表示函数体不包含SQL语句。-智慧树MySQL数据库设计与应用章节答案...

    MySQL数据库设计与应用:MySQL存储函数的特性说明中,______表示函数体不包含SQL语句.[?????] A:containssql B:modifiessqldata C:nosql D: ...

  6. l2-004 这是二叉搜索树吗?_MySQL索引为何选择B+树

    声明 本文所述的各种数据结构(二叉树等),均不考虑重复值的情况,本文简述各种数据结构的区别仅仅只是为了理解MySQL索引的需要而做的铺垫. 什么是索引 提起索引,大家都知道,建立索引可以让数据库查询更 ...

  7. java磁盘读写b 树_原来你是这样的B+树

    前言 B+树是目前最常用的一种索引数据结构,通常用于数据库和操作系统的文件系统中,本文就网上的知识点与个人理解结合分享,如有错误,欢迎探讨及指正. 定义 B+树是B树的一种变形形式,B+树上的叶子结点 ...

  8. 3层b+树索引访问磁盘次数_从B+树到LSM树,及LSM树在HBase中的应用

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 暴走大数据点击右侧关注,暴走大数据! 前 ...

  9. 高度为5的3阶b树含有的关键字个数_B-树和B+树的应用:数据搜索和数据库索引...

    B-树 1 .B-树定义:有序数组+平衡多叉树 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树: ⑴树中每个结点至多有m 棵子树 ...

  10. B树的原理及代码实现、B+树和B*树介绍及应用

    目录 一.B树介绍 (一).B树存在意义 (二).B树的规则 二.B树实现原理及代码 (一).实现原理 (二).代码 三.B+树 (一).概念 (二).应用 ①MyISAM ②InnoDB 四.B*树 ...

最新文章

  1. oracle undo
  2. c++ 显示图片_飞利浦256P1FR显示器一线直连MacBook使用体验分享
  3. 【mysql分区分表】mysql 按时间分区 【partition】
  4. 十个好习惯帮你理财省大钱
  5. 持有1000枚比特币及以上的地址数量创历史新高
  6. 生信技能树——GEO芯片数据的合并
  7. 隐藏百度地图logo
  8. Inference与predicting的区别
  9. 金色传说:SAP-BC-导出数据时不能选择导出文件的格式问题
  10. ocx js php,JavaScript_JS实现OCX控件的事件响应示例,JS支持OCX控件的事件(event), - phpStudy...
  11. P1125 笨小猴笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词
  12. astra pro相机(乐视/奥比中光相机)在JETSON NANO、TX2、NX上的ubuntu18.04+ros环境中的驱动及使用
  13. PPT模板制作色彩如何运用?
  14. 北京普通中学、小学、幼儿园查询网址---普通中学、北京小学、幼儿园大全
  15. XP MBR的详尽分析
  16. 自己来造钢筋字符-增加系统字体
  17. Linux 安装zsh和zsh的配置
  18. 【计算机视觉处理4】色彩空间转换
  19. DB9(串行232)和DB15(VGA)脚位和定义
  20. 为什么office Word/Excel打开特别慢?

热门文章

  1. extract local variale 和 jsp中查找选中内容的快捷键
  2. leetcode 258. 各位相加(Java版)
  3. javascript中的模块系统
  4. Spring Boot国际化支持
  5. nb-iot模块的at指令_esp-07s模块规格-
  6. SpringBoot整合mybatis进行快速开发
  7. 什么是 MultiRaft ?
  8. 一站式服务!图片+代码-构建移动版旅游网站页面
  9. thinkphp require php 5.3.0 !,给thinkphp3.2用上composer
  10. ab压力测试(了解ab工具,实验对网页进行测试)