当前位置: 首页 > news >正文

MySQL的SQL执行流程

项目查询数据库的流程

用户通过Tomcat服务器发送请求到MySQL数据库的过程。

  1. 用户发起请求:用户通过浏览器或其他客户端向Tomcat服务器发送HTTP请求。

  2. Tomcat服务器处理请求:

    1. Tomcat服务器接收用户的请求,并创建一个线程来处理这个请求。

    2. 线程从数据库连接池中获取一个数据库连接。

    3. 使用这个连接执行SQL语句(例如查询或更新操作)。

  3. 数据库连接池管理连接:数据库连接池负责管理数据库连接,确保它们被高效地复用和释放。

  4. MySQL数据库处理请求:

    1. MySQL服务器接收来自Tomcat的SQL语句。

    2. SQL解析器解析SQL语句,将其转换为可以执行的操作。

    3. 查询优化器分析查询并选择最佳的执行计划。

    4. 执行器根据优化后的执行计划执行查询。

    5. 存储引擎负责实际的数据存储和检索。

  5. 返回结果:MySQL将查询结果返回给Tomcat服务器,Tomcat再将结果以HTML或其他格式返回给用户。

  6. 数据存储:MySQL使用内存和磁盘来存储数据。内存用于缓存常用数据,提高访问速度;磁盘用于持久化存储所有数据。

更新数据库数据

MySQL InnoDB 存储引擎事务处理流程

  1. 加载缓存数据:从磁盘文件加载数据到Buffer Pool(缓冲池)中。

  2. 写入数据的旧值便于回滚:在更新数据之前,将旧的数据值写入undo日志文件,以便在需要时进行事务回滚。

  3. 更新内存数据:执行器通过InnoDB存储引擎更新内存中的数据。

  4. 写redo日志:将更新后的数据变化记录到Redo Log Buffer(重做日志缓冲区)中。

  5. 准备提交事务 - redo日志刷入磁盘:当事务准备提交时,将Redo Log Buffer中的内容写入redo日志文件。

  6. 准备提交事务 - binlog日志写入磁盘:同时,将binlog日志文件的内容写入磁盘,确保事务的持久性。

  7. 写入binlog文件与位置,写入commit标记:最后,将binlog文件的位置信息写入commit标记,表示事务成功提交。

关键点总结

  • Buffer Pool:用于缓存数据页,减少磁盘I/O操作。

  • Redo Log:记录数据修改前后的状态,用于恢复未完成的事务。

  • Undo Log:记录事务开始前的数据状态,用于回滚事务。

  • Binlog:二进制日志,记录SQL语句或行级更改,用于数据恢复和复制。

相关文章:

MySQL的SQL执行流程

项目查询数据库的流程 用户通过Tomcat服务器发送请求到MySQL数据库的过程。 用户发起请求:用户通过浏览器或其他客户端向Tomcat服务器发送HTTP请求。 Tomcat服务器处理请求: Tomcat服务器接收用户的请求,并创建一个线程来处理这个请求。 线…...

Foundation CSS 可见性

Foundation CSS 可见性 引言 在网页设计中,CSS可见性是一个至关重要的概念。它决定了元素在网页上是否可见,以及如何显示。Foundation CSS 是一个流行的前端框架,它提供了丰富的工具和组件来帮助开发者构建响应式和可访问的网页。本文将深入探讨 Foundation CSS 中的可见性…...

7. Docker 容器数据卷的使用(超详细的讲解说明)

7. Docker 容器数据卷的使用(超详细的讲解说明) 文章目录 7. Docker 容器数据卷的使用(超详细的讲解说明)1. Docker容器数据卷概述2. Docker 容器数据卷的使用演示:2.1 宿主 和 容器之间映射添加容器卷2.2 容器数据卷 读写规则映射添加说明2.3 容器数据卷的继承和共…...

算法——结合实例了解广度优先搜索(BFS)搜索

一、广度优先搜索初印象 想象一下,你身处一座陌生的城市,想要从当前位置前往某个景点,你打开手机上的地图导航软件,输入目的地后,导航软件会迅速规划出一条最短路线。这背后,就可能运用到了广度优先搜索&am…...

qt QCommandLineOption 详解

1、概述 QCommandLineOption类是Qt框架中用于解析命令行参数的类。它提供了一种方便的方式来定义和解析命令行选项,并且可以与QCommandLineParser类一起使用,以便在应用程序中轻松处理命令行参数。通过QCommandLineOption类,开发者可以更便捷…...

Linux权限提升-内核溢出

一:Web到Linux-内核溢出Dcow 复现环境:https://www.vulnhub.com/entry/lampiao-1,249/ 1.信息收集:探测⽬标ip及开发端⼝ 2.Web漏洞利⽤: 查找drupal相关漏洞 search drupal # 进⾏漏洞利⽤ use exploit/unix/webapp/drupal_dr…...

【环境安装】重装Docker-26.0.2版本

【机器背景说明】Linux-Centos7;已有低版本的Docker 【目标环境说明】 卸载已有Docker,用docker-26.0.2.tgz安装包安装 1.Docker包下载 下载地址:Index of linux/static/stable/x86_64/ 2.卸载已有的Docker 卸载之前首先停掉服务 sudo…...

【云安全】云原生- K8S API Server 未授权访问

API Server 是 Kubernetes 集群的核心管理接口,所有资源请求和操作都通过 kube-apiserver 提供的 API 进行处理。默认情况下,API Server 会监听两个端口:8080 和 6443。如果配置不当,可能会导致未授权访问的安全风险。 8080 端口…...

笔记7——条件判断

条件判断 主要通过 if、elif 和 else 语句来实现 语法结构 # if 条件1: # 条件1为真时执行的代码 # elif 条件2: # 条件1为假、且条件2为真时执行的代码 # elif 条件3: # 条件1、2为假、且条件3为真时执行的代码 # ... # else: # 所…...

Word 公式转 CSDN 插件 发布

经过几个月的苦修,这款插件终于面世了。 从Word复制公式到CSDN粘贴,总是出现公式中的文字被单独提出来,而公式作为一个图片被粘贴的情况。公式多了的时候还会导致CSDN禁止进一步的上传公式。 经过对CSDN公式的研究,发现在粘贴公…...

二次封装axios解决异步通信痛点

为了方便扩展,和增加配置的灵活性,这里将通过封装一个类来实现axios的二次封装,要实现的功能包括: 为请求传入自定义的配置,控制单次请求的不同行为在响应拦截器中对业务逻辑进行处理,根据业务约定的成功数据结构,返回业务数据对响应错误进行处理,配置显示对话框或消息形…...

算法——结合实例了解深度优先搜索(DFS)

一,深度优先搜索(DFS)详解 DFS是什么? 深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树、图的算法。其核心思想是尽可能深地探索分支,直到无法继续时回溯到上一个节点…...

数据结构(考研)

线性表 顺序表 顺序表的静态分配 //线性表的元素类型为 ElemType//顺序表的静态分配 #define MaxSize10 typedef int ElemType; typedef struct{ElemType data[MaxSize];int length; }SqList;顺序表的动态分配 //顺序表的动态分配 #define InitSize 10 typedef struct{El…...

使用SSE协议进行服务端向客户端主动发送消息

1.创建一个SSE配置类: 1.1代码如下:package com.campus.platform.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.AsyncS…...

FastAPI 高并发与性能优化

FastAPI 高并发与性能优化 目录 🚀 高并发应用设计原则🧑‍💻 异步 I/O 优化 Web 服务响应速度⏳ 在 FastAPI 中优化异步任务执行顺序🔒 高并发中的共享资源与线程安全问题 1. 🚀 高并发应用设计原则 在构建高并发应…...

DFS+回溯+剪枝(深度优先搜索)——搜索算法

目录 一、递归 1.什么是递归? 2.什么时候使用递归? 3.如何理解递归? 4.如何写好递归? 二、记忆化搜索(记忆递归) 三、回溯 四、剪枝 五、综合试题 1.N皇后 2.解数独 DFS也就是深度优先搜索&am…...

在cursor/vscode中使用godot C#进行游戏开发

要在 Visual Studio Code(VS Code)中启动 C#Godot 项目,可以按照以下步骤进行配置: 1.安装必要的工具 • 安装 Visual Studio Code:确保你已经安装了最新版本的 VS Code。 • 安装.NET SDK:下载并安装.NET 7.x SDK(…...

vant4 van-list组件的使用

<van-listv-if"joblist && joblist.length > 0"v-model:loading"loading":finished"finished":immediate-check"false"finished-text"没有更多了"load"onLoad">// 加载 const loading ref(fals…...

介绍 Liquibase、Flyway、Talend 和 Apache NiFi:选择适合的工具

在现代软件开发中&#xff0c;尤其是在数据库管理和数据集成方面&#xff0c;选择合适的工具至关重要。本文将介绍四个流行的工具&#xff1a;Liquibase、Flyway、Talend 和 Apache NiFi&#xff0c;分析它们的应用、依赖以及如何选择适合的工具。 1. Liquibase 简介&#xff…...

攻防世界33 catcat-new【文件包含/flask_session伪造】

题目&#xff1a; 点击一只猫猫&#xff1a; 看这个url像是文件包含漏洞&#xff0c;试试 dirsearch扫出来/admin&#xff0c;访问也没成功&#xff08;--delay 0.1 -t 5&#xff09; 会的那几招全用不了了哈哈&#xff0c;那就继续看答案 先总结几个知识点 1./etc/passwd&am…...

图像处理核心技术:分辨率、信噪比与形态学算法解析

1. 图像处理基础概念解析在数字图像处理领域&#xff0c;我们经常需要面对几个核心问题&#xff1a;如何量化系统的分辨能力&#xff1f;如何评估图像质量&#xff1f;如何从噪声中提取有用信息&#xff1f;这些问题的答案构成了现代图像处理技术的理论基础。作为一名从业十余年…...

WarcraftHelper完整指南:让魔兽争霸III在现代电脑上重获新生

WarcraftHelper完整指南&#xff1a;让魔兽争霸III在现代电脑上重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在Windows …...

rCore-Tutorial-v3:从零开始用Rust编写RISC-V操作系统的终极指南

rCore-Tutorial-v3&#xff1a;从零开始用Rust编写RISC-V操作系统的终极指南 【免费下载链接】rCore-Tutorial-v3 Lets write an OS which can run on RISC-V in Rust from scratch! 项目地址: https://gitcode.com/gh_mirrors/rc/rCore-Tutorial-v3 你是否曾梦想过亲手…...

Java源码分析:`ReentrantLock`、`ReentrantReadWriteLock`与`LockSupport`深度解析

引言&#xff1a;从synchronized到可编程的锁 在Java并发编程的世界里&#xff0c;synchronized关键字曾是开发者控制线程同步的唯一选择。它简单、易用&#xff0c;并由JVM保证其正确性。然而&#xff0c;随着应用复杂度的提升&#xff0c;其固有的局限性——如无法中断、无法…...

把边界立起来,理解 ABAP Cloud 的几根主梁

项目里最让人头疼的时刻,往往不是写代码那天,而是系统升级后的那个早晨。很多团队都有过类似体验,业务明明没有改,几个增强点、几段直连标准表的逻辑、几次对未发布对象的调用,却在升级后一起冒烟。表面上看,这是兼容性问题,往深处看,其实是开发边界没有真正立起来。AB…...

从苹果三星2016年困境看消费电子行业创新与供应链管理

1. 行业巨头的十字路口&#xff1a;苹果与三星的2016年镜像2016年&#xff0c;对于全球消费电子行业而言&#xff0c;是一个充满微妙转折的年份。站在聚光灯下的两大巨头——苹果与三星&#xff0c;仿佛站在了同一面镜子的两侧&#xff0c;映照出截然不同的困境&#xff0c;却又…...

JAVA学习之JAVASE基础

集合列表ListArrayList利用空参创建的集合&#xff0c;在底层创建一个默认长度为0的数组添加第一个元素时&#xff0c;底层会创建一个新的长度为10的数组存满时&#xff0c;会扩容1.5倍一次存多个元素&#xff0c;1.5倍还不够&#xff0c;则新创建的数组长度以实际为准LinkedLi…...

基于Raspberry Pi Pico的DIY宏键盘:从矩阵扫描到KMK固件实战

1. 项目概述&#xff1a;ClawDeck&#xff0c;一个为游戏玩家打造的桌面控制中心最近在逛一些开发者社区和硬件DIY论坛时&#xff0c;发现一个叫“ClawDeck”的项目挺有意思。项目作者是“gaminghousenursingaide761”&#xff0c;这个名字看起来像是一个个人开发者的ID。ClawD…...

AI赋能风景园林设计:技术原理、实践案例与未来挑战

1. 项目概述&#xff1a;当AI遇见园林最近几年&#xff0c;我身边不少做景观设计的朋友&#xff0c;从最初的“AI能画图&#xff1f;试试看”&#xff0c;到现在的“这个参数化模型帮我省了一周工作量”&#xff0c;态度转变非常明显。这让我意识到&#xff0c;人工智能在风景园…...

异构无人机群与主动SLAM技术解析

1. 异构无人机群与主动SLAM技术概述在机器人自主导航领域&#xff0c;主动SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;技术正逐渐成为解决动态环境感知与决策的关键方法。这项技术的核心在于让智能体不仅被动地构建环境地图&#xff0c;还能主动规划最…...