从数据库优化追问到B+树,头痛还被虐!

共 1841字,需浏览 4分钟

 ·

2020-07-24 19:13

昨天和前同事下班约好一起去吃火锅,期间听到他皱眉毛叹气,“前段时间去面试,被面试官连环追问从MYSQL数据库优化一路追问到B+树索引底层。当场崩溃啊,想想就头痛。”

于是我笑了笑,“MYSQL B+索引,每天都在用却不知道原理。面试官估计心里在犯嘀咕,其它方面都可以,但是就怕你来了之后,数据库变慢了。这样我帮你具体分析分析。”

面试题是这样的:

Q:InnoDB使用的B+ 树的索引模型,你知道为什么采用B+树吗?这和Hash索引比较起来有什么优缺点吗?

A:(突然觉得这道题有点难d963b4cd0076b8316aef7f259888b1a0.webp)因为Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,所以多个数据在存储关系上是完全没有任何顺序关系的,对于区间查询是无法直接通过索引查询的,就需要全表扫描。哈希索引只适用于等值查询的场景,而B+树是一种多路平衡查询树,它的节点是天然有序的,所以对于范围查询的时候不需要做全表扫描。

Q:在创建联合索引的时候,需要做联合索引多个字段之间顺序是如何选择的呢?

A:我们把识别度最高的字段放到最前面

Q:为什么这么做呢?

A:(这个问题有点把我问蒙了f45e5d40ddefbfd413175da6b1b8bf27.webp)这样的话可能命中率会高一点吧...

Q:你知道最左前缀匹配吗?

A:(我突然想起来原来面试官是想问这个713fb53384ef0f202f50e27f5a464ef5.webp)在创建多列索引时,我们根据业务需求,where子句中使用最频繁的一列放在最左边,因为MySQL索引查询会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。所以当我们创建一个联合索引的时候,如(key1,key2,key3),相当于创建了(key1)、(key1,key2)和(key1,key2,key3)三个索引,这就是最左匹配原则)

Q:那什么情况下会发生明明创建了索引,但是执行的时候并没有通过索引呢?

A:(大概记得和优化器有关,但是这个问题并没有回答好09d3c7c1281aade76880829840a6f74d.webp

“最后感觉是因为自己回答的不够好,所以被追问得很多,虐的很惨。”朋友这样说。

作为一名后端程序员,需要经常与MYSQL打交道,不过更多的时候可能还是停留在增删改查的应用层面。然而随着负责项目的数据量增长和服务器硬件性能出现瓶颈,通过理解MYSQL的工作原理,在遇到问题的时候,就能更快地摸清问题的本质;知道索引的实现原理,就能从原理的角度推断可能的解决方案。

所以,这里给大家推荐一个Java进阶训练营。除了会精讲MYSQL索引实现原理以外,Spring、Springboot、JVM都会涉及到。训练营为期4天,每晚20:00,进群即可0元领取听课名额。


训练营具体内容:

29d664efdc4ac089f99f42dfe0c936ea.webp


训练营详细技术课程大纲:

DAY1:面试互联网大厂Spring面试题详解

1. Spring中Bean的生命周期有哪些步骤?

2. 什么是BeanDefinition?它为什么非常重要?

3. 什么是Bean的后置处理器?

4. 什么是Bean工厂的后置处理器?

5. 什么是BeanFactory?它与ApplicationContext的区别?

6. 什么是FactoryBean?它与BeanFactory的区别?

7. @Import、@Component、@Bean的区别是什么?

8. 什么是ImportBeanDefinitionRegistrar?它的作用是什么?


DAY2:面试必备JVM调优实战

1、补下进制知识

2、你知道怎么计算对象大小吗?

3、深入讲解指针压缩

4、虚拟机栈溢出与调优


DAY3:深入理解Springboot底层原理

1. springboot零配置的原理
2. springboot如何做到内嵌tomcat
3. springboot启动流程原理
4. 常见面试考点SPI规范讲解


DAY4:深入Mysql索引实现原理

1. B+树的定义2. InnoDB中的“页”3. InnoDB中主键索引生成过程4. InnoDB中联合索引生成过程5. 索引实战与优化


训练营技能斩获:

学会Java核心技术,构建完整知识体系;

深入Java底层源码,培养阅读源码能力

提升底层开发能力,把握框架运行流程;


课程中将会提供的服务

1、技术答疑

直播期间,通过与讲师进行技术问题的切磋,讲师将会对相关问题进行解答。

2、助教督学

助教全程式陪伴学习,提醒到课、发送技术资料、整理学员学习需求。

3、技术资料辅助

在课程进行的同时,我们也准备了相应的技术脑图和知识点大全,方便进行系统学习。

a59714234f22480d3c7ee4071b1e963e.webp

b5ef5832f7b809fe89d640f525b9c17a.webp

3043d8faaa8d41bbfa9930abe9d509be.webp

本次课程全程不收取任何费用,长按识别扫码进群,和更多的小伙伴一起完成技术系统性进阶。

浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报