搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > IT小镇 > Mysql原子性,持久性实现原理

Mysql原子性,持久性实现原理

IT小镇 2020-02-20

事务的特性是原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability),简称ACID,本文主要是说原子性和持久性。


1.redo log

mysql为了提升性能不会把每次的修改都实时同步到磁盘中,而是先存到缓存中,然后再使用线程去做缓冲池和磁盘中的同步。这样必然会存在问题,假如电脑突然停电,那么没有持久化到磁盘的信息必然会丢失,那么持久性如何实现?

redo log叫重做日志,当事务提交的时候会把所有的修改信息存放在redo log中,并且会把redo log持久化到磁盘,当电脑重启后就会重新执行redo log的修改信息来恢复数据,这样就能够达到持久化的目的。


2.undo log

一个事务中所有的操作要么全部成功提交,要么全部失败回滚,这就是事务的原子性。

undo log称之为回滚日志,每条数据的变化(insert/update/delete)都会产生一条记录,并且日志持久化到磁盘,undo log用来记录数据修改前的信息,比如说要插入一条记录,那么undo log就会记录一条删除该信息的语句,这样你需要回滚的时候那么undo log就会执行删除你之前插入的那条记录,达到没有修改前的状态,更新一个记录也会生成一条sql记录你更新前的字段状态,从而实现了原子性。

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Mysql原子性,持久性实现原理》的版权归原作者「IT小镇」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注IT小镇微信公众号

IT小镇微信公众号:gh_f91df8c773b7

IT小镇

手机扫描上方二维码即可关注IT小镇微信公众号

IT小镇最新文章

精品公众号随机推荐