画外音:丁奇,数据库内核专家,前腾讯云数据库负责人,国内数据库内核布道第一人。初识丁奇,纯属机缘巧合。2018年底,有个平台要做一个MySQL相关的课程,找到了我和丁奇。画外音:我估计,平台可能是看到我写过一些MySQL内核的文章。1. 一条查询语句是如何执行的
2. 一条更新语句是如何执行的
3. MySQL索引内核原理
4. 行锁与表锁对性能的影响
…
四十五节,从基础到原理,从内核到应用,拳拳直击痛点。看到他的大纲,一时间情绪顿时涌上心头:讲MySQL,我不配。后来的故事大家都知道了,丁奇的《MySQL实战45讲》,成了全网最火的MySQL学习资料。画外音:一个MySQL这么垂直的技术话题,22.8W人学习,太流弊了。我虽然没有机会做课,却也幸运地交到了一个朋友,一个数据库大神,一个纯粹的技术人。作为朋友,丁奇也经常会指正我相关文章中的不足,帮助我提高。“在经历了一些事情之后,我发现,技术是我最爱,也最能发挥自己价值的地方。我决定,自己的下半场,投入到这个事业中去。”丁奇和我如是说,“我要升级一版,讲全网最全面,最深入,最通俗的MySQL技术”。第一节:基础回顾
1. InnoDB的数据组织形式
2. 执行器基本操作演示
3. 索引树操作
-
index up
-
index range scan
-
table scan
-
index skip scan
4. 过滤
5. 排序算法与性能评估
- 普通排序
- 优先队列排序
- 归并排序
第二节:执行器原理与架构
1. 读懂explain analyze
2. 读懂optimizer_trace
3. 执行流程概述
4. 发现SQL瓶颈
5. 设计优化方案
第三节:案例实践
1. 优化案例1(根据第二节的流程与方法)
2. 优化案例2
…
n. 优化案例n
第一节:基础回顾
1. 常见Join语义和示例
-
join
-
left join
-
right join
-
outer join
2. on与using的异同
第二节:join算法流程和代价分析
1. Nested Loop Join
- 算法流程
- 驱动顺序选择代价分析
-
straight_join 的语义和功能
2. semi-join
-
MySQL使用semi-join的场景
- 算法流程和时间复杂度
3. anti-join
-
MySQL使用anti-join的场景
- 算法流程和时间复杂度
4. Block Nested Loop Join(BNL)和 Hash Join
-
join buffer 的使用场景
-
BNL的时间复杂度
-
Hash Join 算法流程和代价分析
第三节:Join语句的应用场景
1. 两个表join的业务逻辑
-
SQL写法
- 能否改写成简单语句替换?
- 分析方法和结论
2. 一个执行10.1秒的SQL语句的优化过程
- 从10.1s到3.4s
- 从3.4s到1.3s
- 能否改写成简单语句替换?
- 分析方法和结论
3. semi-join场景应用
4. anti-join场景应用场景
5. 两个三表join的例子
- 性能分析和优化
- 从27s到0.01s
第四节:实战应用
我不敢说,丁奇是数据库内核第一人,但说他是国内数据库内核布道第一人,绝不为过。一身过硬的武功,用最通俗的语言,最朴实的案例来讲解数据库内核,属实钦佩。无论如何,好友创业,我得帮他宣传一下。同时,也帮大家争取了一些福利。画外音:强烈建议关注,未来会持续有内容更新,免费学习。
画外音:完整的大纲可咨询丁奇,说明是“架构师之路”的朋友可享受福利。不用证明,说明是“架构师之路”的朋友,然后和丁奇说就好了。不想深入学习,只想技术咨询与技术探讨的朋友也非常欢迎。作为典型的技术人,欢迎沟通,特别是数据库学习的过程中有任何不理解的,随时探讨,也欢迎一起加裙学习。