티스토리 뷰

development

데이터베이스: 2PL vs. 2PC

주먹불끈 2024. 3. 25. 11:02

 

개요

데이터 중심 애플리케이션 설계를 재독중이다.

2PL, 2PC - 비슷한 듯 다른 용어가 나와 비교 정리를 해둔다.

2PL vs. 2PC

데이터베이스에서 2PL과 2PC는 각각 Two-Phase Locking과 Two-Phase Commit을 의미한다. 두 개념은 데이터의 일관성과 동시성을 관리하는 데 있어 중요한 역할을 하지만, 그 목적과 적용 방식에서는 차이가 있다.

Two-Phase Locking (2PL)

출처: https://faculty.cc.gatech.edu/~jarulraj/courses/8803-s21/slides/13-two-phase-locking.pdf

목적

Two-Phase Locking (2PL)은 하나의 데이터베이스 시스템에서 동시성 제어를 위해 사용되는 프로토콜이다. 2PL의 주 목적은 데이터베이스에서 발생할 수 있는 다양한 동시성 문제(예: lost update, dirty read 등)를 방지하여 데이터의 일관성(consistency)을 유지하는 것이다.

방법

2PL은 직렬성(serialization)을 보장하는 것으로 일관성을 유지해준다. 직렬성이란 하나의 트랜잭션이 끝나고 다른 트랜젹션이 실행되는 것과 같은 결과를 보장하는 것을 말한다. 이를 위해 2PL은 두 단계로 되어있다.

  1. 잠금 단계(Growing Phase): 이 단계에서는 트랜잭션이 필요로 하는 모든 데이터에 대해 잠금을 획득한다. 데이터를 읽거나 쓸 때 해당 데이터에 대한 잠금을 먼저 얻어야 하며, 이는 다른 트랜잭션이 동시에 같은 데이터에 접근하는 것을 방지한다.
  2. 잠금 해제 단계(Shrinking Phase): 트랜잭션이 모든 연산을 마치고 최종적으로 커밋(commit)하거나 롤백(rollback)할 준비가 되면, 획득했던 모든 잠금을 해제한다.

Two-Phase Commit (2PC)

출처: https://www.researchgate.net/figure/The-2-phase-commit-protocol_fig2_267854236

Two-Phase Commit (2PC)은 분산 시스템에서 여러 데이터베이스 또는 시스템 간에 트랜잭션의 원자성(atomicity)을 보장하기 위한 프로토콜이다. 2PC는 모든 참여 시스템이 트랜잭션을 성공적으로 커밋할 수 있을 때만 최종적으로 커밋되도록 보장하여, 분산 시스템 내의 데이터 일관성을 유지한다. 2PC는 두 단계로 진행된다.

  1. 준비 단계(Prepare Phase): 트랜잭션을 관리하는 조정자(coordinator)가 모든 참여자(participants)에게 트랜잭션 커밋 준비를 요청한다. 각 참여자는 트랜잭션을 성공적으로 커밋할 준비가 되었는지 확인한 후, 준비 완료 응답을 조정자에게 보낸다.
  2. 커밋 단계(Commit Phase): 조정자는 모든 참여자로부터 준비 완료 응답을 받으면 모든 참여자에게 트랜잭션을 커밋하라는 명령을 보낸다. 만약 어떤 참여자라도 준비가 되지 않았다면, 조정자는 모든 참여자에게 트랜잭션을 롤백하라는 명령을 보낸다.

비교

목적

  • 2PL: 동시성 제어를 통해 데이터베이스 내에서 데이터의 일관성을 유지하는 것.
  • 2PC: 분산 시스템에서 여러 데이터베이스 또는 컴포넌트 간의 트랜잭션을 일관되게 커밋하거나 롤백하여 원자성을 보장하는 것.

적용 범위

  • 2PL: 단일 데이터베이스 시스템 내에서의 동시성 제어.
  • 2PC: 분산 시스템에서 여러 데이터베이스 또는 컴포넌트 간에 트랜잭션을 조정.

작동 방식

  • 2PL: 데이터에 대한 접근 제어. 잠금 메커니즘.
  • 2PC: 트랜잭션의 모든 참여자가 트랜잭션을 커밋할 준비가 되었는지 확인한 후에만 커밋을 진행. 커밋 과정에서의 조정과 합의.

단점

  • 2PL: 데드락(Deadlock)이 발생할 수 있고, 장시간 잠금을 유지할 경우 시스템의 성능 저하를 일으킬 수 있다.
  • 2PC: 네트워크 지연과 같은 분산 시스템의 문제에 민감한 영향을 받는다.

사용 사례

  • 2PL: 주로 고전적인 관계형 데이터베이스 관리 시스템(RDBMS)에서 트랜잭션 처리를 위해 사용됨.
  • 2PC: 금융 거래, 전자 상거래 플랫폼, 분산 데이터베이스 관리 시스템 등 여러 시스템이 트랜잭션에 참여해야 하는 복잡한 시스템에서 사용됨
반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함