数据库为什么使用B+树而不是B树
2024-09-05 21:29:31
B树和B+树的区别主要有两点:
- 在B树中,你可以将键和值存放在内部节点和叶子节点,但在B+树中,内部节点都是键,没有值。叶子节点同时存放键和值
- B+树的叶子节点有一条链相连,而B+树的叶子节点各自独立。
- 由于B+树的内部节点只存放键,不存放值,因此,一次读取,可以在内存页中获取更多的键,有利于更快地缩小查找范围。
- B+树的叶节点由一条链相连,因此,当需要进行一次全数据遍历的时候,B+树只需要使用O(logN)时间找到最小的一个节点,然后通过链进行O(N)的顺序遍历即可。而B树则需要对树的每一层进行遍历,雅思学校这会需要更多的内存置换次数,因此也就需要花费更多的时间
B树可以在内部节点同时存储键和值,因此,把频繁访问的数据放在靠近根节点的地方将会大大提高热点数据的查询效率。这种特性使得B树在特定数据重复多次查询的场景中更加高效。
因为就是上面提到的B+树的好处。数据库的数据读取都是需要进行代价巨大的磁盘IO操作,因此,雅思零基础更快地缩小范围和更少的读取次数是数据库需要关注的重点。而B+树在这些点上比B树做的更好。这就是为什么数据库要选用B+树作为底层实现。
最新文章
- [工具开发] 一信通 Web 短信发送客户端
- 44. 普通对象建一个用户方法,提交时报:失败:建立业务逻辑对象失败:业务逻辑定义更新到数据库失败:ORA-00904: ";DEFVERSION";: 标识符无效
- DimDate populate data
- Ubuntu 12.04 添加新用户并启用root登录
- Working with nil
- QtSQL学习笔记(4)- 使用SQL Model类
- Codeforces149D - Coloring Brackets(区间DP)
- cardslib
- 【Html 学习笔记】第三节——超链接
- ZOJ3555 Ice Climber(dp)
- Mysql 添加用户和数据库授权
- thinkphp分页带数据
- 一些java的demo
- Oracle11g: simple sql script examples
- C#类型转换、进制转换
- MATLAB——LMS算法(△规则Delta Rule)
- Java元组Tuple介绍与使用
- Python Mock的入门(转)
- 移动端网页开发 meta 之 viewport
- html转jsp部分css不可用
热门文章
- [转帖]K8s集群安装--最新版 Kubernetes 1.14.1
- [19/09/16-星期一] Python的运算符和条件判断语句
- Spark-Core RDD依赖关系
- steps 步骤条、时间轴
- 在搭建Maven项目时导入elasticsearch架包时遇到的问题
- PHP排序函数sort、rsort、asort、arsort、ksort、krsort
- CentOS7.6中 KVM虚拟机内存、CPU调整
- DMA方式的数据传送过程
- Linux之目录与路径
- The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team (线段树)