DBMS事务属性
事务具有四个属性,这些用于在事务之前和之后维护数据库的一致性。
事务属性
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
1. 原子性
- 它声明事务的所有操作如有一个发生失败,则事务中止。
- 事务没有中途,即事务不能部分发生。 每个事务都被视为一个单元,并且运行完成或根本不执行。
原子性涉及以下两个操作:
中止: 如果事务中止,则所有更改都不可见。
提交: 如果事务提交,则所有更改都是可见的。
示例: 假设事务T
跟随T1
和T2
。假设A
账户有600
元,B
由账户有300
元。将账户A
的100
转账到账户B
。
T1 | T2 |
---|---|
Read(A),A:= A-100,Write(A) | Read(B),Y:= Y+100,Write(B) |
正常情况下事务完成后,账户A
有500
元,账户B
有400
元。
如果事务T在事务T1完成之后但在事务T2完成之前失败,则金额将从账户A中扣除但不会添加到账户B。这表示数据库状态不一致。为了确保数据库状态的正确性,必须完整地执行事务。
2. 一致性
- 保持完整性约束,以便数据库在事务之前和之后保持一致。
- 事务的执行将使数据库处于其先前稳定状态或新稳定状态。
- 数据库的一致属性声明每个事务都看到一致的数据库实例。
- 事务用于将数据库从一个一致状态转换为另一个一致状态。
例如: 必须在交易之前或之后维持总金额。
T发生之前的总计 = 600+300=900 T发生之后的总计 = 500+400=900
因此,数据库是一致的。 在T1
完成但T2
失败的情况下,将发生不一致。
3. 隔离性
- 它表示,在第一个事务完成之前,第二个事务不能使用在执行事务时使用的数据。
- 在隔离中,如果正在执行事务
T1
并使用数据项X
,则在事务T1
结束之前,任何其他事务T2
都不能访问该数据项。 - DBMS的并发控制子系统强制执行隔离属性。
4. 持久性
- 持久性属性用于指示数据库的状态一致的情况,它声明事务发生了永久性变化。
- 它们不会因错误的事务错误操作或系统故障而丢失。 当事务完成时,数据库将达到称为一致状态的状态。 即使在系统出现故障的情况下,也不会丢失其一致状态。
- DBMS的恢复子系统负责隔离性属性。
关注微信小程序
扫描二维码
程序员编程王