MySQL中查询语句的执行流程

文章目录

  • 前言
  • 流程图
  • 概述
  • 最后

前言

你好,我是醉墨居士,今天我们一起探讨一下执行一条查询的SQL语句在MySQL内部都发生了什么,让你对MySQL内部的架构具备一个宏观上的了解

流程图

在这里插入图片描述

概述

对于查询语句的SQL的执行流程,主要可以分为5个大步骤

  1. 客户端通过与MySQL服务端维持长连接,提交一条查询的SQL语句
  2. MySQL服务端接收到后首先查询缓存,如果缓存中存在记录则直接返回结果
  3. 缓存中不存在记录的话,将SQL语句交给解析器,经过解析内部的词法解析、语法解析最终生成抽象语法树(AST)
  4. 预处理器对语法树进行将select * from xxx中的 * 转换成对应的列名,将别名转换成真实指代的名称等等
  5. 优化器对SQL的执行进行优化,例如检查SQL的执行能否利用索引进行加速,最终生成一个查询代价最小的执行计划
  6. 执行器执行执行计划,从存储引擎读取数据,最终返回结果,并进行缓存

最后

好的,朋友们,我们目前对MySQL中查询语句的执行有了一个总体的认知,后续我还会发布更多关于MySQL原理的博客,希望大家多多支持,多多捧场😊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】<互斥量>解决<抢票问题>——【多线程竞争问题】

前言 大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

[Windows]文件搜索利器Everything(附zip)

前言 写代码过程中,老大突然发一条信息 老大:这周周报发一下。 我:好的。 然后我就 显示桌面打开-我的电脑找到E盘,找到周报文件夹寻找到所有周报中今天的周报复制发送 当我用上Everything之后 打开,输入周报copy发…

Kafka-kraft模式部署与使用

学习Kafka-Kraft部署使用背景和意义 目前磐基平台已经提供kafka3.5.1版本能力,新版本对kakfa元数据管理、注册协调架构已经发生了很大的变化。据了解目前已有租户在使用。对于kafka新版本新特性来讲,广大磐基运维不十分了解和熟练,特别是在维…

尚硅谷rabbitmq2024 集群篇仲裁队列 第52节 答疑

我们希望创建一个队列,队列分布在各个节点上,仲裁队列很好的解决了这个问题.那么在仲裁队列之前,创建一个队列,队列不是分布在各个节点上的吗? 在RabbitMQ中,默认情况下创建的队列是“普通队列”&#xff0…

Oracle T5-2 ILOM配置

ILOM管理口ip地址配置 连接控制器(SP)串口(RJ45),进行系统设置 (缺省:9600,8-n-1,root/changeme) …………………. ORACLESP-AK02566506 login: root Password: Detecting screen size; pl…

EditText的inputType 详解

EditText的inputType属性用于指定EditText接受的输入类型,它可以通过XML布局文件或代码来设置。‌ 该属性决定了EditText在键盘弹出时的样式和功能,例如是否显示数字键盘、是否允许输入特殊字符等。通过设置不同的InputType,可以限制用户输入…

Axure重要元件三——中继器

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 本节课:中继器 课程内容:认识中继器、中继器基本操作、中继器案例 应用场景:高级表单交互 一、认识中继器 我们不从理论视角去展示…

MySQL InnoDB Buffer Pool空间不足导致查询变慢

问题现象 前端调用后台服务查询接口响应很慢,查看 MySQL 的日志,有如下日志: [Warning] InnoDB: Difficult to find free blocks in the buffer pool (13430 search iterations)! 13430 failed attempts to flush a page! Consider increas…

Android Framework AMS(05)startActivity分析-2(ActivityThread启动到Activity拉起)

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读AMS通过startActivity启动Activity的整个流程的整个流程的第二阶段:从ActivityThread启动到Activity拉起。 第一阶段文…

【Vue】Vue(八)Vue3.0 使用ref 和 reactive创建响应式数据

ref 创建:基本类型的响应式数据 **作用:**定义响应式变量。语法:let xxx ref(初始值)。**返回值:**一个RefImpl的实例对象,简称ref对象或ref,ref对象的value属性是响应式的。注意点: JS中操作…

《拿下奇怪的前端报错》:1比特丢失导致的音视频播放时长无限增长-浅析http分片传输核心和一个坑点

问题背景 在一个使用MongoDB GridFS实现文件存储和分片读取的项目中,同事遇到了一个令人困惑的问题:音频文件总是丢失最后几秒,视频文件也出现类似情况。更奇怪的是,播放器显示的总时长为无限大。这个问题困扰了团队成员几天&…

Java项目-基于Springboot的应急救援物资管理系统项目(源码+说明).zip

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

工业自动化为什么依赖光耦隔离器 --- 腾恩科技

光耦合器隔离器在工业自动化中必不可少,可确保信号传输,同时保护敏感电子设备和人员免受高压影响。选择合适的光耦合器隔离器取决于对操作环境和隔离要求的了解。本文将重点介绍在为工业应用选择光耦合器隔离器时需要考虑的关键因素。 光耦合器隔离器在工…

上传图片到github上,生成链接在Typora中使用(解决Typora的md文件在分享时的丢失问题)

上传图片到github上,生成链接在Typora中使用(解决Typora的md文件在分享时的丢失问题) 在GitHub上从操作 创建一个 GitHub 仓库: 登录 GitHub,创建一个新的仓库来存储图片。 生成 GitHub 令牌: 在 GitHub 中,前往“Settings” > “Developer settings” > “Pers…

AUTOSAR_EXP_ARAComAPI的5章笔记(12)

☞返回总目录 5.4.6 方法 骨架侧的服务方法是抽象方法,必须由继承骨架的服务实现子类进行重写。让我们来看一下我们服务示例中的 Adjust 方法: /*** 对于所有输出和非空返回参数* 生成一个包含非空返回值和/或输出参数的封装结构。*/ struct AdjustOu…

docker网络连接模式详解

五种模式对比 bridge/桥接网络:适用于大多数单主机场景,提供基本的网络隔离和通信。 HOST/主机网络:适用于需要高性能和直接网络访问的场景。 NONE/无网络:适用于不需要网络访问的容器,增加安全性。 container/容器网…

UE4 材质学习笔记08(雨滴流淌着色器/雨水涟漪着色器)

一.雨滴流淌着色器 法线贴图在红色通道和绿色通道上,那是法线的X轴和Y轴,在蓝色通道中 我有个用于雨滴流淌的蒙版,在Alpha通道中,有个时间偏移蒙版。这些贴图都是可以在PS上制作做来的,雨滴流淌图可以直接用笔刷画出来…

永恒之蓝漏洞

MS17-010是微软于2017年3月发布的一个安全补丁,旨在修复Windows操作系统中的一个严重漏洞,该漏洞被称为“永恒之蓝”(EternalBlue)。这个漏洞影响了Windows的Server Message Block(SMB)协议,允许…

Java集合剖析3】ArrayList

目录 拓展 1. 在面试时如何讲解一个集合的底层? 2. IDEA如何查看底层源码? 一、ArrayList底层数据结构 二、插入方法的具体实现 三、ArrayList底层原理总结 拓展 1. 在面试时如何讲解一个集合的底层? 底层的数据结构。插入方法的具体实现。…

vue综合指南(六)

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:vue综合指南 目录 101、Vue 框架怎么实现对象和数组的监听? 102、Proxy 与 Object.d…