主文章(我总结的面试题的索引目录—进不去就说明我还没写完) |
---|
https://blog.csdn.net/grd_java/article/details/122357831 |
文章目录
1. 关于IO磁盘的知识
1. 什么是局部性原理,什么是磁盘预读?
- 磁盘预读:磁盘中有一个页的逻辑单位(一般是4K或4K的整数倍),假设我取一个字符a,并不是只取字符a,而是取一页。(给电脑装SSD固态硬盘时,经常需要做4K对齐,就是这个页的最小单位)
2. 什么是顺序读写,什么是随机读写?
2. mysql底层数据结构
1. Mysql索引采用什么数据结构,为什么采用此数据结构,其它数据结构不行么?
- B+树,只在叶子结点存储key+数据data的B树,非叶子结点只存储key,而不是在每一个结点都存储data。这样做,每个结点可以包含更多结点的指针key,降低树的高度,范围也变成多个区间,区间越多,数据检索越快。并且B+树叶子结点,两两指针相互连接(为了符合磁盘预读特性),顺序查询性能更高
3. mysql索引基础
1. 为什么索引可以加快数据的查询
2. InnoDB如何创建索引,什么情况下会回表
3. MyISAM存储引擎,如何创建索引?
4. 如果数据库某表肯定需要建立索引时,主键该不该设置自增?
- 页分裂:
- 所以自增的主键,很大程度减少页合并和页分裂的成本。而随机生成的,可能需要频繁进行页分裂
5. 什么是自然主键,什么是代理主键?应该使用那种主键?
6. Mysql索引分几类?分别是什么?
4. mysql索引细节
1. 回表
2. 索引覆盖
3. 最左匹配
4. 索引下推