InnoDB索引与算法

1:概述

InnoDB支持一下几种常见的索引:

  • B+索引(B代表平衡)
    B+数索引并不能找到一个给定键值的具体行,只能查找到数据行所在的列。把页读入内存,再在内存缓冲池中进行查找。
  • 全文索引
  • 哈希索引(自适应的)

2:索引

2.1:B+树简介

P187 innoDB技术内幕

2.2:聚集索引与非聚集索引

原理与关系

参考文章

聚集索引就是按照每张表的主键来构造一颗B+树。同时叶子节点存放的就是整张表的行记录数据,所以聚集索引得到叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分。一张表只会有一个聚集索引,按照组件生成。

辅助索引: 一张表可以有多个,但不是越多越好。叶子节点并不是包含行记录的全部数据,而是除了包含键值外,包含一个对应行数据的书签,这个书签就是对应的主键。通过辅助索引找到书签后,再通过书签(主键)在聚集索引中取查找一个完整的行记录。

2.3:在InnoDB中B树的分裂

在innoDB中不能总是在页的中间节点进行分裂,因为插入的数据时按照主键顺序自增的插入的。很容易造成页空间的浪费。

比如第一页:23
第二页:789.
那么第一页的剩余位置一般是不会再被插入数据的,就造成了空间的浪费。

在InnoDB中一般是向左或者向右分裂。当前定位到的记录是待插入数据的前一条记录。如果在当前页中当前定位记录的右边还有n条数据记录,不管是否当前页占满,那么分裂点都是当前页占满后的第一条记录。

如果当前记录一件事当前页的最后一条记录,那么带插入记录的第一个记录就是分裂点。

技术内幕201页

2.4:B+树索引的管理

索引的创建和删除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值