Mysql的事务日志

Mysql的事务具有四个特性:原子性、一致性、隔离性、持久性。那么事务的四种特性分别是靠什么机制实现的呢?

  • 事务的隔离性由锁机制来保证

  • 事务的原子性、一致性、持久性则由redo log和Undo log来保证。

    • redo log是重做日志,提供再写入操作,恢复提交事务修改的页操纵,用来保证事务的持久性。

    • undo log是回滚日志,回滚记录到某个特定的版本,保证事务的原子性和一致性。

  • redo log:是存储引擎(innodb)生成的日志,记录的是物理级别上的页修改操作,比如页号XXX、偏移量yyy写入了'zzz'数据。主要是为了保证数据的可靠性。

  • undo log:是存储引擎(innodb)生成的日志,记录的是逻辑操作日志。比如对某一行进行了insert语句操作,那么undo log就会记录与之相反的delete操作。主要用于事务的回滚 (undo log记录的是每个修改操作的逆操作)和一致性非锁定读(undo log回滚记录到某个特定的版本---MVCC,多版本并发控制)。

1. redo log

InnoDB引擎是以页 为基本单位来管理存储空间的。在真正访问页面之前,需要把磁盘上的页读取到内存的buffer pool 中之后才能访问数据。所有的更新都必须先更新buffer pool中的数据,buffer pool中被更新过的页被称之为脏页(dirty page),然后buffer pool中的脏页会以一定的频率被刷到磁盘中(check point机制),通过缓冲池(buffer pool)来优化cpu和磁盘之间的速度鸿沟,保证整体的性能不会下降太快。

1.1 为什么需要redo日志?

相关推荐
jiushidt26 分钟前
在 DBeaver 中为 SQLite 启用 SpatiaLite
数据库·sqlite
码士集团小青44 分钟前
Google 开源了啥,让 AI Agent 碰数据库不再是定时炸弹
数据库·oracle
SL_staff1 小时前
3分钟上线新规则:业务人员拖拽完成合同超期自动暂停服务
java·mysql·全栈
CS创新实验室1 小时前
数据库突然断电,凭什么没丢数据?——WAL 日志与崩溃恢复
数据库·mysql
Warolitbos2 小时前
【数据库】SQL面试基础15题,测试/开发必背速查
数据库
ClouGence2 小时前
开源数据库管理工具 CloudDM 新版本上线,新增 AI SQL 助手,支持 Elasticsearch、崖山数据库
数据库·sql·elasticsearch
用户84913717547162 小时前
【技术干货】MySQL联合索引底层原理 | 最左前缀原则详解
mysql·面试
kele_z2 小时前
手工修改数据库中的数据时,我会加的四道保险
mysql·postgresql
ly76892 小时前
PostgreSQL 执行计划深读:从 EXPLAIN 输出到代价模型驱动的 SQL 改写
数据库·sql·postgresql·explain·执行计划·代价模型
Python自动化直播3 小时前
自动化笔记:素材管理、命名、轮换的几条土办法
linux·运维·数据库