一条SQL查询语句是如何执行的?
最近在思考工作三年了,我应该如何精进自己的技术。也是应于领导的任务,也才想起来,自己好久没有给自己安排一个系统的学习规划了。想起了自己在极客时间里的课程《MySQL实战45讲》还一直囤着没有开始研读。三年来,其实也有反反复复的在学习MySQL的一些知识点,但都太零散了,我们在一个学习快餐文化的年代里,读别人的博客,知识体系的获取建立在别人的总结之上,不愿意沉下心来自己去研究原理与源码(小声bb:我可能是自己的技术不够硬,看不懂啊),没有一个系统的知识体系。
给自己定了一个小目标,在今年结束前,系统的学习MySql,每周定期安排个人时间进行学习,参考极客时间课程《MySQL实战45讲》与书籍《高性能MySQL》,并且定期的输出一些自己的产出。行动 + 坚持 ,2021 加油干吧~
数据库实际上也是一个应用系统
一、MySQL的组成
MySQL 是由 Server 层和存储引擎层两部分组成的。
可以进一步细分为:
- 连接器 – 连接器负责跟客户端建立连接、获取权限、维持和管理连接
- 查询缓存 – 性能优化的一个模块
- 分析器 – “词法分析”和“语法分析” ,让MySQL 就知道客户端提交的SQL语句要做什么了
- 优化器 – 在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
- 执行器 – 与存储引擎交换,调用引擎的接口开始执行语句
- 存储引擎 – 负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎
二、一条SQL查询语句的执行
2.1 图解(引用于《MySQL实战45讲》)
2.2 执行流程详细图解(自己的梳理)
2.3 一个访客的故事(类比于生活)
在极客时间课程的评论里看见了一个很有趣的类比,向这位同学(ID:深藏Blue)致敬。
把SQL的查询语句,比喻为为们要去一栋大楼里找两名叫张三和李四的人:
连接器:门卫,想进请出示准入凭证(工牌、邀请证明一类)。“你好,你是普通员工,只能进入办公大厅,不能到高管区域”此为权限查询。
分析器:“您需要在公司里面找一张头发是黑色的桌子?桌子没有头发啊!臣妾做不到”
优化器:“要我在A B两个办公室找张三和李四啊?那我应该先去B办公室找李四,然后请李四帮我去A办公室找张三,因为B办公室比较近且李四知道张三具体工位在哪”
执行器:“好了,找人的计划方案定了,开始行动吧,走你!糟糕,刚门卫大哥说了,我没有权限进B办公室”
----------------------------------- 这是一个小尾巴哦~~~~
参考文章:极客时间《MySQL实战45讲》