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

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


MySQL数据结构

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

Hash结构

在这里插入图片描述

java hashmap

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

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

在这里插入图片描述

MySQL中Hash索引

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

innodb —自适应 Hash 索引

在这里插入图片描述

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

innodb默认开启了自适应 Hash 索引

树结构简述

树–01—定义

在这里插入图片描述

二叉搜索树

在这里插入图片描述

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

AVL树

在这里插入图片描述

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

B-Tree

在这里插入图片描述

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

B+Tree

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

B+树的叶子节点存储的是完整的用户记录。

在这里插入图片描述

R树

在这里插入图片描述

面试题

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

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

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

在这里插入图片描述

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

在这里插入图片描述

计算一个h=3的b+树 能存多少个索引元素?
  • Mysql 默认底层给每个节点设置的容量大小是 16kb

在这里插入图片描述

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

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

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

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

count(索引元素)=1170 * 1170 * 16=21902400

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值