innoDB存储引擎-索引与算法-第五章

5.1索引简介

5.1.1innoDB存储引擎支持以下几种常见的索引:

1.B+树索引-1.聚集索引      2.辅助索引 3.联合索引  4.覆盖索引 

2.全文索引-倒排索引

3.哈希索引-哈希索引是自适应的,innoDB存储引擎会根据情况自动为决定是否为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引

5.2 数据结构与算法

5.2.1二分查找法

5.2.2二叉查找树和平衡二叉树

5.3 B+树

B+树的精简定义:B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找书。在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上,由各叶子节点指针进行连接。

5.3.1 B+树的插入操作

表5-1 B+树插入的3种情况
Leaf Page 满Index Page 满操作
NoNo直接将记录插入到叶子节点中
Yes        No

1) 拆分Leaf Page

2) 将中间的节点放入到Index Page 中

3)小于中间节点的记录放左边

4)大于或等于中间节点的记录放右边

YesYes

1)拆分Leaf Page

2)小于中间节点的记录放左边

3)大于或等于中间节点的记录放右边

4)拆分Index Page

5)小于中间节点的记录放左边

6)大于中间节点的记录放右边

7)中间节点放入上一层Index Page

5.4 B+树索引

数据库中的B+树索引可以分为聚集索引和辅助索引。

聚簇索引:数据是存放在叶子节点上。

辅助索引:叶子节点上是不存放真实数据的,而是存放聚集索引的索引值。

ps:什么是填充因子?

填充因子的作用:B+树使用填充因子来控制页面的分裂和合并,设置数据占用页面空间的百分比,目的是为后面的数据预留一部分页空间,当有新数据时,可以放到预留的页空间中,避免分页的发生

填充因子:默认的填充因子是50%,对于一棵m阶的B+树,填充因子是 m/2

5.4.1 聚集索引 

1.什么是聚集索引?

聚集索引就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页(这些数据页即叶子节点通过双向链表链接)。

如图,可以看到,在叶子节点上存放的是数据的行记录格式,而在非叶子节点上,存放的是键值和数据的指向数据页的偏移量,而不是数据。

2.聚集索引的存储方式?

聚集索引的存储是逻辑上连续的。1.数据页通过双向链表链接,页按照主键的顺序排序

2.每个页中的记录也是通过双向链表进行维护的,物理存储上可以同样不按照主键存储。

3.聚集索引的好处?

聚集索引对于主键的排序查找和范围查找速度非常快,叶子节点的数据就是用户所要查询的数据。(因为B+树对于范围查找来说很快)

5.4.2 辅助索引

辅助索引的叶子节点除了包含键值以外,还包含聚集索引的索引值

图中为辅助索引和聚集索引的关系:

5.5 Cardinality值

5.6 B+树索引的使用

5.6.1 

5.7 哈希

1.哈希表

碰撞问题:数据库中采用链接法解决散列函数的碰撞问题。

哈希函数:采用除法散列方式,即h(k)= k mod m,m的取值为略大于2倍的缓冲池页数量的质数。

自适应哈希索引对字典类型的查找非常快速(select * from table where index_col='xxx'),但是对于范围查找就无能为力。

5.8 全文检索

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值