2015-04-01 65 views
0

我有一個問題。讓我們想象一下當客戶想要使用銀行ATM並要求資金計數的情況。但突然ATM因停電而停機。數據庫和交易將會是什麼?我熟悉交易的ACID。但實際上DB如何知道ATM不再活躍?超時或什麼?讓它成爲MySQL與InnoDB的數據庫。sql中斷事務

+0

這取決於ATM網絡的設計者,但超時是最可能的機制。 – Barmar 2015-04-01 20:30:20

+0

超時在哪裏?在DB上? – ovod 2015-04-01 20:33:36

+0

不,可能是在管理與ATM通信的應用程序中。 – Barmar 2015-04-01 20:34:22

回答

0

數據庫處理髮送給它的請求,並報告該請求的任何結果 - 在你的情況下計算金額 - 並將用它完成。一旦結果返回到正在等待結果的進程,就結束了數據庫的責任。

工作人員將工作流程返回ATM並顯示給用戶的過程令人頭疼。如果自動櫃員機停機,請求將無效 - 可以說它最終會超時。設計這一過程的人必須注意ATM機停機的狀態。

+0

好的,如果應用程序啓動事務但不發送任何命令並等待。它會永遠持續下去嗎? – ovod 2015-04-01 20:40:10

+0

什麼樣的交易?事務一旦發出命令就會啓動....除非用戶調用命令,否則不需要事務... – 2015-04-01 20:41:40

+0

也許我的問題更具理論性。我想模擬應用程序啓動事務時的情況,但不要結束它。這對我來說很有趣。 – ovod 2015-04-01 20:44:09