一、MySQL大厂面试题概览
MySQL大厂面试题主要由以下五个部分组成:
1.MySQL索引
2.MySQL内部技术架构
3.MySQL事务
4.MySQL日志
5.知识
现在的面试馆呈现出一种刨根问底儿式的问法,更注重考察被面试者的知识深度了
面试的时候要会引导面试官问自己擅长的内容
二、MySQL如何实现的索引机制?
MySQL中索引分为三类:
1.B+树索引
InnoDB或者MyISAM存储引擎底层是B+树索引
2.Hash索引
使用的Hash索引的好处是快、准
B+树索引存储的是全量数据,Hash索引可以做一些辅助性的查询,从而能够快速的定位到指定数据
B+树索引和Hash索引是同时存在的,Hash索引是配合的B+树索引使用的,Hash索引无法手动创建,是系统自动创建出来的
3.全文索引
对所有的数据进行全文的摘要和索引
重点的是B+树索引,以及配合其使用的Hash索引
1.InnoDB索引与MyISAM索引实现的区别是什么?
两个关键点:
1.索引的位置不同
InnoDB索引存储的时候和数据存放在同一个文件里,数据是会存储在磁盘文件上面,索引建好之后就直接在该文件后面进行追加;MyISAM索引不一样,其是单独的一个文件
2.B+树叶子节点存储内容不一样
InnoDB索引的B+树叶子节点指向的是ID(聚簇索引存储的是数据本身,非聚簇索引存储的是ID,通过ID进行回表操作);MyISAM索引的B+树叶子节点指向的是指针(或者说是物理的地址)
InnoDB索引与MyISAM索引实现的共同点:
它们的底层实现都是B+树
InnoDB索引与MyISAM索引实现的不同点:
1.InnoDB的辅助索引(非主键索引/非聚簇索引)叶子节点的data域存储的是相应记录的主键的值而不是地址,聚簇索引的话存储的是具体的数据
2.InnoDB的数据本身就是主索引文件
3.MyISAM的索引和数据是分开存储的
2.一个表中如果没有创建索引,那么还会创建B+树吗?
如果创建表的时候指定了主键,那么将会把该主键的字段去创建聚簇索引,此时B+树就会被创建了
如果是没有主键,也会去创建聚簇索引,此时B+树存储的是隐式的ROWID,ROWID只供MySQL内部使用,我们是无法使用的