mysql 执行流程

midoll 613 2022-07-05

1、查询

clipboard-1657013387401

2、更新

clipboard(2)-1657013384907
clipboard(1)-1657013384782

redo log 崩溃恢复,持久性

1、innodb
2、物理日志
3、48m 固定

undo log 回滚撤销,原子性

顺序io

binlog DDL DML逻辑的日志

1、主从
2、数据恢复
clipboard(3)-1657013384928

clipboard(4)-1657013387369

操作数据的时候,会先写到内存的buffer pool 里面,同时记录redo log,如果在刷盘之前出现异常,在重启后就可以读取redo log 的内容,写入到磁盘,保证数据的持久性
当然,恢复成功的前提是数据页本身没有被破坏,是完整的,这个通过双写缓冲(double write)保证。
尽管需要写入两次数据,但是写缓冲区不需要两次的 io开销或操作,因为只需要调用一次操作系统的fsync() 就可以将批量数据顺序写入磁盘 -> 系统表空间的Double Write Buffer


# mysql # 执行流程