当前位置: 首页 > 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语句或行级更改,用于数据恢复和复制。

相关文章:

  • 机器学习(四)
  • 智能车摄像头开源—8 元素处理
  • 【FastAPI】8.FastAPI结合Jinja2模板完成一个待办列表
  • 【数据结构-并查集】力扣721. 账户合并
  • Pycharm 2024在解释器提供的python控制台中运行py文件
  • DDD该怎么去落地实现(3)通用的仓库和工厂
  • 用大模型学大模型04-模型可视化与数据可视化
  • [数据结构]二叉搜索树详解
  • Spring——Spring开发实战经验(4)
  • SpringBoot 的核心只有几张图
  • Ubuntu 24.04.1 LTS 本地部署 DeepSeek 私有化知识库
  • C语言中的强制类型转换:原理、用法及注意事项
  • 1.buuctf [BJDCTF2020]EasySearch
  • Hadoop之HDFS的使用
  • 从零开始:Gitee 仓库创建与 Git 配置指南
  • 服务器硬件知识--------linux系统初识and安装
  • Linux csplit 命令实现日志文件的拆分
  • 软考高级《系统架构设计师》知识点(五)
  • Spring事务原理的具体实现,以及包括源码以及具体在实际项目中的使用。
  • 【etcd】etcd_APIs 简单KV、watch、lease、txn命令
  • 港交所与香港证监会就“中概股回流意向”已与部分相关企业进行接触
  • 张元济和百日维新
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  • 国务院任免国家工作人员:饶权任国家文物局局长
  • 上海浦东单价超10万楼盘228套房源开盘当天售罄,4月已有三个新盘“日光”
  • 楼下电瓶车起火老夫妻逃生时被烧伤,消防解析躲火避烟注意事项