Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL 基本架构概览

MySQL 基本架构概览

作者头像
happyJared
发布于 2019-08-18 14:58:25
发布于 2019-08-18 14:58:25
8080
举报
文章被收录于专栏:happyJaredhappyJared

下图是 MySQL 的一个简要架构图,从下图可以清晰的看到 SQL 语句在 MySQL 内部是如何执行的。

先简单介绍下图涉及的一些组件的基本作用,后面还会详细介绍到这些组件的作用。

  • 连接器: 身份认证和权限相关(登录 MySQL 的时候)
  • 查询缓存: 执行查询语句的时候,会先查询缓存(MySQL8.0 版本后移除,因为这个功能不太实用)
  • 分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了,就是要先看你的 SQL 语句是要干嘛,再检查你的 SQL 语句语法是否正确
  • 优化器: 按照 MySQL 认为最优的方案去执行
  • 执行器: 执行语句,然后从存储引擎返回数据

MySQL 简要架构图

简单来说, MySQL 主要分为 Server 层和存储引擎层:

  • Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog 日志模块。
  • 存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有自有的日志模块 redolog 模块。

现在最常用的存储引擎是 InnoDB,它从 MySQL5.5.5 版本开始就被当做默认存储引擎。

Server 层基本组件介绍

1) 连接器

连接器主要和身份认证和权限相关的功能相关,就好比一个级别很高的门卫一样。

主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即时管理员修改了该用户的权限,该用户也是不受影响的。

2) 查询缓存(MySQL8.0 版本后移除)

查询缓存主要用来缓存所执行的 SELECT 语句以及该语句的结果集。

连接建立后,执行查询语句的时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。如果缓存 key 被命中,就会直接返回给客户端,如果没有命中,就会执行后续的操作,完成后也会把结果缓存起来,方便下一次调用。当然在真正执行缓存查询的时候还是会校验用户的权限,是否有该表的查询条件。

MySQL 查询不建议使用缓存,因为查询缓存失效在实际业务场景中可能会非常频繁,假如你对一个表更新的话,这个表上的所有的查询缓存都会被清空。对于不经常更新的数据来说,使用缓存还是可以的。

所以,一般在大多数情况下都是不推荐去使用查询缓存的。

MySQL8.0 版本后删除了缓存的功能,官方也是认为该功能在实际的应用场景比较少,所以干脆直接删掉了。

3) 分析器

MySQL 没有命中缓存,那么就会进入分析器,分析器主要是用来分析 SQL 语句是来干嘛的,分析器也会分为几步:

第一步,词法分析,一条 SQL 语句有多个字符串组成,首先要提取关键字,比如 select,提出查询的表,提出字段名,提出查询条件等等。做完这些操作后,就会进入第二步。

第二步,语法分析,主要就是判断你输入的 sql 是否正确,是否符合 MySQL 的语法。

完成这 2 步之后,MySQL 就准备开始执行了,但是如何执行,怎么执行是最好的结果呢?这个时候就需要优化器上场了。

4) 优化器

优化器的作用就是以它认为最优的执行方案去执行(但有时候可能也不是最优的),比如多个索引的时候该如何选择索引,多表查询的时候如何选择关联顺序等。

可以说,经过了优化器之后,这个语句具体该如何执行就已经定下来。

5) 执行器

当选择了执行方案后,MySQL 就准备开始执行了,首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果。

原文链接:一条SQL语句在MySQL中如何执行的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL(一)基本架构
连接到数据库,负责跟客户端建立连接、获取权限、维持和管理连接,命令通常是mysql -h$ip -P$port -u$user -p.
JNJYan
2019/03/04
8520
MySQL(一)基本架构
【MySQL 系列】MySQL 架构篇
Server 层:负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接池,执行器、优化器、解析器、预处理器、查询缓存等。另外,所有的内置函数(如日期、时间、数学和加密函数等)和所有跨存储引擎的功能(如存储过程、触发器、视图等)都在 Server 层实现;
栗筝i
2024/03/19
2.3K0
【MySQL 系列】MySQL 架构篇
MySQL基础架构之查询语句执行流程
而我们的连接器就是处理这个过程的,连接器的主要功能是负责跟客户端建立连接、获取权限、维持和管理连接,连接器在使用的过程中如果该用户的权限改变,是不会马上生效的,因为用户权限是在连接的时候读取的,只能重新连接才可以更新权限
星哥玩云
2022/08/17
1.2K0
MySQL基础架构之查询语句执行流程
一条查询SQL的执行过程
需要从数据库检索某些符合要求的数据,我们很容易写出 Select A B C FROM T WHERE ID = XX 这样的SQL,那么当我们向数据库发送这样一个请求时,数据库到底做了什么?
JAVA日知录
2020/05/29
1.4K0
一条查询SQL的执行过程
MySQL整体架构
Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等)。所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
张申傲
2020/09/03
7200
MySQL整体架构
MySQL:概述
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
栗筝i
2022/12/01
5530
MySQL:概述
MySQL笔记-基本架构
本文以及接下来的几篇 MySQL 笔记是本人在「极客时间」的专栏『MySQL实战45讲』和掘金小册「MySQL 是怎样运行的:从根儿上理解 MySQL」的学习笔记整理,并参考了一些其他材料加上个人的总结和思考。顺便推荐下这两个专栏。
WriteOnRead
2019/09/05
5550
MySQL笔记-基本架构
mysql学习笔记(一)sql语句执行
我们可以看到mysql分为Server层和存储引擎两部分。Server层包含了连接器、缓存、分析器、优化器、执行器,并且所有的存储过程、触发器等存储功能都在这一层实现。
虞大大
2020/11/12
2.1K0
mysql学习笔记(一)sql语句执行
MySQL提升笔记(1):MySQL逻辑架构
当客户端(应用)连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。
三分恶
2021/04/15
5270
MySQL提升笔记(1):MySQL逻辑架构
MySQL 基础架构
MySQL 架构分为两部分,server层 与 存储引擎。其中 server 包含 连接器、查询缓存、分析器、优化器、执行器。存储引擎架构模式为插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎,最常用的是 InnoDB。
星尘的一个朋友
2021/03/20
5620
京东面试:说说MySQL的架构体系
虽然他搞java开发好几年了,也一直使用的是MySQL数据库,但是面对这个问题依然是一脸懵逼,还以为面试官要问索引、慢查询、性能优化之类的(因为这些都是网上找点面试题背过了)。
田维常
2021/01/13
3800
京东面试:说说MySQL的架构体系
MySQL查询语句执行过程
众所周知在MySQL数据库应用中查询请求是使用最多的,假设我们输入代码段1 中的SQL,通过客户端请求MySQL服务器,会得到一个包含user的结果集。但是,其中MySQL的处理过程我们并不了解,那么下面就让我们一起看看在查询请求前后MySQL服务端发生了些什么吧。
Power
2025/03/01
3910
Mysql框架——Mysql系列(一)
各种语言都提供了连接mysql数据库的方法,比如jdbc、php、go等,可根据选择 的后端开发语言选择相应的方法或框架连接mysql
翰墨飘香
2023/06/11
6150
Mysql实战之一条SQL查询语句是如何执行的
作为一位开发人员,必然要和mysql打交道,平常肯定也写各种各样的sql语句,下面咱们先来看一个非常简单的sql语句
特特
2023/02/20
1.1K0
MySQL中一条更新的SQL如何执行
MySQL 之 -- 一条更新的 SQL 如何执行,一条更新的 SQL 语句如何执行执行流程一条 SQL 的执行流程如图所示:(图片来源于网络) 如图所示:MySQL 数据库主要分为两个层级:服务层和存储引擎层服务层:server 层包括连接器、查询缓存、分析器、优化器、执行器,包括大多数 MySQL 中的核心功能所有跨存储引擎的功能也在这一层实现,包括存储过程、触发器、视图等。 执行流程 一条 SQL 的执行流程如图所示:(图片来源于网络) 如图所示: MySQL 数据库主要分为两个层级:服务层和存
码农编程进阶笔记
2021/11/01
1.3K0
MySQL中一条更新的SQL如何执行
【SQL】Mysql中一条sql语句的执行过程
先来看下MySQL的体系结构,下图是在MySQL官方网站上扒下来的,所以有很高的权威性和准确性。
人不走空
2024/03/01
6160
【SQL】Mysql中一条sql语句的执行过程
MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的
执行如下SQL,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。
共饮一杯无
2022/11/28
1.2K0
MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的
Mysql-一条SQL查询的执行过程
作为CRUD工程师,了解Mysql中SQL查询的执行过程,对我们从查询优化,数据库配置,数据还原方面都有帮助。
一杯茶Ja
2024/10/01
1610
MySQL Select语句是怎么执行的?
最近在极客时间看丁奇大佬的《MySQL45讲》,真心觉得讲的不错,把其中获得的一些MySQL方向的经验整理整理分享给大家,有兴趣同学可以购买相关课程进行学习。
AsiaYe
2020/05/07
2.4K0
《MySQL》系列 - select 语句是怎么执行的?
mysql 作为一个关系型数据库,在国内使用应该是最广泛的。也许你司使用 Oracle、Pg 等等,但是大多数互联网公司,比如我司使用得最多的还是 Mysql,重要性不言而喻。
JavaFish
2021/03/23
2.3K0
相关推荐
MySQL(一)基本架构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档