欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

chapter08_数据库恢复技术_1_事务的基本概念和特征

程序员文章站 2022-07-04 23:42:32
...
  • 事务的四个特征:ACID

    (1) 原子性 Atomic

    事务中的所有操作要么都执行,要么都不执行

    (2) 一致性 Consistency

    事务执行的结果从一个状态到另一个状态时保持一致。即当事务提交成功时,保存一致性的结果;当事务提交不成功时,数据库将处在不一样的状态,这种状态应该撤销

    (3) 隔离性 Isolation

    并发执行事务时,事务之间不能互相干扰

    (4) 持久性 Durability

    事务一旦提交成功,数据修改是永久的

  • (1) 原子性保持了事务的一致性

    (2) 隔离性保证多个事务间不互相干扰。否则,即便每个事务都能确保数据的原子性和一致性,多个事务并发执行时,也可能出现不一致的状态

    隔离性保证了事务A在执行过程中,事务B要么已经执行完毕,要么还没有运行,B不会在A执行的过程中访问到A的中间结果。

  • 事务状态

    (1) 活动状态:事务执行前的状态

    (2) 部分提交状态:事务的最后一条语句执行完毕,结果已经在内存缓冲区中,还没有写入磁盘

    (3) 失败状态:事务没有正常执行,应该回滚

    (4) 终止状态:事务回滚并且数据库恢复到事务执行前的状态

    (5) 提交状态:数据的更改完全写入磁盘

    (6) 几种状态间的转换关系

      活动状态 --> 部分提交状态 --> 提交状态
          |            |
          |            |
          |            V
          -------> 失败状态 --> 终止状态
    
  • 事务原子性和持久性的一种实现 --> 影子拷贝

    更新数据库之前,先对原数据库复制一份副本,更新发生在新的副本中;

    磁盘上有一个指针,初始时指向原数据库;

    正常的过程是: 对新副本进行更新,更新完成后,将指针指向新副本,然后可以删除旧副本;

    如果故障发生在指针修改之前,那么只需删除新副本,相当于事务没有发生;

    如果故障发生在指针修改之后,那么读到的是更新后的新副本内容。

    因此,影子拷贝方案依赖的是指针写操作的原子性:要么写入指针的所有字节,要么一个字节也不写入。