
比如执行 update from xxx set name = “b” where id = “5”; name之前为a
- 查询数据,查出来id是5的数据
- 计算机修改任何东西都是从内存中修改的,数据页从磁盘读入内存,就是说所在的那个叶子节点读出来,然后遍历叶子节点的row,找出id是5的数据,切割之后在MySQL Server修改行数据
- 写undo log,写一个反的数据,之后更新内存中的数据页
- redo log写入内存,就是把修改行数据记录下,准备提交事务(一旦redo log刷入磁盘,磁盘的数据才更新完毕)
注意,redo log这个时候写入的是内存,不是磁盘,binlog也是写入内存里。有没有不妥当的地方?
如果redo log写入内存,机器断电了,数据就丢了
