首页 > 数据库技术 > 详细

mysql 一次更新语句是如何执行的

时间:2019-12-23 15:17:47      阅读:84      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

1,执行器通过引擎查找到需要更新的数据

2,数据已经在内存直接返回,否则从磁盘中读入到内存中

3,执行器中 将数据更新

4,引擎将新数据 写入内存中,同时写入redo log中 事务处于prepare状态 。

5,引擎告知执行器,执行完成。执行器将这个操作的bin log 写入磁盘

6,执行器调用提交事务接口,提交事务。
过程中涉及到的redo log 和bin log

redo log 记录最新数据缓存。mysql更新一条数据并不是直接更新到磁盘中,首先记录到redo log,内存中。

然后在空闲时,将redo log中的数据写入磁盘。这样如果系统崩了,内存中的数据,未提交的可以通过redo log 恢复

redo log中的日志是有大小限制的。类似于环形,write pos是写入的位置,chekpoint是磁盘刷新的位置。

当磁盘内容满了,即write pos 与chek point遇见时。刷新部分数据到磁盘,同时删除相应的redo log,腾出空间。

bin log记录的是每次DDL和DML的操作动作。

在数据误操作时,可以通过最新备份数据+bin log 恢复成想要的状态

mysql 一次更新语句是如何执行的

原文:https://www.cnblogs.com/luoying/p/12083792.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!