MYSQL--一条SQL执行的流程,分析MYSQL的架构
文章目录
- 第一步建立连接
- 第二部解析 SQL
- 第三步执行 sql
- 预处理
- 优化阶段
- 执行阶段
- 索引下推
执行一条select 语句中间会发生什么? 这个是对 mysql 架构的深入理解。
select * from product where id = 1;
对于mysql的架构分层:

mysql 架构分成了 Server 层和存储引擎层:
Sever 层 负责建立连接、分析和执行 sql 语句。 一些核心功能模块比如解析器生成语法树,预处理器、优化器、执行器这些。
在存储引擎层:支持 InnoDB 存储引擎。底层使用的是 B+树。mysql5.5 之后 InnoDb 成为默认的存储引擎了。
第一步建立连接
通过连接器和 mysql 的客户端建立连接,连接的过程需要使用 TCP 三次握手。
msyql -u root -p在输入对应的密码就登录成功了
查看 mysql 当前有多少连接数量:
show processlist;
执行了一次查询就算建立连接了,连接默认是八个小时,超过这个数量就会自动的断开。

连接数太多了

删除了查询缓存,在 mysql8 之前有缓存的内容。

第二部解析 SQL
解析器会做两件事情,第一个是词法分析:
mysql 会根据你输入的字符串识别出关键字出来,比如 select username from userinfo 会解析出来 4 个 token,有两个 key word,是 select 和 from。
第二个进行语法的分析:
根据词法分析的结果,语法解析器根据语法规则判断输入的 sql 是否满足 MYSQL 的语法。没有问题就构建出来 sql 语法树。
构成一个这样的语法树。

https://blog.csdn.net/zhang24360/article/details/128963299 语法树的详细内容
第三步执行 sql
分为三个阶段 预处理 优化阶段 执行阶段
预处理
预处理阶段:
检查 sql 查询语句中的表或者字段是否存在。
将 select * 中的*符号扩展为表上的所有列。
优化阶段
优化阶段:
需要确定一个执行计划,比如现在有多个索引到底用哪一个索引。确定 sql 查询语句的执行方案。
想要知道选择哪个索引可以在查询语句之前加一个 explain 命令,会展示书 sql 语句的查询计划。

查询主键索引 B+树的成本会高于查询二级索引 B+树的成本,优化器会基于查询成本考虑选择代价最小的普通索引。
执行阶段
执行阶段:
这个时候 server 层要去和存储引擎层进行交互了:
比如有 全表扫描、主键索引查询、索引下推。
索引下推



索引下推是减少二级索引的回表查询操作,提高查询的效率。将 Server 层做的一些事情交给了存储引擎层去做。
查询 age>20 的时候遇到>联合索引就会失效了,这个时候就需要回表查询 reward 是否是等于 1000 的。
这样效率太慢了,直接在存储引擎层去判断 reward 是否等于 1000. 如果成立在回表给 Server 层操作。

相关文章:
MYSQL--一条SQL执行的流程,分析MYSQL的架构
文章目录 第一步建立连接第二部解析 SQL第三步执行 sql预处理优化阶段执行阶段索引下推 执行一条select 语句中间会发生什么? 这个是对 mysql 架构的深入理解。 select * from product where id 1;对于mysql的架构分层: mysql 架构分成了 Server 层和存储引擎层&a…...
C++解决输入空格字符串的三种方法
一.gets和fgets char * gets ( char * str ); char * fgets ( char * str, int num, FILE * stream ); 1. gets 是从第⼀个字符开始读取,⼀直读取到 \n 停⽌,但是不会读取 \n ,也就是读取到的内容 中没有包含 \n ,但是会在读取到的内…...
多模态论文笔记——NaViT
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文NaViT(Native Resolution ViT),将来自不同图像的多个patches打包成一个单一序列——称为Patch n’ Pack—…...
云中漫步:精工细作铸就免费公益刷步平台
云中漫步,历经三年深度研发与优化,平台以高稳定性、零成本及公益属性为核心特色,依托前沿技术手段与多重安全防护机制,确保用户步数数据的精准修改与隐私安全。我们致力于提供无缝流畅的用户体验,让每一次步数更新都轻…...
neo4j入门
文章目录 neo4j版本说明部署安装Mac部署docker部署 neo4j web工具使用数据结构图数据库VS关系数据库 neo4j neo4j官网Neo4j是用ava实现的开源NoSQL图数据库。Neo4作为图数据库中的代表产品,已经在众多的行业项目中进行了应用,如:网络管理&am…...
Leetcode::81. 搜索旋转排序数组 II
81. 搜索旋转排序数组 II 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nu…...
【ts + java】古玩系统开发总结
src别名的配置 开发中文件和文件的关系会比较复杂,我们需要给src文件夹一个别名吧 vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue import path from path// https://vitejs.dev/config/ export default defineConfig({pl…...
【自学笔记】Web前端的重点知识点-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Web前端知识点一、HTML基础二、CSS样式三、JavaScript基础四、前端框架与库五、前端工具与构建六、前端性能优化七、响应式设计与适配八、前端安全 总结 Web前端知识…...
【Docker】快速部署 Nacos 注册中心
【Docker】快速部署 Nacos 注册中心 引言 Nacos 注册中心是一个用于服务发现和配置管理的开源项目。提供了动态服务发现、服务健康检查、动态配置管理和服务管理等功能,帮助开发者更轻松地构建微服务架构。 仓库地址 https://github.com/alibaba/nacos 步骤 拉取…...
SpringCloud篇 微服务架构
1. 工程架构介绍 1.1 两种工程架构模型的特征 1.1.1 单体架构 上面这张图展示了单体架构(Monolithic Architecture)的基本组成和工作原理。单体架构是一种传统的软件架构模式,其中所有的功能都被打包在一个单一的、紧密耦合的应用程序中。 …...
tf.Keras (tf-1.15)使用记录4-model.fit方法及其callbacks参数
model.fit() 方法是 TensorFlow Keras 中用于训练模型的核心方法。 其中里面的callbacks参数是实现模型保存、监控、以及和tensorboard联动的重要API 1 model.fit() 方法的参数及使用 必需参数 x: 训练数据的输入。可以是 NumPy 数组、TensorFlow tf.data.Dataset、Python 生…...
Easy系列PLC尺寸测量功能块ST代码(激光微距仪应用)
激光微距仪可以测量短距离内的产品尺寸,产品规格书的测量 精度可以到0.001mm。具体需要看不同的型号。 1、激光微距仪 2、尺寸测量应用 下面我们以测量高度为例子,设计一个高度测量功能块,同时给出测量数据和合格不合格指标。 3、高度测量功能块 4、复位完成信号 5、功能…...
996引擎 -地图-添加安全区
996引擎 -地图-添加安全区 文件位置配置 cfg_startpoint.xls特效效果1345参考资料文件位置 文件位置服务端D:\996M2-lua\MirServer-lua\Mir200客户端D:\996M2-lua\996M2_debug\dev配置 cfg_startpoint.xls 服务端\Mir200\Envir\DATA\cfg_startpoint.xls 填歪了也有可能只画一…...
Node.js 全局对象
Node.js 全局对象 引言 在Node.js中,全局对象是JavaScript环境中的一部分,它提供了对Node.js运行时环境的访问。全局对象在Node.js中扮演着重要的角色,它使得开发者能够访问和操作Node.js的许多核心功能。本文将详细介绍Node.js的全局对象,包括其特点、常用方法和应用场景…...
[Collection与数据结构] B树与B+树
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
redex快速体验
第一步: 2.回调函数在每次state发生变化时候自动执行...
【VM】VirtualBox安装CentOS8虚拟机
阅读本文前,请先根据 VirtualBox软件安装教程 安装VirtualBox虚拟机软件。 1. 下载centos8系统iso镜像 可以去两个地方下载,推荐跟随本文的操作用阿里云的镜像 centos官网:https://www.centos.org/download/阿里云镜像:http://…...
电子电气架构 --- 汽车电子拓扑架构的演进过程
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...
自动驾驶---苏箐对智驾产品的思考
1 前言 对于更高级别的自动驾驶,很多人都有不同的思考,方案也好,产品也罢。最近在圈内一位知名的自动驾驶专家苏箐发表了他自己对于自动驾驶未来的思考。 苏箐是地平线的副总裁兼首席架构师,同时也是高阶智能驾驶解决方案SuperDri…...
手写call函数、手写apply函数、手写bind函数
文章目录 1 手写call函数2 手写apply函数3 手写bind函数 1 手写call函数 call函数的实现步骤: 判断调用对象是否为函数。判断传入上下文对象是否存在,如果不存在,则设置为window。处理传入的参数,截取第一个参数后的所有参数。将…...
Python | Pytorch | Tensor知识点总结
如是我闻: Tensor 是我们接触Pytorch了解到的第一个概念,这里是一个关于 PyTorch Tensor 主题的知识点总结,涵盖了 Tensor 的基本概念、创建方式、运算操作、梯度计算和 GPU 加速等内容。 1. Tensor 基本概念 Tensor 是 PyTorch 的核心数据结…...
90,【6】攻防世界 WEB Web_php_unserialize
进入靶场 进入靶场 <?php // 定义一个名为 Demo 的类 class Demo { // 定义一个私有属性 $file,默认值为 index.phpprivate $file index.php;// 构造函数,当创建类的实例时会自动调用// 接收一个参数 $file,用于初始化对象的 $file 属…...
快速提升网站收录:如何设置网站标签?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/45.html 为了快速提升网站的收录,合理设置网站标签是至关重要的。网站标签主要包括标题标签(TitleTag)、描述标签(DescriptionTag)…...
【数据分析】案例04:豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask)
豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask) 豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:实现豆瓣电影Top250详情的数据分析与Web网页可视化。电脑系统:Windows使用软件:PyCharm、NavicatPython版本:Python 3.…...
Banana JS,一个严格子集 JavaScript 的解释器
项目地址:https://github.com/shajunxing/banana-js 特色 我的目标是剔除我在实践中总结的JavaScript语言的没用的和模棱两可的部分,只保留我喜欢和需要的,创建一个最小的语法解释器。只支持 JSON 兼容的数据类型和函数,函数是第…...
2025.2.1——四、php_rce RCE漏洞|PHP框架
题目来源:攻防世界 php_rce 目录 一、打开靶机,整理信息 二、解题思路 step 1:PHP框架漏洞以及RCE漏洞信息 1.PHP常用框架 2.RCE远程命令执行 step 2:根据靶机提示,寻找版本漏洞 step 3:进行攻击…...
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(绘图设备封装)
目录 图像层的底层抽象——绘图设备抽象 如何抽象一个绘图设备? 桥接绘图设备,特化为OLED设备 题外话:设备的属性,与设计一个相似函数化简的通用办法 使用函数指针来操作设备 总结一下 图像层的底层抽象——绘图设备抽象 在…...
对比DeepSeek、ChatGPT和Kimi的学术写作撰写引言能力
引言 引言部分引入研究主题,明确研究背景、问题陈述,并提出研究的目的和重要性,最后,概述研究方法和论文结构。 下面我们使用DeepSeek、ChatGPT4以及Kimi辅助引言撰写。 提示词: 你现在是一名[计算机理论专家]&#…...
【C++篇】哈希表
目录 一,哈希概念 1.1,直接定址法 1.2,哈希冲突 1.3,负载因子 二,哈希函数 2.1,除法散列法 /除留余数法 2.2,乘法散列法 2.3,全域散列法 三,处理哈希冲突 3.1&…...
TVM调度原语完全指南:从入门到微架构级优化
调度原语 在TVM的抽象体系中,调度(Schedule)是对计算过程的时空重塑。每一个原语都是改变计算次序、数据流向或并行策略的手术刀。其核心作用可归纳为: 优化目标 max ( 计算密度 内存延迟 指令开销 ) \text{优化目标} \max…...
