美文网首页
事务的实现

事务的实现

作者: lsh的学习笔记 | 来源:发表于2020-05-09 16:33 被阅读0次
  • 隔离性来实现。
  • 原子性持久性redo log(重做日志)来保证。
  • 一致性undo log来保证。

undo不是redo的逆过程。

redo和undo的作用都可以视为是一种恢复操作

redo 恢复提交事务修改的操作;
undo 回滚行记录到某个特定版本

因此两者记录的内容不同:
redo通常是物理日志,记录的是的物理修改操作;
undo是逻辑日志,根据每记录进行记录。

redo(重做日志)

用来实现事务的持久性,即事务ACID中的D。

记录了事务的行为,可以很好地通过其对页进行“重做”操作。

由两部分组成:
一是内存中的重做日志缓冲(redo log buffer),其是易失的;
二是重做日志文件(redo log file),其是持久的。

InnoDB是事务的存储引擎,其通过Force Log at Commit机制实现事务的持久性,即当事务提交(COMMIT)时,必须先将该事务的所有日志写入到重做日志文件进行持久化,待事务的COMMIT操作完成才算完成。

在InnoDB存储引擎中,重做日志都是以512字节进行存储的。这意味着重做日志缓存、重做日志文件都是以块(block)的方式进行保存的,称之为重做日志块(redologblock),每块的大小为512字节

由于重做日志块的大小和磁盘扇区大小一样,都是512字节,因此重做日志的写入可以保证原子性,不需要doublewrite技术。

undo

事务有时需要进行回滚操作,这时就需要undo。

undo存放在数据库内部的一个特殊段(segment)中,这个段称为undo段(undo segment)。undo段位于共享表空间内。

当InnoDB存储引擎回滚时,它实际上做的是与先前相反的工作。

  1. 对于每个INSERT,InnoDB存储引擎会完成一个DELETE;
  2. 对于每个DELETE,InnoDB存储引擎会执行一个INSERT;
  3. 对于每个UPDATE,InnoDB存储引擎会执行一个相反的UPDATE,将修改前的行放回去。

相关文章

  • [二]事务原则与实现

    导航 一. 事务的原则 二. SQL实现数据库事务管理 三. JDBC实现事务管理 一. 事务的原则 事务的描述事...

  • Spring框架AOP源码分析(三):手写Spring事务框架

    1.编程事务实现 所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用Transa...

  • SSM spring 2

    1 Spring 事务实现方式、事务的传播机制、默认的事务类别 Spring事务的1+3种实现方式、7种传播行为、...

  • 10.Spring中事务控制

    1.基于XML的AOP实现事务控制 2.基于注解的AOP实现事务控制 基于注解的AOP实现事务控制,方便演示,我们...

  • Mysql基础——事务

    内容 事务事务基本知识事务特性如何实现的?快照读和当前读 分布式事务XA规范mysql基于XA实现的分布式事务my...

  • 事务的实现

    隔离性由锁来实现。 原子性和持久性 由 redo log(重做日志)来保证。 一致性由 undo log来保证。 ...

  • 事务的实现

    基本逻辑比较清晰的文章 :https://blog.csdn.net/u010853261/article/det...

  • 基于JQuery实现的todolist(1)

    前言 利用 jQuery 实现的PC端事务管理应用,能够对事务进行增删改,查看事务的详情信息,标记完成事务以及实现...

  • spring 事务管理

    基于aop, 实现事务管理 service层的第一个非事务方法调用事务方法, 会导致事务失效. 由于aop 的实现...

  • Spring声明式事务和编程式事务介绍

    编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用Transacti...

网友评论

      本文标题:事务的实现

      本文链接:https://www.haomeiwen.com/subject/fywknhtx.html