走进迈莫

阿里腾讯面试官问为什么Mysql用B+树做索引而不用B-树或红黑

2021-01-27  本文已影响0人  迈莫coding
在这里插入图片描述

说这个面试题,先来回顾一下B+树、B-树、平衡二叉树、红黑树的概念

平衡二叉树

在这里插入图片描述

红黑树

在这里插入图片描述

B-树

b-.png

B+树

在这里插入图片描述

平衡二叉树不足

B-树相比平衡二叉树优点

B+树对比红黑树

B+树相比B-树的优点

为什么高度为3的B+树存储千万级数据?

解释这个问题的前提,mysql使用InnoDB引擎,mysql默认页文件大小为16k

假设我们一行数据大小为1k,那么一页存储16条数据,也就是说一个叶子节点能存储16条数据

再来看看非叶子节点,假设主键ID为bigint类型,那么长度为8B,指针大小在InnoDB引擎中的大小为6B,一共14B,那么一页中可以存放16k/14B=1170个(主键+指针)

也就是说高度为2的B+树可以存储的数据为:117016=18720条;高度为3的B+树可以存储的数据为:11701170*16=21902400(千万条数据)

这也是为什么mysql可以支撑千万级别数据的原因

文章也会持续更新,可以微信搜索「 迈莫coding 」第一时间阅读。

上一篇下一篇

猜你喜欢

热点阅读