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

相关推荐
程序员小八77710 小时前
MySQL 事务:一文把 ACID、隔离级别、MVCC、锁全串起来
数据库·mysql
lzhdim10 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
ltl10 小时前
ClickHouse Distributed 引擎与分布式查询路由
数据库
Wang's Blog10 小时前
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践
数据库·笔记·postgresql
whcyhhh11 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
Elastic 中国社区官方博客12 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本
大数据·运维·数据库·人工智能·elasticsearch·ai
Faith_xzc13 小时前
一条 SQL 顶一条 Flink 链路?Doris Streaming Job 持续导入全景解析
大数据·数据库·sql·flink
阮胜昌13 小时前
MySQL 中的动态数据脱敏:无需更改应用程序即可保护敏感数据
android·mysql·adb
小白说大模型15 小时前
AI驱动的个性化学习路径:知识图谱与知识点关联的存储与推理
大数据·人工智能·学习·mysql·机器学习·prompt·知识图谱
这个DBA有点耶15 小时前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba