2 更新过程

本文详细介绍了MySQL的更新过程中涉及的redo log和binlog,讲解了它们的作用、工作流程以及两者之间的区别。redo log用于解决高IO成本问题,提供crash-safe能力,先写日志再更新磁盘。binlog则是逻辑日志,记录原始更新逻辑,适用于数据恢复和主从同步。两阶段提交保证了redo log和binlog的一致性。
摘要由CSDN通过智能技术生成

目录

2 更新过程

2.1 日志模块

2.1.1 redo log

2.1.2 日志模块:binlog

2.2 流程介绍

2.2.1 流程图

2.2.2 “两阶段提交”


2 更新过程

更新流程上类似查询流程,而与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:redo log(重做日志)和 binlog(归档日志)

2.1 日志模块

2.1.1 redo log

2.1.1.1 意义(为了解决什么问题?)

如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高。为了解决这个问题,MySQL 引入了 redo log。其实就是 MySQL 里经常说到的 WAL 技术( Write-Ahead Logging),它的关键点就是先写日志,再写磁盘。

2.1.1.2 流程

具体来说,当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log 里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。

write pos 是当前记录的位置,一边写一边后移。checkpoint 是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数据文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值