IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL语句在MySQL中的执行流程 -> 正文阅读

[大数据]SQL语句在MySQL中的执行流程


title: “SQL语句在MySQL中的执行流程”
date: 2022-02-25T15:28:58+08:00
draft: false


1 基本架构概述

https://img-blog.csdnimg.cn/311f0d0b4e094ce38436b88815fcc82e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiA5bm05pil5Y-I5p2l,size_20,color_FFFFFF,t_70,g_se,x_16SQL语句在MySQL中的执行流程

  • MySQL 可以简单分为两层,Server 层和存储引擎层:

  • Server层:

    • 主要包括连接器、查询缓存、分析器、优化器和执行器等,
    • 还有一些跨存储引擎的功能也在这里,如:存储过程、视图、函数和通用日志模块binglog等。
  • 存储引擎;

    • 主要负责数据的读写,它提供了读写IO,
    • 采用了可替换的插件式架构,支持 InnoDB(有自有的redolog日志模块,默认引擎)、MyISAM、Memory等
  • 查询流程:

    1. 客户端请求
    2. 连接器(验证用户身份,给予权限)
    3. 查询缓存(存在缓存则直接返回,不存在则执行后续操作)
    4. 分析器(对SQL语句进行词法分析和语法分析)
    5. 优化器(主要对执行的SQL优化选择最优的执行方案)
    6. 执行期(执行时先验证有无权限,有则使用指定引擎提供的接口)
    7. 存储引擎(获取返回的数据,如果开启查询缓存则会缓存查询结果)

2 组件介绍

2.1 连接器

连接器主要和身份认证和权限相关的功能相关,主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作。

值得注意的是,身份认证和权限校验这些操作,连接器会去数据库权限表中查询该用户的所有权限,之后只要连接不中断,后面的所有SQL语句都会以连接中的权限去执行,及时我们修改了权限。

2.2 查询缓存

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

连接建立后,执行查询语句时,会先去查询缓存,MySQL会先校验这个SQL是否执行过,以 Key-Value 的形式缓存在内存中。如果 Key 被命中,则直接返回给客户端,如果没有命中,则执行后续操作后把结果缓存起来。

MySQL 8.0 版本后删除了这个缓存功能,可能是因为查询缓存失效在实际业务场景中可能会非常频繁,例如我们对一个表执行更新操作,那么这个表的所有查询缓存都会失效。

2.3 分析器

分析器主要用来分析 SQL 语句是来干嘛的,它有这些步骤:

  1. 词法分析:提取一条SQL语句中的关键子,如:SELECT、查询的表、字段名、查询条件;
  2. 语法分析:判断SQL语句是否正确,符合语法。

2.4 优化器

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

2.5 执行器

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:37:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:26:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码