美文网首页
02 为了执行SQL语句,你知道MySQL用了什么样的架构设计吗

02 为了执行SQL语句,你知道MySQL用了什么样的架构设计吗

作者: 呢看了看 | 来源:发表于2020-11-26 15:17 被阅读0次

【1】一个不变的原则:网络连接必须让线程来处理。网络连接必须得分配一个线程去进行处理,由一个线程来监听请求以及读取请求数据,比如从网络连接中读取和解析出来一条我们系统发送过去的SQL语句。

【2】当MySQL内部的工作线程从一个网络连接中读取出来一个SQL语句之后,如何来执行SQL语句呢?MySQL内部提供了一个组件,就是SQL接口,他是一套执行SQL语句的接口,专门用于执行我们发送给MySQL的那些增删改查的SQL语句。因此MySQL的工作线程接收到SQL语句之后,就会     转交给SQL接口去执行。

【3】查询解析器,让MySQL能看懂SQL语句。所谓的SQL解析,就是按照既定的SQL语法,按照SQL语法规则编写的SQL语句进行解析,然后理解这个SQL语句要干什么事情。

【4】查询优化器:选择最优的查询路径。当我们通过解析器理解了SQL语句要干什么之后,就会找查询优化器来选择一个最优的查询路径。查询优化器他会针对你编写的几十行、甚至上百行的复杂语句生成查询路径树,然后从里面选择一条最优的查询路径出来。

【5】调用存储引擎接口,真正执行SQL语句。将查询优化器选择的最优查询路径,交给底层的存储引擎去真正的执行。真正执行SQL语句的时候,要不然是更新数据,要不然是查询数据,MySQL中的数据有的存放在内存里,有的存放在磁盘文件里。存储引擎其实就是执行SQL语句的,他会按照一定的步骤去查询内存缓存数据,更新磁盘数据,查询磁盘数据,等等,执行诸如此类的一系列的操作。存储引擎有常见的InnoDB、MyISAM、Memory等等。现在MySQL一般都是使用InnoDB存储引擎的。

为什么需要存储引擎?

    我们已经知道一个SQL语句要如何执行了,但是我们现在怎么知道哪些数据在内存里?哪些数据在磁盘里?我们执行的时候是更新内存的数据?还是更新磁盘的数据?我们如果更新磁盘的数据,是先查询哪个磁盘文件,再更新哪个磁盘文件?

    这个时候就需要存储引擎了,存储引擎其实就是执行sql语句的

【6】执行器:存储引擎可以帮助我们去访问内存以及磁盘上的数据,那么是谁来调用存储引擎的接口呢? 执行器会根据优化器选择的执行方案,去调用存储引擎的接口按照一定的顺序和步骤,就把SQL语句的逻辑给执行了。

根据执行计划调用存储引擎接口。执行器会根据我们的优化器生成的一套执行计划,然后不停的调用存储引擎的各种接口去完成SQL语句的执行计划。

相关文章

  • 02 为了执行SQL语句,你知道MySQL用了什么样的架构设计吗

    【1】一个不变的原则:网络连接必须让线程来处理。网络连接必须得分配一个线程去进行处理,由一个线程来监听请求以及读取...

  • MySQL Explain

    mysql执行计划 在日常工作中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句...

  • mysql执行计划

    mysql执行计划 ​ 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行...

  • mysql执行计划

    mysql执行计划 ​ 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行...

  • mysql执行计划

    mysql执行计划 ​ 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行...

  • 01 | 基础架构:一条SQL查询语句是如何执行的?

    01 | 基础架构:一条SQL查询语句是如何执行的? 对于该sql的执行架构分析 MySQL基础架构 大体分为Se...

  • mysql调优-执行计划

    mysql执行计划 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQ...

  • Mysql实战45讲

    01 | 基础架构:一条SQL查询语句是如何执行的? MySql 逻辑架构图 执行 create table 建表...

  • 京东资深架构师深度解析《 MySQL 实战 》

    基础架构:一条 SQL 查询语句是如何执行的? MySQL 的基本架构示意图: MySQL 可以分为 Server...

  • MySQL实战 -1 基本架构:

    1、基本架构:一条SQL语句查询语句是如何执行? 下面介绍一下MySQL的基本架构示意图。 MySQL 可以分为S...

网友评论

      本文标题:02 为了执行SQL语句,你知道MySQL用了什么样的架构设计吗

      本文链接:https://www.haomeiwen.com/subject/roomxktx.html