您的位置:首页 > 理论基础 > 数据结构算法

MySQL索引背后的数据结构及算法原理

2017-10-15 18:10 337 查看

1、索引的本质

索引:数据结构

查询算法(顺序查找、二分查找、二叉查找树等),不同的查询算法适用于不同的数据结构;

2、b tree和b+tree

B+树内节点不存储数据,所有 data 存储在叶节点导致查询时间复杂度固定为 log n。

B-树查询时间复杂度不固定,与 key 在树中的位置有关,最好为O(1)

3、为什么使用b tree和b+tree作为索引

B-/+Tree作为索引的理论基础;

索引文件存储在内存和磁盘上==》索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数;

主存存取原理;

磁盘存取原理;

局部性原理和磁盘预读;

4、mysql索引性能分析

不同存储引擎对索引的实现方式是不同的;

MyISAM存储引擎:

B+Tree作为索引结构;

非聚集索引

索引文件和数据文件是分离

主索引和辅助索引(Secondary key)在结构上没有任何区别

索引文件中的叶节点的data域存放的是数据记录的地址

InnoDB存储引擎:

B+Tree作为索引结构

InnoDB的数据文件本身就是索引文件

主索引文件中的叶节点data域保存了完整的数据记录

辅助索引data域存储相应记录主键的值而不是地址

mongodb使用b tree;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 索引