0
点赞
收藏
分享

微信扫一扫

Mysql索引--04---MySQL数据结构概述

小桥流水2016 2022-02-09 阅读 100

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


MySQL数据结构

在这里插入图片描述
在这里插入图片描述

Hash结构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Hash结构效率高,那为什么索引结构要设计成树型呢?

在这里插入图片描述

MySQL中Hash索引

在这里插入图片描述
在这里插入图片描述

innodb —自适应 Hash 索引

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

树结构简述

在这里插入图片描述

二叉搜索树

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

AVL树

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

B-Tree

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

B+Tree

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

R树

在这里插入图片描述

面试题

1. B+ 树和 B 树的差异:

在这里插入图片描述
在这里插入图片描述

2. B+数中间节点不直接存储数据,这样的做的好处是什么?

在这里插入图片描述

3. B+树的存储能力如何?为何说一般查找行记录,最多只需1~3次磁盘IO

在这里插入图片描述

  • Mysql 默认底层给每个节点设置的容量大小是 16kb

在这里插入图片描述

  • 假设一个主键索引 类型为 bigint 8个字节,

  • Mysql 默认给指针分配的内存大小 是 6个字节

  • 每一个节点能存储 16*1024/(8+6)=1170个索引元素

  • 叶子节点的索引元素因为要存储data,所以按1kb的大小计算的话,一个叶子节点能存储16个索引元素

经过上述计算得知,一个高度h为3 的 B+树,叶子节点,大约能容纳2100万个索引元素.

所以上千万的数据表,MySQL也只要经过1到2次的io磁盘查找,就能获取到指定元素的数据.

4. 为了减少IO,索引树会一次性加载吗?

在这里插入图片描述

5. 为什么说B+树比B-树更适合实际应用中操作系统的文件索引和数据库索引?

在这里插入图片描述

6. Hash 索引与 B+ 树索引的区别

在这里插入图片描述

举报

相关推荐

0 条评论