MySQL中SQL语句执行流程是怎么样的

技术MySQL中SQL语句执行流程是怎么样的这篇文章主要介绍MySQL中SQL语句执行流程是怎么样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!总的来说,MySQL逻辑架构可以分为server层

本文主要介绍了MySQL中SQL语句的执行过程,非常详细,具有一定的参考价值。感兴趣的朋友一定要看!

一般来说,MySQL的逻辑架构可以分为两部分:服务器层和存储引擎层。本文记录了SQL语句的执行过程,主要发生在服务器层。

服务器层主要包括MySQL数据库的大部分功能。毕竟,大部分SQL执行都是在这个层实现的。这一层可以细分为:查询缓存(简称QC),解析器也可以称为分析器、预处理器(其实也可以属于分析器)、查询优化器等等。

存储引擎层的主要工作是存储和提取数据。存储引擎的主要类型有InnoDB、MyISAM、tokuDB等。它们的区别如下:

MySQL中SQL语句执行流程是怎么样的

在InnoDB和MyISAM这两个存储引擎中,InnoDB目前应用比较广泛,而MyISAM在8.0版本之后因为不支持事务和行锁而被完全放弃。从MySQL 5.5版本开始,InnoDB成为MySQL数据库的默认存储引擎。

先下结论吧。从客户端发起一条SQL语句后,它会转到MySQL数据库,然后转到查询缓存,再转到解析器和查询优化器,执行该语句的操作就完成了,结果会从存储引擎中检索出来并返回给客户端。

一、连接验证权限。

连接MySQL主要有两种方式,一种是从服务器本地发起,通过root用户使用socket登录,另一种是从客户端发起,属于远程连接。一般来说,远程连接到数据库通常需要几个输入元素:用户名、密码、端口号和IP地址。

首先要验证的是密码是否正确,当前用户是否有权限在当前IP登录等。登录完成后,登录用户将拥有当前分配给他的权限(添加、删除、更改和检查等)。).

第二,查询缓存。

上一步验证完成后,SQL执行会来到查询缓存,查看SQL语句是否已经执行,SQL执行结果是否缓存。如果是,结果将直接取出并返回给客户。如果没有,将进行下一次查询。

不可否认,如果我们每次都能在查询缓存中得到数据,这个效率是非常高的。但是对于实际应用中,并不建议使用查询缓存。,来说,因为查询缓存只能用于静态数据,不能用于动态数据,所以缓存好的数据是很有可能的,其中有些表已经更新了,一下子缓存的数据就被清空了。然而,在8.0版本之后,这个功能被完全放弃了。在8.0版本之前,一般建议关闭查询缓存功能。

第三,解析器。

如果第二步的查询缓存没有被获取或者命中,会先进行SQL解析,包括语法和语义解析:是查询还是更新,语句写得是否正确等。将生成一个解析树并提交到下一步。

第四,预处理器(事实上,它也可以包含在解析器中)

对第三步分析的解析树进行预处理,会比第三步做出更深刻的判断,比如表/列是否存在,会把解析树处理成更平衡的树结构。

动词(verb的缩写)查询优化器

预处理之后,我来到查询优化器,在这里我决定取哪个索引,将之前的平衡树转换成执行计划,并选择一个数据库认为最适合SQL执行的执行计划。

不及物动词SQL执行

从存储引擎层检索所需的数据并返回给客户端。此时,过程结束。

以上就是《MySQL中的SQL语句执行过程如何》一文的全部内容感谢阅读!希望分享的内容对大家有帮助,有更多相关知识。欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50262.html

(0)

相关推荐

  • Nginx $remoteaddr和$proxyaddxforwardedfor变量详解

    技术Nginx $remoteaddr和$proxyaddxforwardedfor变量详解 Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解$re

    礼包 2021年11月5日
  • 怎么进行Spring中的环绕增强

    技术怎么进行Spring中的环绕增强怎么进行Spring中的环绕增强,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通过前置增强和后置增强可以很方便的在目标方

    攻略 2021年12月2日
  • vscode怎样引入vuejs框架

    技术vscode怎样引入vuejs框架今天就跟大家聊聊有关vscode怎样引入vuejs框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。vscode引入vuej

    攻略 2021年11月2日
  • 如何通过Oracle来辅助MySQL数据问题的恢复

    技术如何通过Oracle来辅助MySQL数据问题的恢复这篇文章将为大家详细讲解有关如何通过Oracle来辅助MySQL数据问题的恢复,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。今天琢

    攻略 2021年10月26日
  • MySQL项目中常用的19条优化方法分别是什么

    技术MySQL项目中常用的19条优化方法分别是什么MySQL项目中常用的19条优化方法分别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获

    攻略 2021年11月29日
  • IdentityServer4迁移至3.x版本的注意问题有哪些

    技术IdentityServer4迁移至3.x版本的注意问题有哪些IdentityServer4迁移至3.x版本的注意问题有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的

    攻略 2021年11月23日