PostgreSQL 내부 동작 이해: Write 작업과 WAL, Shared Buffer, Checkpoint

Jung Junkyo·2025년 1월 26일

PostgreSQL은 write 작업에 대해 어떻게 내부적으로 처리할까?
WAL 파일은 무엇이고, 언제 데이터 파일로 반영될까?

위와 같은 궁금즘에서 시작된 질문에 대한 답을 풀어나가기 위해 PostgreSQL의 내부 동작을 단계적으로 살펴보았다.

1. Write 작업의 기본 흐름

  1. 클라이언트의 데이터 변경 요청
  • INSERT, UPDATE, DELETE 등 데이터 변경 쿼리를 실행하면 PostgreSQL은 데이터를 처리할 준비를 합니다.
  1. 데이터가 shared_buffer에 기록
  • PostgreSQL은 데이터를 바로 디스크에 쓰지 않고 shared_buffer(메모리 공간)에 우선 기록합니다. 이는 디스크 I/O를 줄이고 성능을 향상시키기 위한 메커니즘입니다.
  1. WAL에 변경 내용 기록
  • 변경된 데이터는 shared_buffer에 기록되는 동시에 WAL(Write-Ahead Log)에도 기록됩니다.

  • WAL은 트랜잭션의 변경 내용을 순차적으로 저장하여 장애 발생 시 복구를 가능하게 합니다.

  1. 트랜잭션 Commit
  • 클라이언트가 COMMIT을 실행하면 PostgreSQL은 WAL에 기록된 내용을 디스크에 플러시(flush)하여 트랜잭션이 안전하게 완료되었음을 보장합니다.
  1. 데이터 파일 반영 (Checkpoint)
  • PostgreSQL은 특정 시점에 Checkpoint를 실행하여 shared_buffer의 내용을 실제 디스크의 데이터 파일에 기록합니다.
profile
DB Specialist를 향해 끊임없이 탐구하고, 배움의 과정을 기록하는 DBA의 기술 노트

0개의 댓글