数据库中索引为什么要使用B+ Tree

数据库索引为什么使用B+ Tree

索引是为了提高数据库的查询速度,相当于给数据进行编号,在查找数据的时候就可以通过编号快速找到对应的数据

实际用的数据结构用的是B+ Tree

主键自带索引

image-20210310101337559

image-20210310101359762

乱序插入数据,会自动按照id进行升序排列,这是因为主键自带索引,数据存储的内部结构类似于链表的形式,通过指针关联不同的数据

image-20210310101624279

这种结构当数据量很大的时候查询还是很慢,MySQL如何解决?

MySQL中有一个page的概念,相当于给数据进行分页,把一部分数据存入一个page中,如下所示

image-20210310104534198

每个page可以存储16KB的数据,这样就相当于给数据建立了上层目录,先找打目录,再找具体的数据,MySQL给page也提供了快速查询的page目录

image-20210310105117136

把每个page中的第一条数据的id+指针存入page目录中,查询数据的时候,先找到它的page,在进入page中查找具体的数据

一个page目录中也可以存储16KB的数据,如果是海量数据,page目录也会有很多层,为了提高查询效率,MySQL给page目录再加一层目录,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lLcXxBUQ-1615345497340)(https://gitee.com/Onlylmf/image/raw/master/img/image-20210310105630189.png)]

这种结构就是B+Tree

假设一条记录的空间32个byte,最底层一个单元可以存储数据16*1024/32=512

第二层只需要记录id+p, 假设是6个byte, 则可以保存的数据是16*1024/6=2730

第三层存储的数据16*1024/6=2730

即: 总共可以存储的数据是:512*2730*2730

/6=2730`

即: 总共可以存储的数据是:512*2730*2730

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值