MySQL的兩段提交(Two-Phase Commit,2PC)過程是指在分布式事務中,將整個事務分為兩個階段提交的過程。
第一階段稱為預提交階段,即協調者向參與者發送請求,告訴他們要提交這個事務。如果參與者都具備提交的條件,就返回YES,否則返回NO。如果有一個參與者返回NO,那么協調者就會發出一個撤銷請求,讓所有已經執行過的參與者回滾并釋放資源。相反,如果所有參與者都響應YES,那么就進入第二階段。
第二階段稱為正式提交階段,即協調者向參與者發送提交請求,讓他們真正提交事務。在這個階段,參與者執行提交并釋放資源,如果提交失敗,那么參與者會將已經釋放的資源恢復到請求階段。
BEGIN; // 第一階段 PREPARE TRANSACTION 'xxx'; SELECT * FROM table1; SELECT * FROM table2; ... // 執行預提交 COMMIT PREPARED 'xxx'; // 第二階段 COMMIT;