Java高级工程师每日面试题精选,面试经历分享

MySQL为何不选择平衡二叉树

既然平衡二叉树解决了普通二叉树的问题,那么mysql为何不选择平衡二叉树作为索引呢?

索引需要存储什么

让我们想一想,如果我们要把索引存起来,那么应该存哪些信息呢,它应该存储三块信息:

  • 索引的值:就是表里面索引列对应的值。

  • 数据的磁盘地址(通过磁盘地址找到当前数据)或者直接存储整条数据。

  • 子节点的引用:我们需要从根节点往下走,所以需要知道左右子节点的地址。 根据这三点,可以有如下大致的一个简单的结构图:

image.png

上图中数字表示的是索引的值,0x开头的表示磁盘地址,根节点中存了左右节点的引用。

AVL树用来存储索引存在什么问题

我们知道,页(Page)是 Innodb 存储引擎用于管理数据的最小磁盘单位,页的默认大小为16KB。页也就是上图中的节点,每查询一次节点就需要进行一次IO操作,IO操作是一种非常耗时的操作,很多业务系统的瓶颈都是卡在IO操作上,所以如果我们需要提高查询效率的办法之一就是减少IO次数,那么问题就来了,AVL树一个节点上只存了一个关键字(索引值)+一个磁盘地址+左右节点的引用,这是远远达不到16KB的,会浪费了大量的空间。

上图中如果我们要找到6这条数据,需要进行3次IO(获取一个节点就是一个IO操作),如果这棵树很高的话,就会进行大量的IO操作,所以说AVL树存在的最大问题就是空间利用不足,浪费了大量空间,数据量大的时候就会成为一颗瘦高的树,那么我们可以怎么改进呢?答案很明显了,那就是每个磁盘块多存一点东西,也就是说每个磁盘多存几个关键字,因为关键字越多,路数越多;路数越多,树也就越矮越胖,相应的操作IO次数就会越少。

多路平衡树(Balanced Tree)

多路平衡树简称B树,又称B-树,和AVL树一样,B树在枝节点和叶子节点存储键值、磁盘地址、左右节点引用。请看下图的一个多路平衡树的示例:

image.png

B树的特点

相比较AVL树,B树一个磁盘上可以存多个关键字(值),而且有一个特点就是:

  • 分叉数(路数)永远比关键字数多1。 我们可以画出如下简图(下图中只画了3路,即两个关键字,实际取决于一页能存储多少个关键字):

image.png

从上图可以很明显的看出,同样高度的树,B树能存的数据远远大于平衡二叉树。

B树是如何查找数据的

以上图为例,假如我们要找key=32这个数字,首先获取到根节点,发现18小于key,所以往右边走,获取到右边的数据,54和76,这时候遵循以下原则:

  • key<54,命中最左边分叉;

  • key=54,直接命中,返回数据;

  • 54<key<76,走中间的一个分叉;

  • key=76,直接命中,返回数据;

  • key>76,命中右边分支; 这里因为key=32,所以走得是第1条,命中左边分支,这时候再去获取左边分支,获取到32和50,比较发现key=32,命中,返回数据。

从上面我们可以看出B树效率相对于AVL树,在数据量大的情况效率已经提高了很多,那么为什么MySQL还是不选择B树作为索引呢? 那么接下来让我们先看看改良版的B+树,然后再下结论吧!

B+树

B+树由B树改良而来,属于改良版的多路平衡查找树。 首先让我们来看看B+树到底长什么样呢:

image.png

对比B+树,我们可以发现一个很明显的区别就是叶子节点有一个箭头指引而且从左到右是有序的。

InnoDB中使用的B+树相比较于传统B+树,改进之后的B+树具有以下特点

InnoDB中B+树的特点

  • 它的关键字的数量是跟路数相等的。

  • B+树的根节点和枝节点中都不会存储数据,只有叶子节点才存储数据。而搜索到关键字不会直接返回,会到最后一层的叶子节点。

  • B+树的每个叶子节点增加了一个指向相邻叶子节点的指针,它的最后一个数据会指向下一个叶子节点的第一个数据,形成了一个有序链表的结构。

  • 它是根据左闭右开的区间来检索数据的 按照B+树的特点,我们可以画出一个存储数据的简图,如下:

image.png

最后

给大家送上一份福利,领取方式:戳这里免费下载

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

image

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

image

互联网Java程序员面试必备问题解析及文档学习笔记

image

Java架构进阶视频解析合集

)]

互联网Java程序员面试必备问题解析及文档学习笔记

[外链图片转存中…(img-kDFntc1E-1625205424045)]

Java架构进阶视频解析合集

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机考研英语词汇书,求助:有知道电脑背考研英语单词的

2017考研英语复习进行到今天&#xff0c;相信大家对背单词都不陌生&#xff0c;背单词是每个学生都会头疼的地方&#xff0c;背了忘、忘了背如此恶性循环&#xff0c;到最后记住的单词却没有几个。面对这样的结果&#xff0c;都教授想说&#xff1a;你背单词的方法用对了吗?背…

Java面试题目,java关键字final

1 进程 进程与程序 操作系统之中最为通用的概念就是「进程」。与此相关的面试题以及各种技术优化策略也层出不穷&#xff0c;足以够证明它对于理解操作系统中举足轻重的地位。事实上&#xff0c;通过「进程」&#xff0c;程序员可以更为直观的理解自己所开发的软件&#xff0…

工作组无法访问计算机用户,工作组计算机无法访问,详细教您工作组计算机无法访问怎么解决...

电脑用户反映称在局域网中&#xff0c;查看工作组计算机时说无法访问&#xff0c;没有权限使用网络资源。就是双击“查看工作组计算机”时&#xff0c;提示“Workgroup无法访问。” what the fuck &#xff01;&#xff01;怎么解决&#xff1f;(泄气)下面&#xff0c;小编给大…

Java面试题目,java工程师成神之路

2. ZooKeeper 介绍 2.1. ZooKeeper 由来 正式介绍 ZooKeeper 之前&#xff0c;我们先来看看 ZooKeeper 的由来&#xff0c;还挺有意思的。 下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节&#xff0c;推荐大家阅读一下&#xff1a; ZooKeeper 最早起源于雅虎研究院…

音乐计算机融合课,融合信息技术的音乐课

上一节共读&#xff0c;陈蕾老师带我们学习了雷圣峰老师如何在一堂以“生活中的青花纹饰”为主题的美术课上搭建教学脚手架并展现了信息技术与美术学科的融合。一直以来&#xff0c;很多教师认为像美术、音乐这样的艺术学科在融合信息技术上是有一些困难的&#xff0c;上一节共…

Java面试题目,极客时间免费课程

一、对Kafka的认识 1.Kafka的基本概念 2.安装与配置 3.生产与消费 4.服务端参数配置 二、生产者 1.客户端开发 2.原理分析 3.重要的生产者参数 三、消费者 1.消费者与消费组 2.客户端开发 四、主题与分区 1.主题的管理 2.初识KafkaAdminCilent 3.分区的管理 4.如何…

w7重启计算机打印机无法使用,win7系统电脑重启打印机服务就会被关闭的解决方法...

很多小伙伴都遇到过win7系统电脑重启打印机服务就会被关闭的困惑吧&#xff0c;一些朋友看过网上零散的win7系统电脑重启打印机服务就会被关闭的处理方法&#xff0c;并没有完完全全明白win7系统电脑重启打印机服务就会被关闭是如何解决的&#xff0c;今天小编准备了简单的解决…

Java面试题!centos安装yum

技术焦虑 现在的技术圈子很火热&#xff0c;任何技术点&#xff0c;任何知识&#xff0c;只要你肯搜索&#xff0c;都能找到资料。但是现在技术圈确实有一个不好的地方&#xff0c;就是贩卖焦虑。这种贩卖焦虑的点并不在于形式&#xff0c;而是一种普遍的心态。特别是对于那种…

2016年全国计算机技术与软件,2016年的上半年的全国计算机技术与软件专业技术资格(水平)考.doc...

2016年的上半年的全国计算机技术与软件专业技术资格(水平)考.doc (1页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分&#xfeff;2011年上半年全国计算机技术与软件专业技术资格(水平)考试…

Java面试题!java面向对象程序设计答案

一、对Kafka的认识 1.Kafka的基本概念 2.安装与配置 3.生产与消费 4.服务端参数配置 二、生产者 1.客户端开发 必要的参数配置消息的发送序列化分区器生产者拦截器 2.原理分析 整体架构元数据的更新 3.重要的生产者参数 三、消费者 1.消费者与消费组 2.客户端开发 必要的…

测试学生成绩的软件,《软件测试-学生成绩管理系统》.doc

宿迁学院软件测试—学生成绩管理系统姓名&#xff1a; *****班级&#xff1a;计算机(3)班学号&#xff1a;******系部&#xff1a; 三 系指导老师&#xff1a;*****成绩&#xff1a;目录目录21引言31.1开发系统目标31.2开发系统背景31.3用户需求31.4系统组成32功能要求42.1系统…

Java面试题,java培训北京哪家好

一、公务员都不要35岁以上的&#xff0c;何况大公司 这让很多人感到惶恐&#xff0c;现在职场上有一种现象&#xff1a;很多用人单位会在招聘信息上明确标注&#xff0c;年龄需在35岁以下。为什么有经验、有人脉的职场中年人会如此遭“嫌弃”呢&#xff1f; 首先&#xff0c;…

计算机辅助外文文献,计算机辅助夹具设计外文文献.pdf

Computer-Aided Design 42 (2010) 1085–1094Contents lists available at ScienceDirectComputer-Aided Designjournal homepage: /locate/cadComputer aided fixture design: Recent research and trendsHui Wang a,∗, Yiming (Kevin) Rong a,b , Hua Li b , Price Shaun ba…

Java面试题,java工程师求职简历

One&#xff1a;JVM实践思维图&#xff08;完整版&#xff09; Two&#xff1a; 走近Java 概述 Java技术体系Java发展史Java虚拟机家族&#xff1a;&#xff08;Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

配电柜测试软件,低压配电柜测试方法及流程.docx

PAGE \* MERGEFORMAT6Newtech MS-E-01-SAT-Rev0018.0 测试记录表格&#xff1a;安装检查设备编号&#xff1a; 参考图纸&#xff1a;序号项目结果备注1安装位置是否与设计图纸一致合格 不合格2配电柜外观是否完好合格 不合格3电缆进线口及出线口是否加绝缘防护合格 不合格4进线…

java高分面试指南:javamvc模式简单案例

Spring面试高频问题 SpringMVC面试高频问题 MyBatis面试高频问题 SpringBoot面试高频题 SpringCloud面试高频问题 Redis高级面试题 Dubbo高频常问面试问题 Java虚拟机&#xff08;JVM&#xff09; MySQL数据库高频面试问题 Java高频面试专题合集解析&#xff1a; 当然在这还有更…

智能不属于计算机理论,讨论:计算机如何能提出自己的理论

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼作者&#xff1a; 没事少抽烟 2006-8-28 13:201、如何定义“AI自己的理论”这个命题&#xff1f;AI是简单的输出几个单词还是提出具体的理论体系&#xff1f;----------------------------------------------------------------现在…

java高分面试指南:java单例模式双重检查

1. CAP 的由来 要理解 CAP&#xff0c;首先我们要清楚&#xff0c;为何会有人提出 CAP&#xff1f;他提出 CAP 是为了解决什么问题&#xff1f; 时间回到 1985 年&#xff0c;彼时&#xff0c;后来证明了 CAP 理论的 Lynch 教授此时给当时的 IT 界来了一记惊雷&#xff1a; …

win10计算机磁盘图标,Win10 21H1怎么更换电脑磁盘的图标标识

导语&#xff1a;每台win10电脑的磁盘图标都是一样的,有什么办法可以修改硬盘图标呢?为了让我们的电脑更具个性化,小编给大家分享下Win10 21H1怎么更换电脑磁盘的图标标识。方法如下&#xff1a;手动配置.inf文件1、首先&#xff0c;将要设置为驱动器图标的图标文件(ico格式)复…

服务器重装 pe,WinPE 下安装 Windows Server 2003 服务器

一.准备和资源需求1.U盘&#xff0c;内置WinPE 启动 。2.Windows Server 2003 操作系统的 iso 文件。3.Windows Server 2003 操作系统的正常文件(iso中提取的文件和文件夹)二.安装流程1. u盘 启动 运行 WinPE2. 进入 WinPE系统&#xff0c;把 Windows Server 2003 操作系统的is…