Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
웹서버/DB

Two-Phase Commit: 분산 트랜잭션의 원자성 보장 메커니즘

Two-Phase Commit(2PC)는 여러 데이터베이스와 자원에 걸쳐 트랜잭션의 원자성을 보장하는 분산 프로토콜입니다. Prepare 단계에서 모든 참여자의 준비 상태를 확인하고, Commit 단계에서 전체 커밋 또는 롤백을 조정하여 부분 성공 상태를 방지합니다.

2026.10.04  ·  10회  · 

Two-Phase Commit의 기본 원리

Two-Phase Commit(2PC)는 트랜잭션 코디네이터가 여러 자원 관리자(Resource Manager, RM)를 조율하여 분산 트랜잭션의 원자성을 보장하는 프로토콜입니다. 이 프로토콜은 X/Open 그룹에서 제정한 XA 표준에 정의되어 있으며, 모든 참여자가 동일한 결정(커밋 또는 롤백)에 도달하도록 강제합니다.

Prepare 단계(투표 단계)

코디네이터는 모든 참여자에게 준비 요청을 전송합니다. 각 참여자는 자신의 트랜잭션을 안정 저장소(non-volatile storage)에 기록하고, 커밋 가능 여부를 YES 또는 NO로 투표합니다. 참여자가 YES로 투표하면 해당 자원은 잠금 상태로 유지되며, 커밋 명령이 도착할 때까지 대기합니다.

Commit 단계(결정 단계)

코디네이터는 모든 참여자의 투표를 수집합니다. 모든 참여자가 YES로 투표한 경우 전역 커밋을 결정하고 모든 참여자에게 커밋 명령을 전송합니다. 단 하나의 참여자라도 NO로 투표했다면 전역 롤백을 결정하고 모든 참여자에게 롤백을 지시합니다. 이 메커니즘은 데이터의 일관성을 보장하며 부분적 업데이트 상황을 완전히 제거합니다.

실무 주의사항: 블로킹 위험과 복구 프로토콜

2PC의 가장 중요한 실무 이슈는 Prepare 단계에서 코디네이터 또는 참여자의 장애 발생 시 자원이 무한정 잠긴다는 것입니다. 이를 해결하기 위해 안정 저장소 로깅(logging)과 복구 프로토콜이 필수적입니다. 코디네이터는 결정을 내리기 전에 반드시 자신의 로그에 기록해야 하며, 장애 이후 복구 시 이 로그를 통해 미완료 트랜잭션을 재개할 수 있습니다. 또한 타임아웃 메커니즘을 구현하여 응답 없는 참여자는 자동으로 롤백하도록 설계하는 것이 권장됩니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원