基础内容
1、MySQL的架构分层
2、一条 SQL 查询语句的执行流程
3、如何查看 MySQL 服务被多少个客户端连接了?
4、 空闲连接会一直占用着吗?
5、MySQL 的连接数有限制吗?
6、 怎么解决长连接占用内存的问题?
7、执行器与存储引擎交互的三种方式是什么?
索引
1、什么是索引?
2、索引的分类有哪些?
3、联合索引的最左匹配规则与范围查询的关系
4、什么时候适用索引?
5、什么时候不需要创建索引?
6、有什么优化索引的方法?
7、详细说说EXPLAIN语句查询结果中各字段的含义
8、count()函数的效率比较
事务
1、事务与存储引擎的关系
2、事务的特性
3、事务特性的实现方式
4、并行事务会引发什么问题?
5、事务的隔离级别有哪些?
6、MySQL的InnoDB引擎是怎么解决幻读问题的?
7、四种隔离级别具体是如何实现的呢?
8、具体谈谈Read View
9、可重复读隔离级别下完全解决幻读了嘛?
锁
1、MySQL 有哪些锁?
2、MySQL是怎么加行锁的?
3、next-key lock退化场景是怎么样的(唯一等值、唯一范围、不唯一等值、不唯一范围)
日志
1、为什么需要 undo log?
2、为什么需要 Buffer Pool?
3、Buffer Pool 缓存什么?
4、为什么需要 redo log ?
5、什么是 redo log?
6、产生的 redo log 是直接写入磁盘的吗?
7、redo log 什么时候刷盘?
8、redo log 文件写满了怎么办?
9、redo log和 binlog的区别
10、如果不小心整个数据库的数据被删除了,能使用 redo log 文件恢复数据吗?
11、主从复制的流程是怎么样的?
12、从库是不是越多越好?
13、MySQL 主从复制还有哪些模型?
14、binlog 什么时候刷盘?
15、一条Update语句的完整过程
16、为什么需要两阶段提交?
17、什么是两阶段提交?
18、分析两阶段提交下异常重启不会导致主从数据不一致。
19、事务没提交的时候,redo log 会被持久化到磁盘吗?这样会不会有问题?
20、两阶段提交存在什么问题?
21、怎么解决两阶段提交的问题?
22、详细说说两阶段提交的流程。
23、组提交发现MySQL的IO还是很高,有什么办法优化?