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日志?

相关推荐
青槿吖14 分钟前
第二篇:告别XML臃肿配置!Spring注解式IOC/DI保姆级教程,从入门到真香
xml·java·开发语言·数据库·后端·sql·spring
运维 小白1 小时前
2. 部署mysql服务并监控mysql
数据库·mysql·adb
聪明人1 小时前
macOS安装Redis
数据库·redis·macos
北漂Zachary1 小时前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
weixin_505154461 小时前
Bowell Studio:重塑工业互联网时代的装配制造与运维检修
运维·数据库·人工智能·制造·数字孪生·3d产品配置器·3d交互展示
sa100271 小时前
淘宝商品详情 API 接口开发实战:item_detail 调用、参数与 Python 示例
linux·数据库·python
小光学长2 小时前
基于ssm的膳食健康管理系统e6whl4q7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
一个天蝎座 白勺 程序猿2 小时前
KingbaseES融合数据库:一库多能,企业数据管理新思路
数据库·性能优化·kingbasees·金仓数据库
橘颂TA2 小时前
【MySQL】解锁表的 N 种牵手方式:SQL 连接与子查询漫游(复合查询)
数据库·mysql
数据知道3 小时前
MongoDB基于角色的访问控制(RBAC):精细化权限管理的实用方法
数据库·mongodb