5大组件!了解MySQL查询语句执行过程
图1 所示,整张图由三部分组成,从上到下分别是客户端(紫色)、MySQL Server层(绿色)、MySQL存储引擎层(黄色)。
上面介绍了MySQL的组件结构,那么这里将其处理SQL语句的流程简单梳理一遍,之后再对每个组件逐一进行介绍。如图2 所示,在图1 的基础上加上了流程处理的编号,顺着编号来看看MySQL的各各组件是如何处理SQL查询请求的。 1. 连接器:当客户端登陆MySQL的时候,对身份认证和权限判断。 2. 查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除)。 3. 分析器: 假设在没有命中查询缓存的情况下,SQL请求就会来到分析器。分析器负责明确SQL要完成的功能,以及检查SQL的语法是否正确。 4. 优化器:为SQL提供优化执行的方案。 5. 执行器: 将语句分发到对应的存储引擎执行,并返回数据。 面通过一张大图将SQL执行流程进行了梳理,这里将对应的组件进行详细介绍。 连接器
客户端需要通过连接器访问MySQL Server,连接器主要负责身份认证和权限鉴别的工作。也就是负责用户登录数据库的相关认证操作,例如:校验账户密码,权限等。在用户名密码合法的前提下,会在权限表中查询用户对应的权限,并且将该权限分配给用户。在连接完成以后可以通过图3看到连接状态,可以通过命令行“show processlist”生成图3的查询结果。其中“Command”列返回的内容中,“Sleep”表示MySQL相同中对应一个空闲连接。而“Query”表示正在查询的连接。 (编辑:葫芦岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |