我正在阅读有关dbms的ACID属性,其中1个属性是 Atomicity (原子性)。
http://ecomputernotes.com/database-system/rdbms/transaction
场景:
假设在执行交易Ti之前,帐户A和B的值分别为Is000和Rs.2000。
现在,假设在执行Ti的过程中发生了电源故障,导致Ti无法成功完成。故障点可能在完成Write(A,a)之后且在Write(B,b)之前。这意味着将执行A中的更改,但不会执行B中的更改。因此,帐户A和Bare的值分别为Rs.950和Rs.2000。由于这次失败,我们损失了50卢比。
现在,我们的数据库处于不一致状态。
我的问题是在断电的情况下导致我们进入不一致状态,我们如何从中恢复?
我们可以在应用程序级别/代码级别做到吗?
有多少种方法可以恢复?