|
手艺频道
|
51CTO旗下网站
|
|
挪动端
dkk金沙路线测试

为何MySQL数据库要用B+树存储索引?

小史是一个应届生,固然学的是电子专业,然则本身业余时间看了许多互联网取编程方面的书,一心想进 BAT 互联网公司。

作者:channingbreeze泉源:|2019-03-14 09:51
  分享 金沙国际2286线路检测

小史是一个应届生,固然学的是电子专业,然则本身业余时间看了许多互联网取编程方面的书,一心想进 BAT 互联网公司。

话说两个多月前,小史经由过程了 A 厂的一面,两个多月后的今天,小史终究比及了 A 厂的二里。

在简朴的毛遂自荐后,口试官看了看小史的简历,最先提问了。

口试现场

小史:没问题,这个项目前端用的 React+Webpack,后端用的 Nginx+Spring Boot+Redis+MySQL,前后端是星散的,最初用 Docker 停止容器化布置。重要模块有师生体系、课程体系、结果体系、选课体系等。

这个项目的架构和说辞,小史早已背得溜溜的。

小史:底层 MySQL 是存储,Redis 是缓存,Dao 层操纵 MySQL,Cache层操纵 Redis,Service 层处置惩罚业务逻辑,Rest API 层为前端供应 Rest 接口。

前端这边用 React 停止模块化,Webpack 打包布置。网关 Nginx 停止负载平衡。MySQL、Redis、Nginx 和 Spring Boot 运用皆放在 Docker 里布置。

问题:为何 MySQL 数据库要用 B+ 树存储索引?小史听到这个问题,堕入了回想。

前段时间的饭局

话说吕先生给小史讲完人工智能的一些常识后,他们一同回家吃小史姐姐做的饭去了。

吕先生:口试的时刻肯定是往深了问,不醒目的话轻易亏损。不外口试时一样平常都是凭据项目去问,项目顶用到的手艺,一定要多看看道理,特别是能和数据结构和算法挂钩的那局部。

小史:树的话,不过就是前中后序遍历、二叉树、二叉搜刮树、均衡二叉树,更初级一点的有红黑树、B 树、B+ 树,另有之前您教我的字典树。

红黑树

一听到红黑树,小史头都大了,最先诉苦了起来。

小史:红黑树看过许多遍了,然则每次皆记不住,它的划定规矩着实是太多了,光界说便有四五条划定规矩,另有插入删除的时刻,需求调解树,庞大得很。

吕先生:小史,问您红黑树,其实不是让您背诵它的界说,大概让您手写一个红黑树,而是念问问您它为何如许设想,它的运用场景有哪些。

B 树

吕先生:小史,您要晓得,文件系统和数据库的索引都是存在硬盘上的,而且若是数据量大的话,不一定能一次性加载到内存中。

两个月前,小史口试出思索内存状况差点挂了。

dkk金沙路线测试

B+ 树

吕先生:那也是和业务场景相干的,您想一想,数据库中 Select 数据,不一定只选一条,许多时刻会选多条,好比根据 ID 排序后选 10 条。

小史:我晓畅了,若是是多条的话,B 树需求做部分的中序遍历,能够要跨层接见。

而 B+ 树因为所有数据皆在叶子结点,不消跨层,同时因为有链表构造,只需求找到首尾,经由过程链表就能把所有数据与出来了。

回到现场

小史:那和业务场景有关。若是只选一个数据,那确切是 Hash 更快。然则数据库中常常会选择多条,这时候因为 B+ 树索引有序,而且又有链表相连,它的查询效力比 Hash 便快许多了。

小史:并且数据库中的索引一样平常是在磁盘上,数据量大的状况能够没法一次装入内存,B+ 树的设想能够许可数据分批加载,同时树的高度较低,进步查找效力。

HR 和小史简朴天聊了聊基本情况,此次口试便完毕了。小史走后,口试官在体系中写下了口试考语:

几天后,小史收到了 A 厂的 Offer。

【编纂推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
  •     
分享:
www.9980.com
人人皆在看
猜您喜好

编纂推荐

头条
存眷
热点
存眷
存眷
金沙国际2286线路检测
24H热文
一周话题
本月最赞

定阅专栏

运维标配手艺
共15章 | one叶孤舟

60人定阅进修

实战直通车
共35章 | UbuntuServer

235人定阅进修

把握Java中心
共30章 | 51CTO王波

91人定阅进修

视频课程

讲师:26240人进修过

讲师:24198人进修过

讲师:19925人进修过

CTO品牌

最新专题

金沙国际2286线路检测
精选博文
论坛热帖
下载排行

读 书

《网管员必读—服务器取数据存储》周全、体系天引见了在中、初级网络管理和网络工程实行中两个主要方面的支流手艺和运用:硬件服务器和数据...
金沙国际2286线路检测

定阅51CTO邮刊

51CTO服务号

51CTO播客