更新语句执行过程

这条语句基本上也会沿着上一个查询的流程走,只不过执行更新的时候要记录日志,这就会引入日志模块了,MySQL 自带的日志模块是 binlog(归档日志) ,所有的存储引擎都可以使用,我们常用的 InnoDB 引擎还自带了一个日志模块 redo log(重做日志),我们就以 InnoDB 模式下来探讨这个语句的执行流程。

  • 先查询到张三这一条数据,如果有缓存,也是会用到缓存。
  • 然后拿到查询的语句把 age 改为 19,然后调用引擎 API 接口写入这一行数据,InnoDB 引擎把数据保存在内存中同时记录 redo log,此时 redo log 进入 prepare 状态,然后告诉执行器执行完成了随时可以提交。
  • 执行器收到通知后记录 binlog,然后调用引擎接口,提交 redo log 为提交状态。
  • 更新完成。

更新语句执行流程如下:分析器—->权限校验—->执行器—>引擎—redo log(prepare 状态)—> binlog —>redo log(commit状态)

update tb_student A set A.age='18' where A.name=' 张三 ';
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《更新语句执行过程》
文章链接:https://zhuji.vsping.com/4980.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。