B树面试相关知识
2019-05-25 15:56
691 查看
数据库索引的实现通常使用B树及其变种B+树,下面进行B-/+Tree结构的数据库索引的性能分析:
(1)B树索引结构:
数据库系统的设计者巧妙利用了磁盘预读原理,将B树的一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。为了达到这个目的,在实际实现B-Tree还需要使用如下技巧:
每次新建节点时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页;B-Tree中一次检索最多需要h-1次I/O (磁盘IO不包括根节点,因为根节点常驻内存),渐进复杂度为O(h)=O(logdN)。一般实际应用中,出度d是非常大的数字,通 常超过100,因此h非常小(通常不超过3)。而红黑树这种结构,h明显要深的多。由于逻辑上很近的节点(父子)物理上可能 很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为O(h),效率明显比B-Tree差很多。所以,B树结构的数据库索引,在 元素查找上效率很高;
(2)B+树的索引结构:
B+树则适当牺牲检索的时间复杂度(都必须检索到叶子结点),但改善了节点插入和删除的时间复杂度(类似用链表改善数组的 效果),所以B+树属于一种折中选择。
相关文章推荐
- java后台面试相关知识总结(3)
- Android中AsyncTask面试相关知识
- 【面试准备】Intent相关知识
- Activiti面试相关知识了解
- android面试相关知识
- Android面试相关知识
- 【面试】我是如何面试别人List相关知识的,深度有点长文
- 面试之jsp、Servlet相关知识——生命周期, 区别等
- 面试之jsp、Servlet相关知识——生命周期, 区别等
- java后台面试相关知识总结(1)
- 面试相关知识和技巧
- 找工作知识储备(1)---从头说catalan数及笔试面试里那些相关的问题
- selenium 自动化测试的相关知识和面试整理
- 面试之jsp、Servlet相关知识——生命周期, 区别等
- 面试之jsp、Servlet相关知识——生命周期, 区别等
- Android 基础知识面试相关总结
- 面试 相关知识链接
- java后台面试相关知识总结(2)
- 面试总结(一)——Java基础相关知识
- 关于Spring的69个面试问答和Top25个问答--终极列表,以及Spring相关知识