Transaction
事務如何幫助恢復系統故障?
我了解交易的開發是為了滿足兩個要求:
- 並發數據庫訪問
- 對系統故障的恢復能力
我了解並發問題的動機;克服數據庫一致性問題。
但是,我有一個問題:事務如何幫助系統恢復故障?
如果我理解您的問題,“系統故障恢復能力”由伺服器處理,以確保事務:
- 成功送出事務。
要麼:
- 確保未送出的事務回滾到以前的狀態。
換句話說,事務成功完成,否則(在失敗中)由於事務不完整,所有正在進行的更改都將被撤消。
這個問題的一個常見答案是檢查銀行轉賬如何運作。
從賬戶 A 向賬戶 B 轉賬至少有兩個不同的過程:
Account A decreases total Account B increases total
如果系統在第一個程序完成後出現故障,並且每個單獨的程序都送出了數據,那麼帳戶 A 將減少而帳戶 B 不會增加。這筆錢實際上會“失去”。
將其包裝在事務中意味著兩個程序都必須成功才能送出事務。金錢不可能“失去”。