我试图了解数据库转换的ACID属性:它们是如何实现的;哪个部分是原子性,哪个部分是耐久性等。
假设我有两个动作A
和B
。不幸的是,系统在执行action B
时关机。系统重置后,我们知道数据库将在执行action A
之前保留(通过sqlite中的回滚jounery)状态。那么,这显示了哪个ACID属性,原子性或持久性?
另一种情况:假设执行action B
时发生错误并通知应用程序,并且应用程序回滚。我认为这是纯粹的原子性,它是由用户实现的,而不是由数据库引擎实现的。我是对的吗?
答案 0 :(得分:0)
两个例子都突出了原子性:A和B都被提交,或两者都没有。
持久性是在提交事务后仅进入图片的属性。应用程序可以放心,如果COMMIT调用成功,那么是持久的。系统重置或关闭电源不会恢复已提交事务的影响,因此它的持久性。