TWO-PHASE COMMIT


1. Two-Phase Commit 이란?

(1) Two-Phase Commit은 Application Programmer가 별도의 Program없이 Global Database의 Integrity를 보장하는 기법이다.

(2) Two-Phase Commit 은 분산 환경 Database (DB link)를 사용하는 경우에 사용된다. 이는 Oracle V7.0이후 Version에서 제공된다.

 

2. Two-Phase Commit의 구성

– Two-Phase Commit은 Prepare Phase와 Commit Phase로 나누어 진다.

(1) Prepare Phase

Global Coordinator(분산 Transaction을 일으킨 Node)가 분산 Transaction에 참석한 Node들에 대해 Commit이나 Rollback을 수행해도 되는가를 확인하는단계이다.

 

(2) Commit Phase

분산 Transaction에 참여한 Node가 Global Coordinator에게 분산 Commit해도좋다는 Response(즉 Prepare 되었음)를 받고 Transaction을 Commit한다. 어떠한 Node라도 Prepare가 안되었다는 Response가 있으면 Transaction을Rollback한다.

 

3. Two-Phase Commit의 수행

(1) Prepare Phase에 대한 Response는 Prepared, Read-Only, Abort가 있다.

A. Prepared는 Data가 정상적으로 수정되었으며 Prepare되었음을 의미한다.

B. Read-Only 는 해당Node에 Data의 수정이 없었다는 의미이다.

C. Abort는 Prepare되지 않았음을 의미한다.

 

(2) 모든 Node에서 Prepared가 되면 Commit Phase가 수행된다.

그러나 한 Node라도 Abort되면 Commit Phase에서 전 Node에 Rollback을 수행한다.


Comments

comments

haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다