mysql架构查询执行流程(图解+描述)

目录

mysql架构查询执行流程

图解

描述 


mysql架构查询执行流程

图解

描述 

用户连接到数据库后,由连接器处理

  • 连接器负责跟客户端建立连接、获取权限、维持和管理连接

客户端发送一条查询给服务器

  • 服务器先检查查询缓存,如果命中缓存,则立即返回存储在缓存中的结果 ; 否则进入下一阶段

服务器进行SQL解析、预处理得到解析树

  • 分析器主要有两步: 词法分析和语法分析 ; 预处理器根据mysql规则检查解析树是否合法
  • 语法解析器和预处理:mysql通过关键字将sql语句进行解析,并生成一颗对应的 “解析树”

由优化器生成对应的执行计划(这个过程中任何语法等错误都可能终止查询)

  • 优化器是在表里面有多个索引的时候,决定使用哪个索引 / 在一个语句有多表关联的时候,决定各个表的连接顺序

mysql通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句

  • 开始执行的时候,要先判断一下你对这个表有没有执行查询的权限
  • 如果没有,就会返回没有权限的错误
  • 如果有权限,mysql根据优化器生成的执行计划,调用存储引擎的 API 来执行查询

最后将结果返回给客户端,并且会将结果存放到查询缓存中

参考 -- MySQL 查询执行的过程 - Java程序员进阶 - 博客园

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

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

相关文章

【QT问题】Ubantu环境下解决已经下载好的qt怎么添加或卸载其他组件

1、找到自己qt的安装目录->双击打开MaintenanceTool.exe 2、点击next进去,此时需要登录qt账户(如果没有去官网注册一个,很快且免费) 我这里随便填的账号,如果是正确的下面next就能够点击。 这里随便提一下&#xf…

CS50 使用 Python 进行人工智能简介-“骑士与流氓”谜题

如何使用逻辑推理来解决“骑士与骗子”(Knights and Knaves)类型的逻辑难题。具体来说,任务是根据每个角色的陈述推理出他们是“骑士”还是“骗子”。 任务背景: 骑士与骗子问题:每个角色要么是骑士,要么是…

每日学习Java之一万个为什么?[MySQL面试篇]

分析SQL语句执行流程中遇到的问题 前言1 MySQL是怎么在一台服务器上启动的2 MySQL主库和从库是同时启动保持Alive的吗?3 如果不是主从怎么在启动的时候保证数据一致性4 ACID原则在MySQL上的体现5 数据在MySQL是通过什么DTO实现的6 客户端怎么与MySQL Server建立连接…

详细解析d3dx9_27.dll丢失怎么办?如何快速修复d3dx9_27.dll

运行程序时提示“d3dx9_27.dll文件缺失”,通常由DirectX组件损坏或文件丢失引起。此问题可通过系统化修复方法解决,无需重装系统或软件。下文将详细说明具体步骤及注意事项。 一.d3dx9_27.dll缺失问题的本质解析 当系统提示“d3dx9_27.dll丢失”时&…

IP----访问服务器流程

这只是IP的其中一块内容-访问服务器流程,IP还有更多内容可以查看IP专栏,前一段学习内容为IA内容,还有更多内容可以查看IA专栏,可通过以下路径查看IA-----配置NAT-CSDN博客CSDN,欢迎指正 1.访问服务器流程 1.分层 1.更利于标准化…

Linux报 “device or resource busy” 异常的原因以及解决办法

首先,Linux报"device or resource busy"的原因是因为某个进程正在占用该设备或资源,导致其他进程无法访问该设备或资源。 解决该问题的办法有以下几种: 查找占用该设备或资源的进程,然后将其停止或结束。可以使用以下…

和鲸科技推出人工智能通识课程解决方案,助力AI人才培养

2025年2月,教育部副部长吴岩应港澳特区政府邀请,率团赴港澳宣讲《教育强国建设规划纲要 (2024—2035 年)》。在港澳期间,吴岩阐释了教育强国目标的任务,并与特区政府官员交流推进人工智能人才培养的办法。这一系列行动体现出人工智…

java springboot 中调用 C++ 方法

以下是一个完整的 Spring Boot 调用 C 方法的 Demo,采用 JNI (Java Native Interface) 方式实现,包含详细步骤说明: 1. 项目结构 demo-project/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/…

JSX基础 —— 识别JS表达式

在JSX中可以通过 大括号语法 { } 识别JS中的表达式,比如常见的变量、函数调用、方法调用等等 1、使用引号传递字符串 2、使用JavaScript变量 3、函数调用和方法调用 (函数和方法本质没有区别,这里默认: 函数是自己定义的,方法是…

git从零学起

从事了多年java开发,一直在用svn进行版本控制,如今更换了公司,使用的是git进行版本控制,所以打算记录一下git学习的点滴,和大家一起分享。 百度百科: Git(读音为/gɪt/)是一个开源…

关于对async和await的初步理解

async 包裹着的函数中进程是堵塞的 ,是同步化的, await等待的是个promise对象,否则"await" 对此表达式的类型没有影响 例1 async getDataDD(){await this.fun1()await this.fun2()// await Promise.all([this.fun1(),this.fun…

MySQL—Keepalived+MySQL双主复制实现MySQL高可用

Keepalived原理: Keepalived 的原理主要基于虚拟路由冗余协议(VRRP,Virtual Router Redundancy Protocol)、健康检查机制和负载均衡机制,以下为你详细介绍: VRRP 协议实现高可用:VRRP 是 Keep…

SpringBoot AOP 源码解析

文章目录 一、AOP 代码示例1. 准备注解和目标类2. 定义 Aspect3. 结论 二、源码1. AOP 实现核心类2. 代理类的创建流程2.1 核心类 AbstractAutoProxyCreator2.2 AbstractAutoProxyCreator#postProcessBeforeInstantiation2.3 AspectJAwareAdvisorAutoProxyCreator#shouldSkip2.…

Linux:Shell环境变量与命令行参数

目录 Shell的变量功能 什么是变量 变数的可变性与方便性 影响bash环境操作的变量 脚本程序设计(shell script)的好帮手 变量的使用:echo 变量的使用:HOME 环境变量相关命令 获取环境变量 环境变量和本地变量 命令行…

MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 5

第05章_存储引擎 为了管理方便,人们把连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能划分为MySQLserver的功能,把真实存取数据的功能划分为存储引擎的功能。所t以在MySQLserver完成了查询优化后,只需按照生成的执行…

JAVA面试_进阶部分_23种设计模式总结

1. 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这 个实例。 (1)懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载…

渗透测试(WAF过滤information_schema库的绕过,sqllib-46关,海洋cms9版本的注入)

1.sqlin-lib 46关 打开网站配置文件发现 此网站的对ID进行了排序,我们可以知道,order by接不了union ,那我们可以通过测试sort,rond等函数,观察网页的反馈来判断我们的盲注是否正确 我们发现 当参数有sort来排序时&…

AORO M6北斗短报文终端:将“太空黑科技”转化为安全保障

在卫星导航领域,北斗系统作为我国自主研发的全球卫星导航系统,正以其独特的短报文通信功能引发全球范围内的广泛关注。这一突破性技术不仅使北斗系统在全球四大导航系统中独树一帜,具备了双向通信能力,更通过遨游通讯推出的AORO M…

ARCGIS国土超级工具集1.4更新说明

ARCGIS国土超级工具集V1.4版本,功能已增加至54 个。本次更新在V1.3版本的基础上,新增了“拓扑问题修复工具”并同时调整了数据处理工具栏的布局、工具操作界面的选择图层下拉框新增可选择位于图层组内的要素图层功能、数据保存路径新增了可选择数据库内的…

Element Plus中el-select选择器的下拉选项列表的样式设置

el-select选择器,默认样式效果: 通过 * { margin: 0; padding: 0; } 去掉内外边距后的样式效果(样式变丑了): 通过 popper-class 自定义类名修改下拉选项列表样式 el-select 标签设置 popper-class"custom-se…