피드로 돌아가기
Durability
Dev.toDev.to
Database

Durability

PostgreSQL이 Write-Ahead Logging(WAL)을 통해 트랜잭션 커밋 후 시스템 장애 발생 시에도 데이터 손실 방지

Jarvish John2026년 3월 25일5beginner

Context

트랜잭션 실행 중 시스템 장애가 발생할 경우 메모리에만 존재하는 임시 변경사항이 손실될 수 있으며, 커밋 후 장애 발생 시에도 데이터 복구를 보장해야 한다.

Technical Solution

  • Write-Ahead Logging(WAL) 도입: 변경사항을 디스크에 기록한 후 실제 적용 수행
  • 트랜잭션 래핑: BEGIN과 COMMIT으로 여러 UPDATE 작업을 원자적 단위로 묶음
  • 커밋 전 실패 시 처리: 커밋되지 않은 변경사항은 전혀 저장되지 않음
  • 커밋 후 실패 시 처리: 로그를 통해 커밋된 상태를 복구하여 데이터 손실 방지

Key Takeaway

Durability는 트랜잭션 커밋 후 변경사항이 메모리가 아닌 디스크에 영구적으로 저장되어야 한다는 원칙이며, Write-Ahead Logging은 시스템 장애 상황에서도 커밋된 데이터의 안전성을 보장하는 핵심 메커니즘이다.


데이터 손실이 허용되지 않는 금융·거래 시스템에서 여러 테이블의 업데이트를 수행할 때 BEGIN-COMMIT 트랜잭션으로 묶고, PostgreSQL의 Write-Ahead Logging이 활성화되어 있는지 확인하면 예기치 않은 시스템 장애 후에도 커밋된 모든 변경사항을 완벽하게 복구할 수 있다.

원문 읽기
Durability | Devpick