MySQL三种日志

一、undo log(回滚日志)

1.作用:

(1)保证了事物的原子性

(2)通过read view和undo log实现mvcc多版本并发控制

2.在事务提交前,记录更新前的数据到undo log里,回滚的时候读取undo log来进行回滚

3.undo log格式有一个rtx_id(上一次事物修改的id)和roll_ptr(指向需要回滚的版本)

二、redo log

1.作用:保证事务的持久性

2.WAL(write-ahead logging)先写日志技术:MySQL的写操作不是立即写到磁盘上的,而是先写到buffer pool里的缓存页生成脏页,再将脏页产生的变化写入到redo log buffer中,事务提交的时候将redo log buffer中内容循环写到磁盘中的redo log file中。后续innoDB引擎在适当的时候由后台线程将buffer pool中的脏页刷新到磁盘中。如果由于意外脏页数据没有持久化,可以根据redo log恢复数据到最新状态。

3.redo log的磁盘操作是顺序写,比随机写更高效。

三、binlog(在server层而不是存储引擎层)

1.作用:用于备份(记录全量日志,不小心整个数据库的数据被删除了)、主从复制

参考:图解MySQL

相关推荐
不羁。。40 分钟前
【撸靶笔记】第八关:GET - Blind - Boolian Based - Single Quotes
数据库·sql·mybatis
AwhiteV1 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
m0_595199852 小时前
Redis(以Django为例,含具体操作步骤)
数据库·redis·缓存
爱尚你19932 小时前
MySQL 三大日志:redo log、undo log、binlog 详解
数据库·mysql
小猿姐3 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
NocoBase5 小时前
10 个开源工具,快速构建数据应用
数据库·低代码·开源
麻辣清汤5 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi
钢铁男儿5 小时前
Python 正则表达式(正则表达式和Python 语言)
python·mysql·正则表达式
Kan先生7 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python
超级迅猛龙7 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc