📜  DBMS事务属性

📅  最后修改于: 2020-12-12 07:31:07             🧑  作者: Mango

交易性质

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

交易性质

  • 原子性
  • 一致性
  • 隔离
  • 耐用性

原子性

  • 它指出事务的所有操作都立即发生,如果没有发生,事务将中止。
  • 没有中途,即事务不能部分发生。每个事务都被视为一个单元,并且要么运行完成,要么根本不执行。

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

中止:如果事务中止,则所有更改均不可见。

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

示例:假设后面的事务T由T1和T2组成。 A由600卢比组成,B由300卢比组成。将100卢比从帐户A转移到帐户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。这表明数据库状态不一致。为了确保数据库状态的正确性,必须完全执行事务。

一致性

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

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

Total before T occurs = 600+300=900
Total after T occurs= 500+400=900

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

隔离

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

耐用性

  • 持久性属性用于指示数据库一致状态的性能。它指出交易已进行永久更改。
  • 它们不会因错误事务的错误操作或系统故障而丢失。事务完成后,数据库将达到称为一致状态的状态。即使系统发生故障,该一致状态也不会丢失。
  • DBMS的恢复子系统负责耐久性属性。