Posted on 2011-12-21 14:30
Prayer 閱讀(1967)
評論(0) 編輯 收藏 引用 所屬分類:
數據庫,SQL 、
DB2
一階段提交(1PC One Phase Commit)
一 階段提交就是事務處理器向數據庫服務器發出提交請求,然后等待數據庫服務器的回應,收到回應后完成事務的提交,或者服務器返回提交失敗的結果就回撤事務。 危險期從發出請求開始,到收到回應結束,這段時間中數據庫完成數據的修改、日志記錄等處理,處理越復雜,危險期就越長。
兩階段提交(2PC Two Phase Commit)
兩階段提交把事務提交分成兩個階段:
- 第一階段,事務處理器向數據庫服務器發出"準備提交"請求,數據庫收到請求后執行相同的數據修改和日志記錄等處理,不同的是處理完成后只是把事務的狀態改成"可以提交",然后把結果返回給事務處理器。
- 事務處理器收到回應后進入第二階段,如果在第一階段內的危險期中發生了故障,事務處理器收不到回應,則認為事務失敗,回撤事務。數據庫服務器收不到第二階段的確認提交請求,把"可以提交"的事務回撤.
- 兩階段的第二階段中事務處理器向數據庫服務器發出"確認提交"請求,數據庫服務器把事務的"可以提交"狀態改為"提交完成"狀態,然后返回應答。
從嚴格意義上說,兩階段提交并沒有完全解決網絡通訊危險期的問題,但因為第二階段的處理很簡單,只是修改了事務的狀態,與第一階段相比其處理時間極短,所以危險期極短,發生事務提交故障的可能性幾乎不存在。
所謂兩階段提交, 即Two Phase Commit (2PC), 是分布式事務采用的一種處理