B+树 VS 跳表

B+树

B+树是多叉数数据结构,每个节点都可以存储16kb的数据,三层的数据结构可以存储2kw的数据量,即2kw的数据量最大是三次磁盘IO(假设数据也都在磁盘中),B+树还是一种平衡树,在插入数据时需要平衡树的结构,会有额外的开销,因此频繁的写入和删除会带来较大的性能开销。
总结:
1、B+树存储2kw的数据树的高度仅为3,适合IO读取,即落盘存储。
2、B+树是一种平衡树,频繁的写入和删除会造成额外的性能开销,性能降低。适合读多写少的场景。

跳表

跳表是链表数据结构且实现简单,存储2kw=2^24的数据需要24层。插入数据时是否出现在层上取决于随机函数,无需平衡数据结构等额外的开销。
总结:
1、跳表实现简单,无需平衡数据结构
2、存储量大的时候跳表的深度也随之大。

Mysql为什么使用B+树,而不是跳表?

mysql数据库是持久化数据库,即是存储到磁盘上的,因此查询时要求更少磁盘IO,且mysql是读多写少的场景较多,显然B+树更加适合mysql。

redis的zset为什么使用跳表而不是B+树

redis是内存存储,不存在io的瓶颈,所以跳表的层数的耗时可以忽略不计,而且插入数据时不需要开销以平衡数据结构(写多)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值