MySql的执行原理,通俗易懂

lxf2023-05-13 01:03:01

执行一个mysql语句,大概流程如下图所示:

MySql的执行原理,通俗易懂

当在客户端输入账号密码后,执行流程如上图所示,下面分别叙述:

1、连接器

连接器是mysql 服务器的第一个模块,当使用mysql客户端链接mysql服务器时,连接器就处理连接请求。

客户端与服务端经过TCP连接后,连接器就开始认证身份。

密码验证正确后,读取用户权限

连接完成后,mysql8.0以前是走查询缓存逻辑的。如果有缓存结果,就不会往下流程走,返回缓存结果给客户端;如果没有缓存,那么就会走分析流程。

mysql8.0将查询缓存的模块去掉了

2、分析器

首先进行词法分析,然后进行语法分析。

1)词法分析

例如:select * from table1 where id = 111

识别出table1,然后识别出where条件语句,然后识别出select逻辑。

2)语法分析

语法分析主要是sql语句是否符合规则。

3、优化器

同一条sql语句可能有多种执行方案,需要优化器选择合适的执行方案。

4、执行器

执行器主要的功能就是执行sql语句,执行前先判断要查询的表是不是有查询权限,如果没有权限就直接拒绝,如果有权限就会执行下面的流程。

以InnoDB引擎为例:

  • 调用InnoDB引擎接口获取表的首行,判断id的值是不是111,如果是就放在结果集中,如果不是就跳过。
  • 引擎接口获取表下一行,重复相同的执行逻辑,直到表的最后一行。
  • 执行器将上面获取的符合要求的行组成结果集返回给客户端。

5、存储引擎

存储引擎负责数据的存储和获取。

本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!