大纲
1、逻辑架构:MySQL包含了哪些逻辑组件?
2、日志文件:一条数据是如何落盘的?
3、存储引擎:MyISAM、InnoDB我该如何选?
4、事务隔离:并发执行是如何避免幻读、脏读、重复读?
5、事务日志:MySQL如何保证数据的一致性?
6、InnoDB特性之Double Write:如何保证数据在刷新到磁盘时不丢失?
7、事务实现:事务的底层是如何实现的?
8、MVVC:MySQL是如何实现高并发读能力的?
9、索引存储结构:MyISAM与InnoDB中都是使用什么数据结构存储表数据的?
10、索引与算法:为什么InnoDB使用的是B+树,而不是红黑树或B树?
11、索引实现:MySQL有哪几种数据结构类型的索引?
12、InnoDB特性之自哈希索引:InnoDB到底支不支持Hash索引?
13、索引类型:聚族索引与辅助索引有什么区别?
14、InnoDB特性之插入缓存:InnoDB如何优化辅助索引随机插入?
15、覆盖索引:什么是回表?如何避免回表?
16、索引失效:InnoDB中有哪些SQL查询会出现索引失效?
17、索引选择:数据库是如何选择索引的?
18、SQL优化:为什么不建议直接limit n,m分页查询?
19、Order By:什么是文件排序?为什么要避免文件排序?
20、范式与反范式:什么是第三范式,你们还在遵循第三范式吗?
21、联合查询:如何优化join查询?
22、表分区:为什么DBA不建议使用表分区?
23、读写分离:如果在高并发时读写都是主库,会有性能问题吗?该如何优化?
24、分表分库:如何实现分表?计算哈希值分表之后会有什么问题吗?如何优化?
25、分布式事务:分库之后,你们是如何保证事务数据的一致性?
26、MySQL部署:你们的数据库是采用什么部署模式?各个模式的优缺点是什么?