DB/PostgreSQL

PostgreSQL 디스크 쓰기 지연 관련 설정

검정비니 2025. 1. 5. 22:22
728x90
반응형

PostgreSQL에서는 WAL의 쓰기 동작을 조정하는 몇 가지 매개변수를 통해 유사한 효과를 낼 수 있다.

이 값들을 통해 쓰기 성능을 개선할 수 있다. 단 이러한 설정 시, 재해 등으로 인해 데이터 손실 가능성이 생기게 된다.

 

다음은 관련 설정들이다:

1. wal_writer_delay

  • WAL Writer 프로세스가 디스크로 WAL을 기록하기 전에 대기하는 시간(밀리초)을 설정
  • 기본값: 200ms
  • 더 큰 값을 설정하면 쓰기 빈도가 줄어들어 디스크 I/O 부하를 줄일 수 있다.
  • 설정:
    SET wal_writer_delay = '500ms';
    

2. wal_writer_flush_after

  • WAL Writer가 데이터를 디스크로 flush하기 전에 누적할 수 있는 최대 데이터 양(바이트)을 지정
  • 기본값: 1MB
  • 더 큰 값을 설정하면 더 많은 데이터를 모은 후에 한 번에 기록한다.
  • 설정:
    SET wal_writer_flush_after = '4MB';
    

3. commit_delay

  • 각 트랜잭션 커밋 후 WAL flush를 지연하는 시간을 지정한다(마이크로초).
  • 여러 트랜잭션의 WAL을 묶어서 한 번에 기록하려는 경우 유용하다.
  • 기본값: 0 (지연 없음)
  • 설정:
    SET commit_delay = 500;  -- 500 microseconds
    

4. commit_siblings

  • commit_delay와 함께 사용되며, WAL 쓰기 지연이 적용되기 전에 동시에 활성화된 다른 트랜잭션의 최소 개수를 지정
  • 기본값: 5
  • 설정:
    SET commit_siblings = 10;
    

5. synchronous_commit

  • 트랜잭션 커밋이 WAL flush와 동기화되는지 여부를 제어.
  • 옵션:
    • on: WAL 기록이 디스크에 동기화될 때까지 기다린다(기본값)
    • off: WAL 기록을 비동기적으로 처리
    • local: WAL flush가 로컬에서만 동기화
  • 설정:
    SET synchronous_commit = 'off';
    

 

반응형