2PL (Two-Phase Locking) vs 2PC (Two-Phase Commit)
1. 2PL (Two-Phase Locking) - 2단계 잠금
목적 : 트랜잭션의 일관성과 직렬 가능성(Serializability) 보장
동작방식 : 트랜젝션이 자원(데이터)에 접근할때 락을 걸고 트랜젝션이 완료될 때까지 락을 유지
단계 락 획득(확장) → 락 해제(축소)
장점:
• 직렬 가능성 보장: 트랜잭션 간의 충돌을 방지하여 데이터 일관성 유지
단점:
• 교착 상태(Deadlock) 발생 가능성: 트랜잭션이 서로의 락을 기다리며 멈추는 상황 발생
• 성능 저하: 락으로 인한 병목 현상
2. 2PC (Two-Phase Commit) - 2단계 커밋
목적 : 분산 트랜잭션 환경에서 원자성(Atomicity) 보장
여러 노드(데이터베이스) 간의 트랜잭션이 모두 성공하거나 모두 실패하도록 하는 프로토콜
동작방식 : Coordinator(조정자)와 여러 Participant(참여자) 간의 두 단계 절차로 진행
단계 준비(Prepare) → 커밋/롤백(Commit/Rollback)
장점:
• 원자성 보장: 모든 노드가 동일한 상태로 유지됨
• 데이터 일관성 유지: 분산 환경에서도 데이터 불일치 방지
단점:
• Coordinator 장애 시 문제 발생: 장애 복구가 복잡
• 성능 저하: 네트워크 지연, 트랜잭션 대기 시간 증가
• 2PL은 데이터베이스 트랜잭션의 동시성 제어에 초점을 맞춘 기술
주로 단일 데이터베이스 환경에서 사용
• 2PC는 분산 환경에서 트랜잭션의 원자성을 보장하는 프로토콜
여러 데이터베이스 간의 트랜잭션 일관성을 유지할 때 사용
둘 다 데이터 일관성을 유지하기 위한 방법이지만, 적용되는 환경과 중점이 다름