DBMS事务属性

事务具有四个属性,这些用于在事务之前和之后维护数据库的一致性。

事务属性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

1. 原子性

  • 它声明事务的所有操作如有一个发生失败,则事务中止。
  • 事务没有中途,即事务不能部分发生。 每个事务都被视为一个单元,并且运行完成或根本不执行。

原子性涉及以下两个操作:

中止: 如果事务中止,则所有更改都不可见。
提交: 如果事务提交,则所有更改都是可见的。

示例: 假设事务T跟随T1T2。假设A账户有600元,B由账户有300元。将账户A100转账到账户B

T1 T2
Read(A),A:= A-100,Write(A) Read(B),Y:= Y+100,Write(B)

正常情况下事务完成后,账户A500元,账户B400元。

如果事务T在事务T1完成之后但在事务T2完成之前失败,则金额将从账户A中扣除但不会添加到账户B。这表示数据库状态不一致。为了确保数据库状态的正确性,必须完整地执行事务。

2. 一致性

  • 保持完整性约束,以便数据库在事务之前和之后保持一致。
  • 事务的执行将使数据库处于其先前稳定状态或新稳定状态。
  • 数据库的一致属性声明每个事务都看到一致的数据库实例。
  • 事务用于将数据库从一个一致状态转换为另一个一致状态。

例如: 必须在交易之前或之后维持总金额。

T发生之前的总计 = 600+300=900  
T发生之后的总计 = 500+400=900

因此,数据库是一致的。 在T1完成但T2失败的情况下,将发生不一致。

3. 隔离性

  • 它表示,在第一个事务完成之前,第二个事务不能使用在执行事务时使用的数据。
  • 在隔离中,如果正在执行事务T1并使用数据项X,则在事务T1结束之前,任何其他事务T2都不能访问该数据项。
  • DBMS的并发控制子系统强制执行隔离属性。

4. 持久性

  • 持久性属性用于指示数据库的状态一致的情况,它声明事务发生了永久性变化。
  • 它们不会因错误的事务错误操作或系统故障而丢失。 当事务完成时,数据库将达到称为一致状态的状态。 即使在系统出现故障的情况下,也不会丢失其一致状态。
  • DBMS的恢复子系统负责隔离性属性。

上一篇:DBMS事务

下一篇:DBMS事务的状态

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程