1. <br /> 1:MySQL索引底层数据结构<br /> 1:索引总览<br /> 2:二叉树(Binary Search Tree)<br /> 3:红黑树(Red/Black Tree)<br /> 4:B-Tree<br /> 5:B+Tree(B-Tree的变种)<br /> 6:Hash索引<br /> 7:MyISAM索引引擎 与 InnoDB索引引擎 <br /> 1:数据库引擎索引<br /> 2:MyISAM索引文件和数据文件是分离的<br /> 3:InnoDB索引实现<br /> 8:InnoDB索引引擎总结<br /> <br /> 2:Explain工具(SQL分析)<br /> 1:前置建表语句_DDL<br /> 2:什么是Explain<br /> 3:explain 两个变种(了解)<br /> 1: id列<br /> 2:select_type列 <br /> 3:table列<br /> 4:possible_keys 与 key<br /> 4:explain中的列 (重要的列)<br /> 1: id列<br /> 2:select_type列 <br /> 3:table列<br /> 4:possible_keys 与 key<br /> 5:explain中的列(最核心 type列) <br /> 1:总览 <br /> 2:const, system<br /> 3:eq_ref(不需要优化)<br /> 4:ref(优化到该级别就行)<br /> 5:range(可以接受)<br /> 6: index(有使用索引 但需要优化)<br /> 7: ALL<br /> 6:explain中的列(需要了解的列) <br /> 1:key 与 key_len (特别是联合索引)<br /> 2:ref列 <br /> 3:rows列(了解)<br /> 4:extra列(了解)(不确定的 仅能参考)<br /> <br /> 3:索引最佳实践(常用)<br /> 1:前置建表语句_DDL<br /> 2:回顾上节的索引结构图以及key_len的计算<br /> 3:全值匹配(联合索引)<br /> 4:最左前缀法则(联合索引)<br /> 5:存储引擎不能使用索引中范围条件 右边的列 (联合索引)<br /> 6:尽量使用覆盖索引 (联合索引)<br /> 7:不在索引列上做任何操作<br /> 8:like以通配符开头<br /> 9:字符串不加单引号索引失效<br /> 10:mysql在使用范围查询有时候导致的无法使用索引<br /> 11:范围查询优化 <br /> 12:小总结<br /> <br /> 4:Mysql的事务隔离级别和锁机制原理<br /> 1:概述<br /> 2:事务及其ACID属性(概述)<br /> 3:锁详解<br /> 4:会话与事务的关系<br /> 5:表锁<br /> 6:行锁<br /> 7:小总结<br /> <br /> 5:行锁与事务隔离级别案例分析<br /> 1:建表语句_DDL<br /> 2:事务的提交<br /> 3:读未提交<br /> 4:读已提交(解决 读未提交 的脏读问题)<br /> 5:可重复读(Mysql默认隔离级别)(最重要)<br /> 1:测试可重复读<br /> 2:可重复读 无法解决的幻读<br /> 3:可重复读 测试修改 隔离级别中使用 update对 select的修改<br /> 4:可重复读 中MVCC机制了解<br /> 5:可重复读 MVCC版本控制流程说明 (原理下章讲解)<br /> 6:可串行化(查询修改语句 都会加间隙锁)(解决幻读问题) <br /> 7:间隙锁(Gap Lock)<br /> 1:哪个隔离级别就存在间隙锁<br /> 2:可重复读 和 可串行化 什么条件下用间隙锁<br /> 3:间隙锁的范围真的只是在范围内吗<br /> 4:深入理解间隙锁的间隙<br /> 5:临键锁(Next-key Locks)<br /> 8:无索引行锁会升级为表锁(极度危险)<br /> 9:行锁分析(了解即可 其他交给DBA)<br /> 10:死锁(了解即可 其他交给DBA<br /> 11:锁优化建议
    2. 6:MVCC多版本并发控制机制<br /> 1:MVCC多版本并发控制机制介绍<br /> 2:undo日志版本链(概念)(先了解)(不要纠结) <br /> 3:readview机制 (概念)(先了解)(不要纠结) <br /> 4:实例讲解 前置知识<br /> 5:实例讲解 <br /> 6:MVCC多版本并发控制机总结 <br /> <br /> 7:Innodb引擎SQL执行的BufferPool缓存机制<br /> 1:Innodb引擎图解<br /> 2:undo_log redo_log binlog (先了解)<br /> 3:执行器 <br /> 4:存在问题 <br /> 5:Mysql要设置这么一套复杂的机制来执行SQL了?
    3. 本章目标: <br /> 让读者在有一定基础的情况下,可以深刻理解MySQL的内核机制,<br /> 并针对实际上遇上的问题,能够利用本章所学有分析以及解决的能力。
    4. 知识来源:<br /> 图灵学院-MySQL优化章节<br /> <br /> 参考技术文章:<br /> Explain分析示例官网文档<br /> [https://dev.mysql.com/doc/refman/5.7/en/explain-output.html](https://dev.mysql.com/doc/refman/5.7/en/explain-output.html)<br /> <br /> 使用工具:<br /> 算法可视化网站 <br /> [https://www.cs.usfca.edu/~galles/visualization/Algorithms.html](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)<br />