sql语句的执行流程
# sql语句的执行流程
版本:Mysql 5.7,问题:通过普通的sql语句执行的分析,了解MySQL的执行流程。
# 一、步骤
# 1.1 总体流程
sql语句的执行要经过server层和引擎层。server负责接受命令,分析语法,选择索引,调用引擎层接口;引擎层提供各种接口,不同的引擎接口是一样的,是可以互换的。 server层包括连接器、分析器、优化器和执行器。 引擎层包括常见的各类引擎,有InnoDB、MyISAM和Memory等,其中5.5以上默认的是InnoDB,5.5以下的是MyISAM
# 1.2 连接器
管理用户连接到数据库的各种能力。包括客户端建立连接、获取权限、维持和管理连接 连接成功后,用户的权限在这个连接中总是一直存在的。即使管理员这个途中修改了用户的权限,修改完成后,只有再新建的连接才会使用新的权限设置。
# 1.3 分析器
分析器会针对输入的命令先做词法分析,分析该语句的要执行什么操作,主要包括分析关键字,分析表名和字段名。 在词法分析之后,还会进行语法分析,主要分析书写的mysql语句是否有语法错误。错误提示"You have an error in your SQL syntax"就是语法分析的结果
# 1.4 优化器
经过了分析器,MySQL 就知道你要做什么了。接下来就是优化器对具体的执行过程进行调控。 优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一有多表连接的内容里面,选择用哪种方式开始连接。
# 1.5 执行器
MySQL通过分析器知道了该做什么,通过优化器知道了该怎么做,接下来就到了执行器,执行器根据表的格式,调用不同引擎的接口,然后处理各种接口返回的数据。 在具体的执行的时候,首先要判断是否对执行的表有相关的权限,如果有权限就执行,没有权限就提示 执行的时候,如果没有索引,就先取第一行,判断条件是否成立,成立了,把数据取出来,然后再执行下一行,一直执行完毕。