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)

相关推荐

  • java如何使用java swing(swing 怎么启动一个后台线程)

    技术如何解析Swing线程的内容这篇文章将为大家详细讲解有关如何解析Swing线程的内容,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一. 事件1.事件来源:本地系统,应

    攻略 2021年12月18日
  • 怎么实现提示用户退出程序

    技术怎么实现提示用户退出程序这篇文章主要讲解了“怎么实现提示用户退出程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现提示用户退出程序”吧!青铜级别# 青铜 im

    攻略 2021年10月22日
  • 使用Vue写一个登录页面

    技术使用Vue写一个登录页面 使用Vue写一个登录页面使用Vue写一个登录页面上一博客讲到构建了一个vue项目,现在在那个项目之上实现一个登录页面。
    1.构建项目的目录2.App.vuetemplate

    礼包 2021年10月27日
  • 如何在word,如何在Word文档中画线

    技术如何在word,如何在Word文档中画线方法一:插入直线形状如何在word。1、首先打开Word文档,选择插入-形状,然后选择线条中的直线,也可以选择其它各种线型。2、在Word中点击一点,按住鼠标向右托就可以画出直

    生活 2021年10月20日
  • 如何解析Perl命令行程序用法

    技术如何解析Perl命令行程序用法如何解析Perl命令行程序用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Perl命令行程序命令行程序下面的几个Pe

    攻略 2021年11月12日
  • Python模块怎么导入

    技术Python模块怎么导入这篇文章主要讲解了“Python模块怎么导入”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python模块怎么导入”吧!模块的定义:在pyth

    攻略 2021年11月25日