It's Design——为什么MySQL使用B+树?

引言

相信每一个后台开发工程师在面试过程中,都曾经被问到过“MySQL的默认存储引擎是什么?MySQL索引是什么数据结构?”这样的问题。相信准备充分(熟读八股文)的大家都能很容易的回答出“MySQL的默认存储引擎是InnoDB,MySQL索引使用的是B+树。”这样的答案。但是为什么当初写MySQL的程序员大叔要这样子来设计呢?

概述

首先需要明确一点,MySQL跟B+树没有直接的关系,真正与B+树有关系的是MySQL的默认存储引擎InnoDB,MySQL中存储引擎的主要作用是负责数据的存储和提取,除了InnoDB之外,MySQL中也支持MyISAM等引擎作为表的底层存储引擎。但是不管是InnoDB或是MyISAM,其实索引的数据结构都是B+树。只是InnoDB采用的是聚簇索引,实际数据就在B+树叶子节点上;而MyISAM会单独为表的主键创建一个索引,叶子节点保存指向实际数据的指针。

那么接下来,我们就来探讨一下,为什么MySQL使用B+树?

一、从磁盘I/O说起

1. 磁盘基本概念

让我们把时间回退到程序员大叔设计MySQL的年代。大叔们设计数据库那肯定是需要介质来存储数据的,说到存储介质,那我们能想到的就是两类:磁盘、SSD硬盘。SSD硬盘肯定香啊,但是也贵,而且数据库是要支持上T数据的存储,2021年想想这条路都太贵啦,大叔们还是乖乖用磁盘吧~

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载时请注明原文链接,图片在使用时请保留图片中的全部内容,可适当缩放并在引用处附上图片所在的文章链接,图片使用 Figma 进行绘制。

原作者: yuann

原文链接:It's Design——为什么MySQL索引用B+树?

发布日期:2021-04-15

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
It's Design——为什么MySQL使用B+树?
相信每一个后台开发工程师在面试过程中,都曾经被问到过“MySQL的默认存储引擎是什么?MySQL索引是什么数据结构?”这样的问题。相信准备充分(熟读八股文)的大...
<<上一篇
下一篇>>