qidao123.com技术社区-IT企服评测·应用市场

标题: 【数据库】MySQL中bin log、redo log、undo log详解 [打印本页]

作者: 罪恶克星    时间: 2025-3-28 18:42
标题: 【数据库】MySQL中bin log、redo log、undo log详解
bin log、redo log、undo log简介


redo log(存储引擎日志)

MySQL中,查询一条数据,会将该数据相关页的所有数据一次性加载出来,放入 Buffer Pool中,后续都是从Buffer Pool中进行查找;对数据做修改时,如果数据在Buffer Pool中存在,则直接更新里面数据,然后将更新操作记载到 redo log buffer中,等候合适时间刷新到redo log 文件中。
落盘机遇


redo log 写入机遇


日志组文件


为什么不直接刷盘?

前面提到过,数据是以数据页的形式加载的,数据修改可能仅修改了部分很小额数据就要把整个数据页进行刷盘,会造成大量IO。
binlog (数据库日志)

逻辑日志,记载的是SQL语句的原始逻辑,不管什么存储引擎,只要发生了表数据的更新,就会产生binlog日志。
重要用途

重要依赖binlog进行数据同步,保证数据一致性

记载格式


写入机遇



写入计谋


两阶段提交

Innodb在执行更新语句时会记载redo log和binlog日志,两种日志在写入机遇不一样

undo log

回滚日志,每个事务对数据的修改都会记载到undo log中,当事务执行过程中出现异常,MySQL使用undo log中的数据链进行数据追溯,将数据规复到开始之前的状态。
比方:
insert into table values(1,'A',15) 会在undo log中有一条记载

update table set name='A1' where id=1 也会在undo log中生成一条记载

TX_ID=2记载中 ROL_POINT回滚指针指向的是 TX_ID记载的地址。

这样就能保证,更新失败后,能够通过记载找到原始数据进行规复

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4