MySQL作为最流行的关系型数据库管理系统,重要性不言而喻。面试时它也是重点考察对象之一,估计大家都有过被MySQL相关问题支配的经历:
如何理解MySQL中加锁原理以及最终死锁形成的原因 ?
介绍一下连接池的工作方式,为什么 mysql 的连接数说爆就爆了?
简洁描述下 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
说一下隔离级别的语义,必须使用事务的话绕不开,为什么同样的代码,迁移到 RDS 后行为会不一致?
上面几个问题,你能全部答出来吗?
其实,无论是后端程序员、前端程序员,还是架构师,数据库是所有开发人员需要面对的共性部分。大家工作项目中的性能问题,容易出现瓶颈的地方常常是MySQL这块,用好它对于整体项目性能提升会有很大帮助。可以说MySQL掌握的越深入,你能做的事情就越多。
有些人觉得自己花了不少精力去学如何做MySQL性能优化,但进展不快,很可能忽视了这点:有了性能分析的技术储备,才能更好掌握性能优化。最近我整理了一套MySQL视频,由浅及深讲了MySQL性能分析 + 性能优化,内容很细,基本覆盖了大家日常工作中经常碰到的一些问题,有必要共享给读者。
具体有哪些细节内容?
【 MySQL执行计划查看、索引失效分析、加锁分析 】
1. 索引优化之组合索引的使用技巧
组合索引、最左前缀原则
2. explain执行计划重要参数select_type讲解
MySQL优化器、子查询、联合查询、临时表
3. explain执行计划重要参数type讲解
MySQL优化器、主键索引、唯一索引、非唯一索引、组合索引、索引覆盖
4. explain执行计划重要参数extra讲解
MySQL优化器、索引覆盖、文件排序、ICP
5. 索引失效案例分析
组合索引、最左前缀原则、索引覆盖
【 MySQL锁和事务篇 】
1. InnoDB存储引擎内存结构之Buffer Pool
InnoDB的架构图、InnoDB内存结构和物理文件之间的工作关系、数据页、索引页
2. InnoDB存储引擎内存结构之Redo Log Buffer
InnoDB的架构图、Redo log工作原理和落盘原理
3. InnoDB存储引擎物理文件之系统表空间和用户表空间文件
InnoDB的架构图、系统表空间文件和用户表空间文件
4. InnoDB存储引擎物理文件之重做日志文件和归档文件
InnoDB的架构图、重做日志文件、重做日志缓冲
5. InnoDB存储引擎之重做日志落盘机制
InnoDB的架构图、落盘机制、WAL(Write ahead redo log)、Force-log-at-commit、checkpoint机制
6. InnoDB存储引擎事务原理之原子性、持久性和一致性实现
redo log、undo log和Force Log at Commit机制、checkpoint机制
7. InnoDB存储引擎事务原理之隔离性实现
MVCC、Lock-based CC、一致性非锁定读(consistent nonlocking read)、快照读&当前读
8. InnoDB存储引擎之一条简单SQL的行锁加锁实现分析
record lock、gap lock、next key lock、RR和RC隔离级别、MVCC机制、主键索引、辅助索引
9. InnoDB存储引擎之一条复杂SQL的行锁加锁实现分析
record lock、gap lock、next key lock、RR和RC隔离级别、MVCC机制、主键索引、辅助索引
10. InnoDB存储引擎之死锁原理分析
主键索引、辅助索引、死锁