美文网首页
MySQL运行机制

MySQL运行机制

作者: EricDD | 来源:发表于2021-11-10 16:38 被阅读0次
MySQL运行机制

开局一张图 内容全靠编

本文主要说一下,应用程序在与数据库交互时,数据库的大概执行流程。整体上了解一下一条SQL的流转。

  1. 建立连接

应用程序与MySQL各自使用线程池,来维护之间的连接。每个连接都是一个线程,从而实现并发访问MySQL。

  1. 客户端发送 SQL
  2. 查询缓存,查询语句与缓存中的完全一致(包括参数且不能存在不确定参数比如 now()),则将查询到的结果返回。
  3. SQL 解析器,解析 SQL 判断 SQL 是否合法。
  4. 查询优化器,根据解析器结果生成最佳的执行计划。
  5. 选择合适的存储引擎进行操作数据(图中是 InnoDB 存储引擎)
    InnoDB执行流程
    1. 将需要操作的数据从磁盘文件中查询出来,放入缓冲池(Buffer Pool)。如果缓冲池中已经存在则不需要查询磁盘。(查询SQL此时会返回结果)

    2. 将 旧数据 写入 undo log。(undo log 用于事务回滚)

    3. 更新缓冲池中的数据。

    4. 写入 Redo Log Buffer。(redo log 主要用于 MySQL 突然宕机的数据恢复)(此时写入的日志存储于内存中)

    5. redo log 写入磁盘的时机。

      innodb_flush_log_at_trx_commit mysql 的这个配置来控制写入 redo log 的时机 默认 为 1
      0时 事务提交时,不写入redo 磁盘文件,而是由 InnoDB存储引擎线程来定时写入磁盘. 性能最好,但是宕机会丢失数据
      1时 事务提交时,写入 redo 磁盘文件。安全性最高,不会丢失数据,相对性能差。
      2 事务提交时,不写入redo 磁盘文件,而是写入 os cache。然后再从os cache 写入 磁盘文件。性能比1好,但是比0差,如果机器宕机则会丢失数据。

    6. 写入 binlog 日志. (用于数据库恢复和主从复制)

      sync_binlog控制binlog写入磁盘策略 默认=0
      =0时先写入 OS cache 然后写入磁盘
      =1直接写入磁盘

    7. redo log 与 bin log 全部写入成功后提交事务完成

以上就是大概 SQL 的运行流程。主要描述的是 InnoDB 存储引擎。

相关文章

  • mysql调优从书写sql开始

    理论知识 MySQL 的运行机制公众号:Coding测试 Mysql 的SQL关键字执行顺序 1、MySQL 的优...

  • mysql调优从书写sql开始

    理论知识 MySQL 的运行机制 Mysql 的SQL关键字执行顺序 1、MySQL 的优化方案有哪些? 1、My...

  • MySQL数据库基本操作(上)

    史上最简单的 MySQL 教程>>>MySQL运行机制原理&架构>>>触发器视图(上)视图(下)数据备份与还原(上...

  • MySQL运行机制

    开局一张图 内容全靠编 本文主要说一下,应用程序在与数据库交互时,数据库的大概执行流程。整体上了解一下一条SQL的...

  • MySQL-运行机制

    SQL-运行机制.png 查询缓存: 解析器: 预处理器: 语义解析 生成新的解析树 查询优化器: 因为一条SQL...

  • 高性能MySQL之运行机制

    本文来自于拜读《高性能MySQL(第三版)》时的读书笔记作者:安明哲转载时请注明部分内容来自《高性能MySQL(第...

  • 3 spark streaming运行机制与架构

    Spark Streaming Job架构与运行机制 Spark Streaming 容错架构与运行机制 Spar...

  • 最全js运行机制

    js运行机制

  • webpackV4 你需要知道的基础知识

    webpack相关概念: 总结webpack 运行过程如下: Webpack 运行机制中的运行机制: 资料: we...

  • Spark之SortShuffle

    SortShuffleManager两种运行机制 SortShuffleManager的运行机制主要分成两种,一种...

网友评论

      本文标题:MySQL运行机制

      本文链接:https://www.haomeiwen.com/subject/tevbzltx.html