首页 > 其他分享 >面试总结(一)

面试总结(一)

时间:2023-06-29 15:47:06浏览次数:36  
标签:总结 文件名 面试 索引 内存 IO 磁盘 二叉树

为什么MySQL索引更适合B+树而不是二叉树、B树

一 数据库为什么使用B+树

 与二叉树相比
二叉树相比于顺序查找的确减少了查找次数,但是在最坏情况下,二叉树有可能退化为顺序查找。而且就二叉树本身来说,当数据库的数据量特别大时,其层数也将特别大。二叉树的高度一般是log_2^n,B树的高度是log_t^((n+1)/2) + 1,其高度约比B树大lgt倍。n是节点总数,t是树的最小度数。

假如每个盘块可以正好存放一个B树的结点(正好存放2个文件名)。那么一个BTNODE结点就代表一个盘块,而子树指针就是存放另外一个盘块的地址。

下面,咱们来模拟下B树索引查找文件29的过程:

  • 根据根结点指针找到文件目录的根磁盘块1,将其中的信息导入内存。【磁盘IO操作 1次】
  • 此时内存中有两个文件名17、35和三个存储其他磁盘页面地址的数据。根据算法我们发现:17<29<35,因此我们找到指针p2。
  • 根据p2指针,我们定位到磁盘块3,并将其中的信息导入内存。【磁盘IO操作 2次】
  • 此时内存中有两个文件名26,30和三个存储其他磁盘页面地址的数据。根据算法我们发现:26<29<30,因此我们找到指针p2。
  • 根据p2指针,我们定位到磁盘块8,并将其中的信息导入内存。【磁盘IO操作 3次】

此时内存中有两个文件名28,29。根据算法我们查找到文件名29,并定位了该文件内存的磁盘地址。

2. 与B树相比
B树在提高IO性能的同时,并没与解决元素遍历时效率低下的问题,正是为了解决这个问题,B+数应运而生。B+数只需遍历叶子节点即可实现整棵树的遍历,而B树必须使用中序遍历按序扫库,B+树支持范围查询非常方便。这才是数据库选用B+树的主要原因。

另外,最后说一下,并不是说B+树就比B树好,有很多基于频率的搜索是选用B树,越频繁query的结点越往根上走,前提是需要对query做统计,而且要对key做一些变化。
无论是B树还是B+树由于前边几层反复query,因此早已被加载入内存,不会出现读磁盘IO。一般启动的时候,就会主动换入内存。在内存中B+树并没有优势,只有在磁盘中B+树的威力才能显现。

 

B+树相对于B树具有以下特点

1.非叶子节点不存储data,只存储索引(冗余),可以放更多的索引。

2.叶子节点包含所有索引字段。3叶子节点用指针连接,提高区间访问的性能 。

标签:总结,文件名,面试,索引,内存,IO,磁盘,二叉树
From: https://www.cnblogs.com/DarylJi/p/17514353.html

相关文章

  • 对之前发布的PTA题目集4、5以及期中考试的总结性
    一、前言:总结之前所涉及到的知识点、题量、难度等情况知识点:输入和输出:根据输入的菜单和订单信息,计算每桌的总价,并按顺序输出每一桌的总价。字符串处理和分割:需要将输入的字符串进行适当的处理和分割,提取所需的信息。条件判断和计算:根据不同的情况进行条件判断和计算,......
  • 脑电信号采集模块方案的技术阶段总结简析
    原理 脑电图(electroencephalogram,EEG)是通过精密的仪器从头皮上将脑补的大脑皮层的自发性生物电位加以放大记录而获得的图形,是通过电极记录下来的脑细胞群的自发性、节律性电活动。这种电活动是以电位作为纵轴,时间为横轴,从而记录下来的电位与时间相互关系的平面图。脑电波的频率(......
  • leetcode动态规划题目总结
     ref:https://leetcode.cn/circle/article/2Xxlw3/ 这是一篇我在leetcode.com上撰写的文章DynamicProgrammingSummary,就不翻回中文了,直接copy过来了。Helloeveryone,IamaChinesenoobprogrammer.Ihavepracticedquestionsonleetcode.comfor2years.During......
  • C#中的using用法总结
      using一般有两个作用:  1、作为语句,用于定义一个范围,在此范围的末尾将释放对象(IDisposable和IAsyncDisposable接口)  2、作为指令,用于引入命名空间或者类型,或者为引入的命名空间或者类型定义别名  using语句  using语句应该都很熟悉了吧,从最早的ADO.net,或者对文件、......
  • 《IT项目管理》总结:项目沟通管理
    10/21/200910:33:15PM沟通失败常常是项目——特别是IT项目——成功的最大的威胁。沟通是保持项目顺利进行的润滑剂。沟通计划编制包括信息发送、绩效报告和管理收尾,它需要确定项目干系人的信息和沟通需求。沟通管理计划应该是为所有项目创建的。项目沟通中的项目干系人分析,有助于......
  • Session,JWT使用总结
    01.Session:优点:Session是存储在服务端的,安全缺点:服务器集群环境下无法直接使用Session移动端APP(Android、IOS)中无法使用Cookie用户可以自己禁用CookieCookie不能跨域02.令牌技术:JWT令牌JSONWebToken(官网:https://jwt.io/)1.定义了一种简洁的、自包含的格式,用于在通信......
  • 20230628习题总结
    1.P6891[JOISC2020]ビルの飾り付け4本题如果按照最直接的方式dp时空都是\(O(n^2)\)。可以用一个常用的优化:交换下标和值,用dp数组维护一个集合(可以证明是一个区间,于是用左右端点表示)。2.P7216[JOISC2020]美味しい美味しいハンバーグ正解是2-SAT,但是太麻烦,码量大难想。其......
  • 题目集6-8的总结性Blog
    一、前言第6-8次的pta没有延续之前的菜单计价程序,主要是围绕课程成绩统计程序进行的。第六次大作业就是成绩统计程序,第七次大作业则增加了对HashMap和多态的一个考察,第八次大作业则是增加了对Arraylist部分知识点的考察。这三次作业不再是菜单的设计,而是改为学生成绩的统计,但还是......
  • Blog PTA 6-9总结
    关于成绩统计程序类的结构理解(老师提供的结构代码)这里以课程成绩统计程序-3为代表,本质上三个题目的差别度不大,核心思想都没用太大处。尤其和前面的点菜系统有很强的相似性。输入结构课程名字性质考核方式权重的个数(1,2,4-9不等)考试两个成绩,两个权重考察一个成绩一个权......
  • C++面试八股文:用过STL吗?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第21面:面试官:用过STL吗?二师兄:(每天都用好吗。。)用过一些。面试官:你知道STL是什么?二师兄:STL是指标准模板库(StandardTemplateLibrary),是C++区别于C语言的特征之一。面试官:那你知道STL的六大部件是什么?二师兄:分别是容......