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

相关推荐
rainFFrain1 小时前
(MySQL)库的操作
数据库·mysql
八股文领域大手子2 小时前
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现
java·数据库·算法·缓存·mybatis·哈希算法
noravinsc3 小时前
django admin 中更新表数据 之后再将数据返回管理界面
数据库·django·sqlite
Bruce-li__4 小时前
DRF凭什么更高效?Django原生API与DRF框架开发对比解析
数据库·django·sqlite
郭不耐5 小时前
PostgreSQL与MySQL哪个适合做时空数据分析?
mysql·postgresql·数据分析
noravinsc5 小时前
connection.cursor() 与 models.objects.filter
数据库·django·原生查询·orm查询
YH.6 小时前
MySQL 主从复制
mysql
laimaxgg7 小时前
MySQL复合查询
数据库·mysql
洞窝技术7 小时前
MYSQL:关于索引你想知道的
后端·mysql
编程在手天下我有7 小时前
Redis 常见问题深度剖析与全方位解决方案指南
数据库·redis·缓存·性能优化·数据持久化·分布式系统