PostgreSQL의 shared_buffers

2025. 6. 1. 14:40DB/Postgres

반응형

PostgreSQL의 shared_buffers

shared_buffers는 PostgreSQL이 운영체제 메모리(RAM)에서 자체적으로 사용하는 캐시 영역이다. 이 설정값은 PostgreSQL 내부에서 데이터를 캐시하여 디스크 I/O를 줄이고 성능을 높이는 역할을 한다.

하지만 PostgreSQL은 운영체제(OS)의 파일 시스템 캐시(페이지 캐시)를 신뢰하는 설계로 되어 있어, 다른 DBMS에 비해 shared_buffers 설정이 상대적으로 작게 설정되는 것이 일반적이다.


25%와 75%

  • PostgreSQL에서는 shared_buffers를 전체 시스템 메모리의 25% 정도로 설정하는 것이 일반적인 권장사항이다.
    • 예: 시스템 메모리 16GB → shared_buffers = 4GB
  • 나머지 75%는 OS의 페이지 캐시에 맡기도록 설계되어 있다.
    • OS가 디스크에서 읽은 블록을 자체적으로 캐시하기 때문에, PostgreSQL이 모든 메모리를 직접 관리할 필요가 없다.

✅ PostgreSQL이 리눅스의 고성능 파일 캐시 메커니즘을 활용하도록 설계되었기 때문이다.


🆚 다른 DBMS와의 차이점

                                            PostgreSQL Oracle                                      MySQL (InnoDB) 등

메모리 캐시 방식 OS 페이지 캐시 활용 중심 + shared_buffers DBMS 내부 캐시 (SGA, InnoDB buffer pool 등) 중심
권장 shared buffer 비율 RAM의 25% 수준 가능한 한 많이 (가능하면 60~80%까지 설정)
설계 철학 OS와 협업 자체적으로 최대한 관리

✅ 정리

  • PostgreSQL의 shared_buffers는 일반적으로 RAM의 25% 정도로 설정하며,
  • 나머지 75%는 OS 페이지 캐시가 처리하게 설계되어 있음.
  • 이는 다른 DBMS와 PostgreSQL의 메모리 사용 철학 차이에 기인한 것임.

 

반응형