MySQL中写操作

 

 具体到操作流程:

当执行某个写操作的 SQL 时,引擎将这行数据更新到内存的同时把对应的操作记录到 redo log 里面,然后处于 prepare 状态。并把完成信息告知给执行器。

执行器生成对应操作的 binlog,并把 binlog 写入磁盘里。然后调用引擎的提交事务接口,变更 redo log 状态为 commit。

===》》》《《《《====

重做日志(redo log

位于存储引擎层的 redo log,它是用来记录在"数据页做了什么修改"的物理日志文件。

WAL 技术

提到 redo log,WAL 技术必然是绕不过去的,全称是 Write-Ahead Logging。也就是在同步磁盘前先写日志,然后系统再根据一定的策略将日志里的记录同步到磁盘里

二进制日志(binlog)

位于服务层的二进制日志文件 binlog

扮演的角色是存储逻辑日志的,所谓的逻辑日志就是指修改了什么,都会记录其中。

 

回滚日志(undo log)

在进行数据修改时,同时记录 undo log,即同时记录相反操作的逻辑日志。你可以理解为操作 update 的时候,写一条对应相反的 update 记录,操作 delete 的时候,写一条对应的 insert 记录。

 

 

前面讲的重做日志,回滚日志以及锁技术就是实现事务的基础。

 

posted @ 2021-07-28 15:47  KLAPT  阅读(64)  评论(0编辑  收藏  举报