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索引背后的数据结构和算法原理
- MySQL索引背后的数据结构及算法原理
- [zz学习]MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- 树结构应用之MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- [转]MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理(3)
- MySQL索引背后的数据结构及算法原理(写的很要好的一篇文章,在“结构之法算法之道”中看到的推荐文章)
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理(转)
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理
- MySQL索引背后的数据结构及算法原理