网页制作与网站建设实战大全光盘,孟津网站建设,app界面生成器,专业做私募网站B树特点 考虑因素
支持按照区间来查找数据 磁盘 IO 操作 N叉树
树的高度就等于每次查询数据时磁盘 IO 操作的次数 在选择 m 大小的时候#xff0c;要尽量让每个节点的大小等于一个页的大小。读取一个节点#xff0c;只需要一次磁盘 IO 操作。#xff08;分裂成两个节点树特点 考虑因素
支持按照区间来查找数据 磁盘 IO 操作 N叉树
树的高度就等于每次查询数据时磁盘 IO 操作的次数 在选择 m 大小的时候要尽量让每个节点的大小等于一个页的大小。读取一个节点只需要一次磁盘 IO 操作。分裂成两个节点
问题
跳表和B树在实现难度和性能上有什么区别在数据量很大的情况下表现性能如何为什么redis选跳表 b树主要是用在外部存储上为了减少磁盘IO次数。 跳表比较适合内存存储。 实际上两者本质的设计思想是雷同的性能差距还是要具体看应用场景无法从时间复杂度这么宽泛的度量标准来度量了。
B 树中将叶子节点串起来的链表是单链表还是双向链表为什么
对于Btree叶子节点是用双向链表还是用单链表得从具体的场景思考。我想大部分同学在开发中遇到的数据库查询都遇到过升序或降序问题即类似这样的sql: select name,age, … from where uid startValue and uid endValue order by uid asc(或者desc)此时数据底层实现有两种做法 1保证查出来的数据就是用户想要的顺序 2不保证查出来的数据的有序性查出来之后再排序 以上两种方案不加思考肯定选第一种因为第二种做法浪费了时间如果选用内存排序还是考虑数据的量级。那如何能保证查询出来的数据就是有序的呢单链表肯定做不到只能从头往后遍历再想想只能选择双向链表了。此时可能有的同学又问了双向链表多出来了一倍的指针不是会多占用空间嘛 答案是肯定的。可是我们再细想下数据库索引本身都已经在磁盘中了对于磁盘来说这点空间已经微不足道了用这点空间换来时间肯定划算呀。顺便提一下在实际工程应用中双向链表应用的场景非常广泛毕竟能大量减少链表的遍历时间
如果我们把散列表中的结点也用链表串起来能否支持按照区间查找数据呢
答案是「肯定的」。JDK中的LinkedHashMap为了能做到保持节点的顺序插入顺序或者访问顺序就是用双向链表将节点串起来的。 笔记整理来源 王争 数据结构与算法之美