chapter08_数据库恢复技术_1_事务的基本概念和特征
-
事务的四个特征:ACID
(1) 原子性 Atomic
事务中的所有操作要么都执行,要么都不执行
(2) 一致性 Consistency
事务执行的结果从一个状态到另一个状态时保持一致。即当事务提交成功时,保存一致性的结果;当事务提交不成功时,数据库将处在不一样的状态,这种状态应该撤销
(3) 隔离性 Isolation
并发执行事务时,事务之间不能互相干扰
(4) 持久性 Durability
事务一旦提交成功,数据修改是永久的
-
(1) 原子性保持了事务的一致性
(2) 隔离性保证多个事务间不互相干扰。否则,即便每个事务都能确保数据的原子性和一致性,多个事务并发执行时,也可能出现不一致的状态。
隔离性保证了事务A在执行过程中,事务B要么已经执行完毕,要么还没有运行,B不会在A执行的过程中访问到A的中间结果。
-
事务状态
(1) 活动状态:事务执行前的状态
(2) 部分提交状态:事务的最后一条语句执行完毕,结果已经在内存缓冲区中,还没有写入磁盘
(3) 失败状态:事务没有正常执行,应该回滚
(4) 终止状态:事务回滚并且数据库恢复到事务执行前的状态
(5) 提交状态:数据的更改完全写入磁盘
(6) 几种状态间的转换关系
活动状态 --> 部分提交状态 --> 提交状态 | | | | | V -------> 失败状态 --> 终止状态
-
事务原子性和持久性的一种实现 --> 影子拷贝
更新数据库之前,先对原数据库复制一份副本,更新发生在新的副本中;
磁盘上有一个指针,初始时指向原数据库;
正常的过程是: 对新副本进行更新,更新完成后,将指针指向新副本,然后可以删除旧副本;
如果故障发生在指针修改之前,那么只需删除新副本,相当于事务没有发生;
如果故障发生在指针修改之后,那么读到的是更新后的新副本内容。
因此,影子拷贝方案依赖的是指针写操作的原子性:要么写入指针的所有字节,要么一个字节也不写入。
上一篇: Spring 事务学习笔记
下一篇: 红酒瓶高度,红酒瓶高度有标准吗,涨姿势了