ACID 事务,持久性

ACID transactions, durability

我试图了解 ACID 事务,但我对持久性一无所知。

据我所知,持久性可确保保存所有已完成的交易,即使发生某种技术故障。即使发生某种技术故障也能获救意味着什么。例如,如果我的服务器在事务期间崩溃,在将数据保存到数据库之前,持久性如何确保服务器再次启动时它会正确保存数据?

实际上,如果发生技术故障,事务要么全部提交,要么全部回滚。

涉及服务器意外停止的故障(例如,由于灾难性破坏)通常会导致事务被回滚(数据保留在事务开始之前的状态,而不是某些中间状态)。

必须重复回滚事务。这取决于使用数据库的应用程序。因此,ACID 给应用程序增加了一定的负担,让应用程序知道事务何时完成或未完成。

这在实践中是一个非常复杂的主题。程序员花费了成千上万年的时间来使事务处理尽可能地健壮。