欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > MySQL的SQL执行流程

MySQL的SQL执行流程

2025/2/22 16:34:57 来源:https://blog.csdn.net/Lin_Miao_09/article/details/145560581  浏览:    关键词: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语句或行级更改,用于数据恢复和复制。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词