MySQL是怎样运行的——第六章

这一章主要是B+树的基础知识。

6.1

查找大体可以分成两个小步骤

定位到记录所在的页
从所在的页内查找相应的记录

InnoDB引擎下,当我们用主键所在的列进行查找时,可以利用页里的Page Directory区中的槽和记录本身的顺序进行快速的查找。
而使用无索引的列时,我们就只能顺序地进行扫描了。这是因为我们不能快速地定位记录所在的页

6.2

这一节在我看来写的有点过长了,其实就是想引出目录项的概念(也就是B+树的内部叶节点)

首先我们要保证每个数据页内部的各个记录是有序的。
接着,我们需要利用目录项,来快速地查找记录所在的页。每个目录项最少要包含主键的值以及对应的页号。其中主键值是每个页面里最小的主键值。

之后,我们可以把目录项这个概念抽象一下:目录项就是只有两列的普通记录。仔细想一下,目录项只需要主键和页号就行了,其实和普通的页没什么区别。
事实上InnoDB中也是这么做的。我们的记录头信息中有record_type属性,当属性值为1时,这个记录就是目录项。
而因为目录项和普通记录并无太大区别,因此可以复用INDEX这种页结构。也就有着同样的PageDirectory区域,方便我们快速地对目录项进行查找。

索引相关概念

  • 聚簇索引
    1 使用主键值来保证记录和页有序的索引。这句话意味着页内记录、页、目录项都要保证有序。
    2 B+树的叶子节点存储的是完整的用户记录。
  • 二级索引/辅助索引
    指的是对非主键所
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值