InnoDB引擎下SQL的执行流程
SQL执行流程
- 连接器
- 客户端连接驱动与mysql连接池连接 半双工通信
- 传入客户端的sql
- 查询缓存(8.0之后没有)
- 删除原因
- 如果每次查询条件不同导致命中率低
- 没有命中缓存 创建新缓存
- 在创建缓存的时候会添加表级锁
- 缓存更新需要批量失效
- 删除原因
- sql解析器
- 对传入的sql
- 词法分析 分解成各种token systembos[]
- 语法分析 bison 语法分析器
- 生成语法树
- 对传入的sql
- sql预处理器
- 提交sql模板语句
- 提交参数执行
- 优化器
- 基于成本的优化器cbo
- 成本指数据表 数据量索引等信息计算的sql语句对应的io消耗指
- 生成可执行的执行计划
- 执行器
- innodb
-
undo log
-
首先将bufferpool中数据的旧值写入undo log中以支持回滚
-
然后将数据写入内存中的buffer pool
-
redo log
-
将更新写入信息放入内存中的 redo log buffer
-
然后将更新写入信息 刷入磁盘中redo log
-
bin log
-
变更历史查询 数据库备份恢复 主从复制等功能
-
在redo log 写入的同时进行binlog的写入操作
-
刷盘成功后告诉redolog日志 已提交
-
利用io线程在一些特定时机将内存中需要更新的数据读出同时写入磁盘 open+write函数 idb文件
-
innodb 主要功能
-
对执行计划进行微事务拆分
-
在innodb查询相关的handler api 组合和调用
-
索引查询 遍历查询 构建临时表等流程
-
执行后将执行结果返客户端 tcp
-
- innodb

Kimi 回答
- 首先对我们写的SQL语句进行优化
- 然后将优化后的执行计划传给存储引擎InnoDB
- 事务开始:
- 用户执行一个INSERT、UPDATE或DELETE语句,触发一个事务的开始。
- InnoDB为事务分配一个唯一的事务ID。
- 数据修改:
- 用户的数据修改请求被发送到InnoDB存储引擎。
- InnoDB首先检查要修改的数据页是否在缓冲池中。如果不在,就从磁盘读取到缓冲池。
- InnoDB在缓冲池中的数据页上进行修改。
- Undo日志记录:
- 在修改数据之前,InnoDB将旧数据复制到Undo日志中。
- Undo日志用于支持事务的回滚功能,以便在事务失败或用户执行回滚操作时恢复旧数据。
- Redo日志记录:
- InnoDB将数据的修改信息记录到Redo日志中。
- Redo日志首先写入内存中的Redo日志缓冲区,然后在事务提交时刷新到磁盘上的Redo日志文件。
- Redo日志用于在系统崩溃后恢复未提交的事务。
- 事务提交:
- 用户执行COMMIT语句,请求提交事务。
- InnoDB将Redo日志缓冲区中的数据刷新到磁盘上的Redo日志文件。
- InnoDB确保所有修改过的数据页都被标记为脏页,并将在适当的时候刷新到磁盘。
- 脏页刷新:
- InnoDB后台线程定期将缓冲池中的脏页刷新到磁盘上。
- 脏页刷新是基于一定的策略和算法进行的,以确保数据的一致性和持久性。
- 事务结束:
- 一旦事务提交成功,并且所有相关的数据都被正确地写入到磁盘上,事务就结束了。
- 用户可以继续执行其他事务或查询操作。

相关文章:
InnoDB引擎下SQL的执行流程
SQL执行流程 连接器 客户端连接驱动与mysql连接池连接 半双工通信传入客户端的sql 查询缓存(8.0之后没有) 删除原因 如果每次查询条件不同导致命中率低没有命中缓存 创建新缓存在创建缓存的时候会添加表级锁缓存更新需要批量失效 sql解析器 对传入的sql 词法分析 分解成各种t…...
Java小白入门到实战应用教程-重写和重载
引言 在上一节中我们学习了面向对象中的继承,然后在那一节中我们提到了一个知识点叫做:重写。 通过上节的代码样例我们也观察到了,重写是发生在子类和父类的这种继承关系中。 继承的特点就是提取所有子类共有的属性和方法,但是…...
微力同步如何安装使用并使用内网穿透配置公网地址远程访问
文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 内网穿透工具安装 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸,虽然谈不上多么新颖,但是其广…...
nginx负载聚能
一、负载均衡 早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求, 但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复 杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服…...
Python进阶 JSON数据,pyecharts制图
目录 json数据格式的转换 什么是json json本质 注意 pyecharts快速入门 画一个最简单的折线图 使用全局配置选项优化折线图 总结 json数据格式的转换 什么是json 一种轻量级的数据交换格式,可以按json指定的格式去组织和封装数据 json本质 带有特定格式的…...
polyglot,一个有趣的 Python 库!
更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - polyglot。 Github地址:https://github.com/aboSamoor/polyglot 在处理多语言文本时,解析和翻译不同语言的文本数据是一个常见…...
4.3.语言模型
语言模型 假设长度为 T T T的文本序列中的词元依次为 x 1 , x 2 , ⋯ , x T x_1,x_2,\cdots,x_T x1,x2,⋯,xT。 于是, x T x_T xT( 1 ≤ t ≤ T 1\le t\le T 1≤t≤T) 可以被认为是文本序列在时间步 t t t处的观测或标签。 在给定这样的文本…...
(学习总结10)C++类和对象1
C类和对象1 一、类的定义1.类定义格式2.访问限定符3. 类域 二、实例化1.实例化概念2.对象大小 三、this指针四、C和C语言实现Stack对比 以下代码环境在 VS2022。 一、类的定义 1.类定义格式 class 为定义类的关键字,Stack 为类的名字, { } 中为类的主体…...
进击大数据系列(一):Hadoop 基本概念与生态介绍
进击大数据系列(一):Hadoop 基本概念与生态介绍-腾讯云开发者社区-腾讯云 Hadoop 简介-CSDN博客 hadoop-common-3.2.1.jar hadoop-mapreduce-client-core-3.2.1.jar hadoop-hdfs-3.2.1.jar hadoop-core 依赖之间关系...
评价类算法--模糊综合评价算法模型
一.概述 二.经典集合和模糊集合的基本概念 经常采用向量表示法来进行表示 三.隶属函数的三种确定方法 其中,梯形分布用得最多 四.应用:模糊综合评价 对应一个指定的评语: 选择一个方案:...
哪些系统需要按照等保2.0进行定级?
等保2.0适用的系统类型 根据等保2.0的要求,需要进行定级的系统主要包括但不限于以下几类: 基础信息网络:包括互联网、内部网络、虚拟专用网络等。云计算平台/系统:涵盖公有云、私有云、混合云等多种部署模式的云服务平台。大数据…...
自注意力和位置编码
一、自注意力 1、给定一个由词元组成的输入序列x1,…,xn, 其中任意xi∈R^d(1≤i≤n)。 该序列的自注意力输出为一个长度相同的序列 y1,…,yn,其中: 2、自注意力池化层将xi当作key,value,query来…...
“文件夹提示无法访问?高效数据恢复策略全解析“
一、现象解析:文件夹为何提示无法访问? 在日常使用电脑的过程中,不少用户可能会突然遇到文件夹提示“无法访问”的尴尬情况。这一提示不仅阻断了对重要文件的即时访问,还可能预示着数据丢失的风险。造成这一现象的原因多种多样&a…...
结构开发笔记(一):外壳IP防水等级与IP防水铝壳体初步选型
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140928101 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
WPF Datagrid控件,获取某一个单元格中的控件
在WPF应用程序中,比如需要获取特定 DataGrid 单元格中的 TextBlock 控件,可以通过访问 DataGridRow 和 DataGridCell 对象。以下是一个例子,展示如何获取 DataGrid 的第二行第一列中的 TextBlock 控件,并修改其属性。 1. 在XAML中…...
P10838 『FLA - I』庭中有奇树
前言 本题解较为基础,推导如何得出二分解题思路。 题目大意 给出无根带权树,双方采取最佳策略,求节点S->T的最短路。 有两种操作: 我方至多可以使用一次传送,花费k元从a传送到b(ab不能相邻…...
WebRTC简介
WebRTC简介 WebRTC(Web Real-Time Communication)是一项开源的实时通信技术,它允许网页浏览器进行实时语音、视频和数据共享通信,而无需安装额外的插件或应用程序。WebRTC的出现极大地简化了实时通信的开发和部署过程,…...
一套直播系统带商城源码 附搭建教程
本站没搭建测试过,有兴趣的自己折腾了,内含教程! 功能介绍: 礼物系统:普通礼物、豪华礼物、热门礼物、守护礼物、幸运礼物 提现方式:统一平台提现日期及方式,方便用户执行充值提现操作 连麦…...
Netty 总结与补充(十)
简单介绍一下 Netty?你为什么会用到Netty?说说你对Netty的认识?为什么选用Netty来做通信框架? Netty 是一个高性能、异步事件驱动的 NIO 框架,它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架…...
循环实现异步变同步的问题
一、背景 在开发中遇到在循环中调用异步接口的问题,导致页面渲染完成时,没有展示接口返回后拼接的数组数据。二、问题 在代码中使用了map进行循环,导致调用接口的时候处于异步。this.form.list.map(async el>{el.fileList [];if(el.pic…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
