ACID事务,持久性

3

我正在尝试理解ACID事务,但我对Durability有些疑问。

据我所知,Durability确保所有已完成的事务都会被保存,即使发生某种技术故障。那么,即使发生某种技术故障,被保存是什么意思呢?例如,在事务期间我的服务器崩溃,在将数据保存到数据库之前,Durability如何确保服务器重新启动后正确保存数据?


1
这是两个独立的问题,任何一个都足以证明需要整个答案。因此,您应该将它们作为两个单独的问题提出。StackOverflow模型是每个线程一个问题:请尊重它。 - APC
1
“crushed during Transaction” != “completed transactions”,不确定您是否想了解这一点,以及您是否理解已完成交易的工作原理。 - Solarflare
1个回答

4
在实践中,如果出现技术故障,则事务通常要么完全提交,要么完全回滚。
涉及服务器意外停止的故障(例如由于灾难性破坏),往往会导致事务被回滚(数据处于事务开始前的状态,而不是某个中间状态)。
回滚的事务必须重复执行。这取决于使用数据库的应用程序。因此,ACID对应用程序有一定的负担,需要知道何时完成或未完成事务。
在实践中,这是非常复杂的问题。已经花费了数千年的程序员时间使事务处理尽可能健壮。

回滚事务是否涉及对持久存储的任何更改?如果在崩溃发生之前事务没有被提交,因此没有对数据库进行永久更改,那么为什么我们需要在系统重新启动后执行回滚操作? - Mehdi Charife

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接