Oracle 分布式事務和兩階段提交 2PC

2021-08-27 12:28:51 字數 1084 閱讀 6037

分布式事務是指發生在多台資料庫之間的事務,oracle中通過dblink方式進行事務處理,分布式事務比單機事務要複雜的多。大部分的關係型資料庫通過兩階段提交(2 phase commit 2pc)演算法來完成分布式事務,下面重點介紹下2pc演算法。

在分布式事務中,主要有以下幾個組成部分:

在分布式事務中,commit point site非常重要,它不需要進入2pc的prepared 狀態,因為它通常操作最關鍵資料,所以它不會出現in-doubt狀態。commit point site總是優先於其它資料庫節點先提交,目的在於保護最關鍵的資料,它決定整個分布式事務是提交還是回滾。分布式事務中其它資料庫節點在gc的指揮下進行後續的提交(或回滾)。

那麼在oracle中如何選取commit point site呢?它是根據引數commi_ point_strength 最大的資料庫作為commit point site。

兩階段提交協議可以保證資料的強一致性,許多分布式關係型資料管理系統採用此協議來完成分布式事務。它是協調所有分布式原子事務參與者,並決定提交或取消(回滾)的分布式演算法。同時也是解決一致性問題的演算法。該演算法能夠解決很多的臨時性系統故障(包括程序、網路節點、通訊等故障),被廣泛地使用。但是,它並不能夠通過配置來解決所有的故障,在某些情況下它還需要人為的參與才能解決問題。

顧名思義,兩階段提交分為以下兩個階段:

1)prepare phase (準備節點)

2)commit phase (提交階段)

在請求階段,協調者將通知事務參與者準備提交或取消事務,然後進入表決過程。在表決過程中,參與者將告知協調者自己的決策:同意(事務參與者本地作業執行成功)或取消(本地作業執行故障)。

為了完成準準備階段,除了commit point site外,其它的資料庫節點按照以下步驟執行:

在該階段,協調者將基於第乙個階段的投票結果進行決策:提交或取消。當且僅當所有的參與者同意提交事務協調者才通知所有的參與者提交事務,否則協調者將通知所有的參與者取消事務。參與者在接收到協調者發來的訊息後將執行響應的操作。

提交階段按下面的步驟進行:

分布式事務 XA事務 兩階段提交

1.分布式事務 在談到 xa 規範之前,必須首先了解分布式事務處理 distributed transaction processing dtp 的概念。transaction 即事務,又稱之為交易,指乙個程式或程式段,在乙個或多個資源如 資料庫 或檔案上為完成某些功能的執行過程的集合。分布式事務處...

分布式的兩階段提交

一 二階段提交演算法描述 在分布式系統中,事務往往包含有多個參與者的活動,單個參與者上的活動是能夠保證原子性的,而多個參與者之間原子性的保證則需要通過兩階段提交來實現,兩階段提交是分布式事務實現的關鍵。很明顯,兩階段提交保證了分布式事務的原子性,這些子事務要麼都做,要麼都不做。而資料庫的一致性是由資...

XA分布式事務處理兩階段提交

在談到 xa規範之前,必須首先了解分布式事務處理 distributed transaction processing dtp 的概念。transaction 即事務,又稱之為交易,指乙個程式或程式段,在乙個或多個資源如 資料庫 或檔案上為完成某些功能的執行過程的集合。分布式事務處理是指乙個事務可能...