MySQL一条SQL语句的执行过程

MySQL一条SQL语句的执行过程可以大致分为以下几个步骤: 

mysq分层架构

为了理解这个问题,先从Mysql的架构说起,对于Mysql来说,大致可以分为3层架构。

网络连接层: 作为客户端和服务端的连接,连接器负责处理和客户端的连接,还有一些权限认证之类。比如客户端通用用户名密码连接到Mysql服务器,还有对于数据库表的执行权限。

服务层:基本上Mysql大部分的核心功能都在这一层,包括查询缓存、解析器、优化器之类,比如SQL解析、优化、索引选择,到最后生成执行计划。

存储引擎层:Mysql通过执行引擎直接调用存储引擎API查询数据库中数据。

SQL执行流程

1. 客户端发起sql请求

2. 客户端与MySQL服务器建立连接,这一阶段由连接器负责处理,包括进行身份验证和权限确认等。

3. 如果是select语句,MySQL会检查查询缓存,如果所需查询的结果已经存在于缓存中,便直接返回缓存结果,从而省略后续的查询过程。查询缓存可以提高查询效率,特别是对于重复执行的查询。(Mysql8.0已删除了查询缓存

4. MySQL 没有命中缓存,那么就会进入分析器,分析器核心功能包括语法检查,解析查询,生成解析树,语义检查。主要分三步:词法分析,语法分析和语义分析。

  • 词法分析:一条 SQL 语句有多个字符串组成,首先要提取关键字,比如 select,提出查询的表,提出字段名,提出查询条件等等。
  • 语法分析:根据MySQL的语法规则,将这些词法单元组织成一个解析树。
  • 语义分析:检查解析树中的元素是否在数据库中有对应的实体,并验证操作的合法性。

5. 通过查询优化器将解析树转化成执行计划。优化器的工作过程从语义上可以分为四个阶段:

  • 逻辑转换:包括否定消除、等值传递和常量传递、常量表达式求值、外连接转换为内连接、子查询转换、视图合并等;
  • 优化准备:例如索引 ref 和 range 访问方法分析、查询条件扇出值(fan out,过滤后的记录数)分析、常量表检测;
  • 基于成本优化:包括访问方法,连接顺序,索引的选择等;
  • 执行计划改进:例如表条件下推、访问方法调整、排序避免以及索引条件下推。

6. 更新数据前会先记录undo log,用于事物回滚和实现事物MVCC可见性。

7. 判断所在记录是否在buffer pool中。

8. buffer pool 中进行select和update。buffer pool 和 change buffer参考InnoDB 缓存-CSDN博客

  • 如果是select查询,如果记录存在buffer pool中就直接返回,如果不存在buffer pool中从磁盘读取之后放入buffer pool再返回。
  • 如果是update操作,如果记录存在buffer pool中就直接判断唯一键冲突和数据更新。如果不存在,唯一索引需要从内存中读取数据进行唯一健冲突校验,普通索引的话就把变更记录到change buffer。

9. 操作记录存入redo log(prepare),WAL用于事物崩溃恢复,以及将随机写转换成顺序写提升写入性能。

10-13. 提交事物, 写入binlog和commit redo log。 【MySQL】一文彻底搞懂 Redo-log 为什么要两阶段提交?_mysql redolog两阶段提交-CSDN博客

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

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

相关文章

Leetcode 17.电话号码的字母组合

题目 思路 输入的digits有几个数就有几层。 一层中有几个数则取决于输入的数字对应的字母有几个。 1.确定递归函数的返回值及参数: 其实参数不是一开始就确定好的,而是你在写递归函数的时候缺啥,就往进去传啥。 这里我就直接全部写出来。…

无线基本认识和配置

1、无线局域网 IEEE 802.11标准 根据应用范围分类 WPAN --- 个人无线网络 NFC、ZIgbee、Bluetooth WLAN --- 无线局域网 WiFi,使用到WPAN技术 WMAN --- 无线城域网 WiMax 802.16 WWAN --- 无线广域网 GSM、CDMA、WCDMA、LTE、5G、TD-SCDMA 2、…

2012年认证杯SPSSPRO杯数学建模C题(第一阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现: 从 1984 年的美国洛杉矶奥运会开始,奥运会就不在成为一个“非卖品”,它在向观众诠释更高更快更强的体育精神的同时,也在攫取着巨大的商业价值&#…

【leetcode面试经典150题】11.H指数(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

关东升老师力作!四本编程宝典,带你畅游编程世界

🌟《看漫画学C》:关东升老师以漫画的形式,让你在欢笑中轻松掌握C编程的核心知识。不再枯燥,不再难懂,让编程变得有趣又简单! 🎨《MATLAB科研绘图与学术图表绘制从入门到精通》:关东升…

数学中的各种符号虚数概念

max i∈S​A i ​ ≥ ∑ i∈S​B i​. 这个不等式表达的意思是对于集合 S 中的任意非空子集,子集中的最大的 A_i(A 的元素)的值都大于等于子集中所有 B_i(B 的元素)的值的总和。换句话说,集合 S 中的最大…

c++的学习之路:15、list(2)

本章主要是讲模拟实现list,文章末附上代码。 目录 一、创建思路 二、构造函数 三、迭代器 四、增删 五、代码 一、创建思路 如下方代码,链表是由一块一块不连续的空间组成的,所以这里写了三个模板,一个是节点,一…

koc和kol是什么意思?

一、koc和kol是什么意思? koc和kol是专业术语。KOC是关键意见消费者的意思,是Key Opinion Consumer的缩写;KOL是关键意见领袖的意思,是Key Opinion Leader的缩写。 1、关键意见领袖kol “关键意见领袖”通俗地讲是达人。这些人…

应用开发:python解析斗鱼弹幕

解决问题 互动弹幕,关注提问 ,ai回答 技术 python playwright 调用接口 https://github.com/broven/DouYudanmu/blob/master/douyu.py 演示 放弃 这个根本不是研究方向 定位错误 你浪费下午时间,定位错误 这个跟本不是你的方向。 4个小时看斗…

OMP实现压缩感知的实现(MATLAB)

本文介绍通过DWT和OMP实现压缩感知。 不同的是,将DWT得到的低频放到了作为稀疏矩阵的顶部。 压缩感知 压缩感知算法是一种用于从高维度数据中恢复稀疏信号的方法。它通常用于处理信号的采样和重建,例如图像或音频。以下是压缩感知算法的一般实现细节: 信号表示: 压缩感知算…

蓝桥杯第六届c++大学B组详解

前言: 看了很多博客以及视频讲解,感觉都不是很清楚,比较模棱两可,所以干脆自己一边想,一边写博客,也可帮助到其他人,都是根据自己的逻辑来尽量清楚简单的讲清楚题目,喜欢的不要吝啬三…

计算机笔记(4)续20个

61.指出CPU下一次要执行的指令的地址的部件称为程序计数器 62.动态随机存储器,最为常见的系统内存,即DRAM。DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新一次,如果存储单元没…

Python数据分析十六

一、Python的字典的操作方法popitem和setdefault 当你使用Python中的字典数据类型时,可能会经常用到一些操作方法,比如popitem()和setdefault()。下面我将为你详细讲解这两个方法,并给出相应的代码示例。 1.popitem()方法: pop…

HTTP的介绍

一.什么是HTTP? Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 二.HTTP的特点 (1)基于TCP协议:面向连接,安全 (2)基于请求-响应模型的&…

卡奥斯工业互联网平台分析

一、 背景 卡奥斯是海尔推出的具有中国自主知识产权、全球首家引入用户全流程参与体验的工业互联网平台。其核心是大规模定制模式,通过持续与用户交互,将硬件体验变为场景体验,将用户由被动的购买者变为参与者、创造者,将企业由原…

违法解除劳动合同后【股票争议】——案例学习

目录 结论:不统一 观点一: 不属于劳动争议 观点二: 属于劳动争议 股权激励收益是否属于劳动报酬应结合以下要素综合判断: 股权激励收益应属于劳动报酬 问题:违法解除劳动合同后,涉股权激励争议是否属于…

【1】初识 Python

【1】初识 Python 1、编程语言(1) 语言(2) 编程语言(3) 如何利用编程语言与计算机交流(4) 常见的编程语言(5) 语法 2、Python 简介(1) 什么是 Python(2) Python 能做什么(3) Python 的由来(4) Python的特点① 语法精简② 生态好,开发效率高③ Python开发初体验&…

练习 21 Web [GXYCTF2019]BabySQli

SQL联合查询,注意有源码看源码,Base64以及32的区别,MD5碰撞 打开后有登录框,先随意登录尝试 只有输入admin才是返回wrong pass! 其他返回wrong user 所以用户名字段一定要输入admin 养成好习惯,先查看源码…

删除mysql表卡死 , 打不开,一直转圈圈

最近用navicat删除某一张表时,直接卡死转圈圈,导致navicat直接无响应, 想着是不是自己navicat有问题,换同事电脑来删这张表,还是同样问题。 多次尝试才整明白,根本不是navicat的问题.是mysql 的表锁死了! 如果频繁的对…

ChatGPT 之优势与缺陷

原文: 译者:飞龙 协议:CC BY-NC-SA 4.0 介绍 欢迎来到《ChatGPT:好的、坏的和丑陋的》。在本书中,我们踏上了探索 ChatGPT 多面世界的旅程,这是由 OpenAI 开发的先进自然语言处理模型。随着 ChatGPT 和类似…