0

我试图了解数据库事务的 ACID 属性:它们是如何实现的;哪一部分是原子性,哪一部分是持久性等。

假设我有一个包含两个动作的交易,A并且B. 不幸的是,系统在执行时关闭了电源action B。系统重置后,我们知道数据库将保留(通过 sqlite 中的回滚)执行之前的状态action A。那么,这显示了哪种 ACID 属性,原子性还是持久性?

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

4

1 回答 1

1

这两个例子都强调了原子性:要么 A 和 B 都被提交,要么都没有。

持久性是仅事务提交后才出现的属性。应用程序可以放心,如果 COMMIT 调用成功,那么它是持久的。系统重置或断电不会恢复已提交事务的效果,因此不会恢复其持久性。

于 2009-11-09T06:54:14.867 回答