Mysql的事务学习笔记

Mysql的事务机制

事务操作原理

  1. 需要操作的记录会被拷贝到undo日志中
  2. 具体的增删查改操作的结果记录到redo日志中去
  3. 如果增删查改没有问题,就会吧redo日志同步到数据文件中去

在这里插入图片描述

事务特性

在这里插入图片描述

** 事务具有原子性,一致性,隔离性,持久性这4大特性 **

  • 事务的原子性:
    事务是一个或多个SQL语句组成的整体,要么全部执行成功,要么全部执行失败,如果要回滚事务,那么mysql会给undo,redo日志打上标记,这时数据就不会同步到数据文件中去了。

  • 事务的一致性:
    在这里插入图片描述

上图的展示的是,不同事务在执行时,是相互独立的,在redo日志中操作时,临时数据不能相互访问,这样子为了防止数据错乱

  • 事务的隔离性:
    在这里插入图片描述

  • 事务的持久性:
    在这里插入图片描述

事务案例

在这里插入图片描述

根据上图的事务流程做一个说明:

  1. 手动开启一个事务
  2. 在操作Update前,会拷贝需要update的记录到undo日志中去
  3. 再执行Update语句
  4. Update操作的结果记录在redo日志中去,
  5. 在操作Delete前,会拷贝需要delete的记录到undo日志中去
  6. 再执行Delete语句
  7. Delete操作的结果记录在redo日志中去
  8. 提交事务,把redo中的记录同步到数据文件中去
  9. 如果事务回滚,就是把undo,redo的日志的数据做了标记就行,这样子就不会把数据同步到数据文件中去了

出现宕机或者断电的情况:

这个时候不用担心数据丢失,因为新修改的数据可以从redo日志中同步到数据文件中
如果不需要同步,直接恢复到事务执行之前的数据,就从undo日志中同步到数据文件中去

总结

这是对事务的学习总结,后续还会总结分布式事务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值