DBMS的原子性和持久性之间的差异有点模糊,所以我要求两者之间有明显的区别?
答案 0 :(得分:3)
这是四个ACID属性中的两个,它们允许数据库事务的可靠性。
简单地说,原子性意味着某种事情发生或者不发生 - 没有中途状态。
例如,当我在银行的账户之间转账时,这笔钱不会留下一个账户而不会出现在另一个账户中。例如,您可能会发现:
start transaction
update working_account set balance = balance - 100
update savings_account set balance = balance + 100
commit transaction
在提交点,原子性保证两个update
语句都发生或两者都不发生(如果有某种错误,或者如果你回滚事务而不是提交它)
另一方面,耐久性意味着,一旦发生, 就会发生。
这意味着银行不会忘记我转账了。
在上述语句的上下文中,commit
记住已经完成的事情(在非易失性存储器,磁盘或其他方面),以便灾难性故障不会影响事务。