我明白,以一種模糊的方式,常規的ACID事務是如何工作的。您在數據庫上執行某些工作時,只有在設置了某種提交標誌之後才能確認工作。提交部分基於一些基礎假設(如單個磁盤塊寫入是原子的)。如果發生災難性錯誤,您可以在恢復階段清除未提交的數據。分佈式事務如何工作(如MSDTC)?
分佈式事務如何工作?在一些MS文檔中,我已經讀過,你可以以某種方式在數據庫和文件系統之間執行事務(除其他外)。
此技術可以(也可能)用於安裝程序,您希望程序完全安裝或完全不存在。您只需在安裝程序開始時開始一個事務。接下來,您可以連接到註冊表和文件系統,進行定義安裝的更改。作業完成後,只需提交,或者在出於某種原因安裝失敗的情況下回滾。這個神奇的分佈式事務協調器會自動清理註冊表和文件系統。
怎麼可能以這種方式處理兩個不同的系統呢?在我看來,總是有可能讓系統處於不一致的狀態,即文件系統已經提交了更改並且註冊表沒有更改。我認爲在MSDTC中甚至可以在整個網絡上執行交易。
我已閱讀http://blogs.msdn.com/florinlazar/archive/2004/03/04/84199.aspx,但感覺只是解釋的開始,步驟4應該大大擴展。
編輯:從我收集的http://en.wikipedia.org/wiki/Distributed_transaction可以通過兩階段提交(http://en.wikipedia.org/wiki/Two-phase_commit)完成。讀完這些之後,我仍然沒有完全理解這個方法,似乎這些步驟之間有很大的誤差空間。
這裏有*很大的錯誤空間。特別是,它依賴「COMMIT PREPARED」始終工作。現實不同。 – 2014-06-20 03:24:03