DBMS中的原子性和持久性有什么区别?

时间:2014-06-10 21:43:25

标签: oracle database

DBMS的原子性和持久性之间的差异有点模糊,所以我要求两者之间有明显的区别?

1 个答案:

答案 0 :(得分:3)

这是四个ACID属性中的两个,它们允许数据库事务的可靠性。

简单地说,原子性意味着某种事情发生或者不发生 - 没有中途状态。

例如,当我在银行的账户之间转账时,这笔钱不会留下一个账户而不会出现在另一个账户中。例如,您可能会发现:

start transaction
  update working_account set balance = balance - 100
  update savings_account set balance = balance + 100
commit transaction

在提交点,原子性保证两个update语句都发生或两者都不发生(如果有某种错误,或者如果你回滚事务而不是提交它)


另一方面,耐久性意味着,一旦发生, 就会发生。

这意味着银行不会忘记我转账了。

在上述语句的上下文中,commit 记住已经完成的事情(在非易失性存储器,磁盘或其他方面),以便灾难性故障不会影响事务。