回滚原子和耐用性

时间:2009-11-09 06:48:46

标签: sql sqlite acid

我试图了解数据库转换的ACID属性:它们是如何实现的;哪个部分是原子性,哪个部分是耐久性等。

假设我有两个动作AB。不幸的是,系统在执行action B时关机。系统重置后,我们知道数据库将在执行action A之前保留(通过sqlite中的回滚jounery)状态。那么,这显示了哪个ACID属性,原子性或持久性?

另一种情况:假设执行action B时发生错误并通知应用程序,并且应用程序回滚。我认为这是纯粹的原子性,它是由用户实现的,而不是由数据库引擎实现的。我是对的吗?

1 个答案:

答案 0 :(得分:0)

两个例子都突出了原子性:A和B都被提交,或两者都没有。

持久性是在提交事务后仅进入图片的属性。应用程序可以放心,如果COMMIT调用成功,那么是持久的。系统重置或关闭电源不会恢复已提交事务的影响,因此它的持久性。