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

http://www.lryc.cn/news/536423.html

相关文章:

  • Foundation CSS 可见性
  • 7. Docker 容器数据卷的使用(超详细的讲解说明)
  • 算法——结合实例了解广度优先搜索(BFS)搜索
  • qt QCommandLineOption 详解
  • Linux权限提升-内核溢出
  • 【环境安装】重装Docker-26.0.2版本
  • 【云安全】云原生- K8S API Server 未授权访问
  • 笔记7——条件判断
  • Word 公式转 CSDN 插件 发布
  • 二次封装axios解决异步通信痛点
  • 算法——结合实例了解深度优先搜索(DFS)
  • 数据结构(考研)
  • 使用SSE协议进行服务端向客户端主动发送消息
  • FastAPI 高并发与性能优化
  • DFS+回溯+剪枝(深度优先搜索)——搜索算法
  • 在cursor/vscode中使用godot C#进行游戏开发
  • vant4 van-list组件的使用
  • 介绍 Liquibase、Flyway、Talend 和 Apache NiFi:选择适合的工具
  • 攻防世界33 catcat-new【文件包含/flask_session伪造】
  • Git -> Git配置密钥对,并查看公钥
  • 淘宝订单列表Fragment转场动画卡顿解决方案
  • 【ESP32指向鼠标】——icm20948与esp32通信
  • Xcode证书密钥导入
  • Ubuntu安装PgSQL17
  • K8S容器启动提示:0/2 nodes are available: 2 Insufficient cpu.
  • LabVIEW外腔二极管激光器稳频实验
  • 笔记6——字典dict(dictionary)
  • 【MySQL】InnoDB单表访问方法
  • APP端网络测试与弱网模拟!
  • 【个人开发】deepseed+Llama-factory 本地数据多卡Lora微调