首頁 >常見問題 >分散式事務是什麼意思

分散式事務是什麼意思

hzc
hzc原創
2020-06-29 13:08:283796瀏覽

分散式事務是指事務的參與者、支援事務的伺服器、資源伺服器、事務管理器分別位於不同的分散式系統的不同節點之上。

分散式事務是什麼意思

為了實作分散式事務,需要使用下面將介紹的兩階段提交協定。 * 階段一:開始向事務涉及到的全部資源發送提交前資訊。此時,事務涉及到的資源還有最後一次機會來異常結束事務。如果任一資源決定異常結束事務,則整個事務取消,不會進行資源的更新。否則,事務將正常執行,除非發生災難性的失敗。為了防止會發生災難性的失敗,所有資源的更新都會寫入到日誌中。這些日誌是永久性的,因此,這些日誌會倖免於難並且在失敗之後可以重新對所有資源進行更新。 * 階段二:只在階段一沒有異常結束的時候才會發生。此時,所有能被定位和單獨控制的資源管理器都將開始執行真正的資料更新。在分散式事務兩階段提交協定中,有一個主事務管理器負責扮演分散式事務協調器的角色。事務協調器負責整個事務並使之與網路中的其他事務管理器協同工作。為了實現分散式事務,必須使用一種協定在分散式事務的各個參與者之間傳遞事務上下文訊息,IIOP便是這種協定。這就要求不同開發商開發的事務參與者必須支援一種標準協議,才能實現分散式的事務。

在 Transact-SQL 中啟動的分散式事務的結構相對比較簡單:

1. Transact-SQL腳本或應用程式連接執行啟動分散式交易的 Transact-SQL 語句。

2. 執行該語句的 Microsoft® SQL Server™ 成為交易中的主控伺服器。

3. 然後腳本或應用程式對連結的伺服器執行分散式查詢,或對遠端伺服器執行遠端儲存程序。

4. 當執行了分散式查詢或遠端程序呼叫後,主控伺服器將自動呼叫 MS DTC 以便登記分散式事務中連結的伺服器和遠端伺服器。

5. 當腳本或應用程式發出 COMMIT 或 ROLLBACK 語句時,主控 SQL Server 將呼叫 MS DTC 管理兩階段提交過程,或通知連結的伺服器和遠端伺服器回溯其交易。

語句

控制分散式交易的 Transact-SQL 語句很少,因為多數工作都由 Microsoft® SQL Server™ 和 MS DTC 在內部完成。 Transact-SQL 腳本或應用程式中所需的 Transact-SQL 語句只須:

●啟動分散式事務。

●對連結的伺服器執行分散式查詢,或對遠端伺服器執行遠端程序呼叫。

●呼叫標準 Transact-SQL COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION 或 ROLLBACK WORK 語句完成交易。

●對於任一 Transact-SQL 分散式事務,處理 Transact-SQL腳本或連線的 SQL Server 將自動呼叫 MS DTC 以協調交易的提交或回溯。

REMOTE_PROC_TRANSACTIONS 選項是相容性選項,只會影響使用sp_addserver定義的遠端伺服器所進行的遠端儲存程序呼叫。有關遠端儲存過程的更多信息,請參見遠端儲存程序架構。此選項不適用於在使用sp_addlinkedserver定義的連結伺服器上執行預存程序的分散式查詢。有關分散式查詢的更多信息,請參見分散式查詢。

以上是分散式事務是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn