当前位置: 首页 > news >正文

跳表和B+树的相似和区别 ***

原文:B+树 和 跳表 的结构及区别,不同的用途【mysql的索引为什么使用B+树而不使用跳表?】-阿里云开发者社区

一、相似:

B+树和跳表的最下面一层,都包含了所有的数据,且都是顺序的,适合用于范围查询

二、区别:

1. 存储结构差别

B+树:由多个 大小为16k的数据页组成,一个数据页可以存放多个索引信息。 3层数据源就可以存储2kw左右的数据, 也就是2kw数据查询一次最多只需要查询三次磁盘IO

跳表:由多个结点用链表结构的方式组成,一条数据一个结点。2kw数据 大概是2的24次方,所以跳表大概高度在24层左右,这24层数据会分散在不同的数据页,查一次数据可能呢会24次磁盘IO

2. 增减数据的操作不一样

B+树:本质上是多叉平衡二叉树,子树们的高度层级最多差一个层级。为了维持B+树的平衡,增加数据时,会不断分裂调整数据页,有可能修改、增加、删除数据页。

跳表:纯粹往链表结构中增删结点,和数据页无关。

3. 简单归纳:

B+树:查询速度更快

跳表:修改速度更快

三、mysql的索引为什么使用 B+树 而不使用 跳表?

1. mysql 更需要的是查询速度,所以 B+树 更适合。

2. 如果需要频繁修改,需要修改的速度更快的话,也可以把mysql存储引擎改成跳表。比如facebook 的 rocksDB

四、redis为什么使用跳表而不使用B+树或二叉树呢?

redis 多种数据结构里面的 有序集合,内部实现就是跳表。

因为 redis 是纯内存数据库,进行读写数据都是操作内存,跟磁盘没关系。所以不存在磁盘IO次数问题,就不再是跳表的劣势。

http://www.dtcms.com/a/316461.html

相关文章:

  • Nginx 学习
  • UnityUI系统--GUI
  • PHP‑ORT扩展构建纯PHP机器学习的推荐系统
  • Redis协议数据迁移方式
  • 聚焦智能穿戴“下一代消费终端”之争,Meta/微美全息借AI+AR积淀定义行业未来
  • Tasks and Deadlines(Sorting and Searching)
  • 【人工智能-18】机器学习:决策树、随机森林
  • 什么情况下浮动IP(Floating IP)会“漂移”(Drift)
  • 浮动IP(Floating IP)的删除通常需要满足什么条件
  • 小程序点击菜单栏实现样式动态切换
  • 对于包含大量文件的程序的便捷makefile操作
  • RK3568 Linux驱动学习——字符设备驱动开发
  • windows内核研究(软件调试-内存断点)
  • 永磁同步电机无速度算法--具有电流测量误差鲁棒性的永磁同步电机无传感器控制的自适应广义复矢量观测器
  • 二叉树算法
  • 02-算法
  • Java后端高频面试题
  • EP02:【DL 第二弹】张量的索引、分片、合并以及维度调整
  • 如何选择正确的体育/电竞数据接口服务商?
  • 力扣148:排序链表
  • Android 开发中,HandlerThread、IntentService 和 AsyncTask区别对比
  • Pytorch基础入门2
  • C++面向对象编程基础:从类定义到封装机制详解
  • 【Linux网络编程】socket基础
  • 风丘助力混合动力汽车工况测试:精准采集整车信号解决方案
  • Datawhale AI夏令营 第三期 task2 稍微改进
  • P1026 [NOIP 2001 提高组] 统计单词个数
  • 计算机网络:详解路由器如何转发子网数据包
  • Java JDBC连接池深度解析与实战指南
  • SAP PP CK466