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)

相关推荐

  • 存储过程中使用事务

    技术存储过程中使用事务 存储过程中使用事务GPS平台、网站建设、软件开发、系统运维,找森大网络科技!https://cnsendnet.taobao.com来自森大科技官方博客http://www.cn

    礼包 2021年12月10日
  • MySQL学习笔记:十、创建和管理表

    技术MySQL学习笔记:十、创建和管理表 MySQL学习笔记:十、创建和管理表1. 基础知识
    1.1 一条数据存储的过程
    存储数据是处理数据的第一步。只有正确地把数据存储起来,我们才能进行有效的处理和分

    礼包 2021年12月15日
  • 怎么用C语言与java实现kafka avro生产者和消费者

    技术怎么用C语言与java实现kafka avro生产者和消费者本篇内容介绍了“怎么用C语言与java实现kafka avro生产者和消费者”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带

    攻略 2021年11月15日
  • ADO.NET sql server存储过程怎么调用

    技术ADO.NET sql server存储过程怎么调用这篇文章主要介绍“ADO.NET sql server存储过程怎么调用”,在日常操作中,相信很多人在ADO.NET sql server存储过程怎么调用问题上存在疑

    攻略 2021年12月3日
  • ASP.NET MD5和SHA1的加密方法是什么

    技术ASP.NET MD5和SHA1的加密方法是什么这篇文章将为大家详细讲解有关ASP.NET MD5和SHA1的加密方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

    攻略 2021年10月28日
  • 桑巴CVE-2018-1050和CVE-2018-1057指的是什么?

    技术Samba CVE-2018-1050和CVE-2018-1057指的是什么这篇文章将为大家详细讲解有关Samba CVE-2018-1050和CVE-2018-1057指的是什么,文章内容质量较高,因此小编分享给大

    攻略 2021年12月20日