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