如何MySql的原子性和持久性

原子性实现原理(undo log)
  • Undo Log是为了实现事务的原子性,在MySql数据库InnoDB存储引擎中,还用Undo Log来实现多版本并控制(MVCC)。

  • 在操作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了ROOLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。

  • 注意:undo log是逻辑日志,可以理解为:

    • 当delete一条记录时,undo log中会记录一条对应的insert记录
    • 当insert一条记录时,undo log中会记录一条对应的delete记录
    • 当update一条记录时,他记录一条对应相反的update记录
持久性实现原理(redo log)
  • 在事务提交前,只要将Redo log持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化,但是redo log已经持久化。系统可以根据redo log的内容,将所有数据恢复到最新状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qJgy9q7e-1599671647434)(MySql%E6%95%B0%E6%8D%AE%E5%BA%93.assets/image-20200910000843302.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值