MySQL_查询语句的征途

sql是关系型数据库的统一标准, 那么在mysql里面,是如何实现sql语句的
执行 与返回的呢?

征途之始:

当客户端发起一条sql请求的时候. 我们sql语句的征途就正式开始了

征途之中:

对于mysql 服务器来说,接收到sql语句的时候, sql它还是一个数据包., 然后首先进入了Mysql中的自定义缓存区中, 发现当前缓存处于关闭状态.

解析室

于是带着sql数据包走到了 sql解析器之中, 交由解析器处理, 之间解析器一阵忙活,将sql从数据包状态恢复成 sql语句形式, 并且将其各个部位进行了检查.发现各个部位都健康,才让sql 走出解析室, 临走前解析室工作人员给了它一张检查报告"解析树"

预处理室

sql语句根据解析室的提示,走向下一个环节,这里叫做预处理器. 在预处理是中,它身上所带的变量 类似于 此次查询的表名称, 取的别名等,是否有错误的地方 ect...........

优化室

等预处理室检查完毕之后, 带着由被添加了几笔的报告"解析树" ,sql语句晃晃悠悠的来到了优化室,. 只感觉满身疲劳
优化室**工作人员**,看了眼 sql, sql一激灵,不敢犹豫连忙把 报告递上, **工作人员**不紧不慢的拿着报告, 然后开始分析
最后优化室**工作人员**开口道:"你的目的和情况我已经了解了, 现在有 两种方式, 第一中时间会很长,并不复杂, 第二种时间相对要少一点, 但是复杂程度也会上升".
"我选第二套方案." : sql如是说道, 其实sql已经不想在这里待下去了,它已经身心具惫.
"你很聪明,其实你没得选,这里不止你一个 sql ,所以 为了效率......": 工作人员一边说,一边把sql 提起来丢到一辆bus上,bus上除了它之外还有几个其他的陌生sql

查询引擎执行器:

当sql从bus上下来, 率先甩开其他sql, 走入了执行器中, 一进门看见类似银行柜台式的布局.

当下跟据优化室工作人员的嘱咐,跑到一个柜台面前坐下, 把报告"解析树", 和优化室工作人员的给的方案清单 一起交给执行器中的工作人员

工作人员一言不发的拿着执行方案等走开了, sql无奈,但是只能等待.

存储引擎:

在百般无聊中sql,听见边上的其他sql们在聊天, 于是宁心静听

sql_A: 这执行器的人去了哪里?怎么要这么久?

sql_B: 这个,我也不知道.但是我之前在bus上碰上一位老前辈,也许它知道

sql_C: …

这时sql_E 一脸倨傲的走进来: "他们这时到存储引擎里面拿数据去了."作为一个长连接,他当然有资本对这群短连接们 倨傲不已.

sql_B 一脸讨好的望向sql_E :“您知道的多,给我们讲讲呗”.

sql_C:对呀…

sql_A: …

sql_E 见气氛已经拿捏够了,也不卖关子 开口道:"这时因为执行器工作人员拿着我们每个人的方案去执行,

但是由于每个表的存储引擎不同,所以要根据不同的表,找到对应的存储引擎, 然后与操作系统交互, 从硬盘中拿出数据,给我们.

当然,硬盘有多慢你们也是知道的, 所以有些常用的数据会被留在缓存里面, 这不 从缓存中拿数据的工作人员已经回来了… "

sql着工作人员提着一个数据箱, 吃力的走过来, 然后把箱子丢给sql
“这是你的数据,拿了赶紧走, 出门右转, 有直接返回客户端的快车”.

sql开心极了,总算可以回去了.

归途

当sql拿着数据箱, 上了归途快车, 途经缓存室, 但是因为缓存室年久失修,所以就不停留,直接返回数据码头, 连带数据箱一起再次被压缩成数据包, 然后返回了 客户端

被压缩前,想着任务完成了,回去可以休息了
(它不知道的是, 作为一个短链接, 这将是它一生的终点)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章