Skip to content
VDS · 데이터베이스

티어에 맞춘 데이터베이스 메모리 설정

VDS-1…VDS-6용 PostgreSQL과 MySQL의 구체적인 버퍼 값, 그리고 데이터베이스, 애플리케이션, 시스템 간 메모리 분배 규칙을 설명해요.

업데이트 2026년 8월 23일

기본 데이터베이스 설정은 어디서든 시작할 수 있도록 설계된 것이지, 빠르게 동작하도록 설계된 것이 아닙니다. 메모리 8GB의 VDS-3에서 PostgreSQL은 기본 설정으로 캐시에 128MB를 사용합니다. 즉, 메모리에서 읽을 수 있음에도 불구하고 거의 모든 것을 디스크에서 읽습니다.

메모리 할당 규칙

티어의 메모리를 대략 다음과 같이 나눕니다.

  • 시스템 및 서비스 프로세스 — 10–15%;
  • 애플리케이션(PHP-FPM, Node, gunicorn) — 워커 수에 따라;
  • 데이터베이스 — 남은 전부, 단 전체 메모리의 60–70%를 넘지 않도록.

데이터베이스에 메모리를 전부 주지 마세요. 시스템이 스왑에 들어가고, NVMe도 도움이 되지 않습니다. 지연 시간이 수십 배로 늘어납니다.

현재 사용 중인 양:

free -h
ps -eo pmem,rss,comm --sort=-rss | head

1시간, 1일, 1주, 1개월의 메모리 그래프는 제어판 /hosting/vds/m/<id>의 "개요"에서 볼 수 있습니다. 현재 순간이 아니라 실제 피크를 보여줍니다.

PostgreSQL

/etc/postgresql/17/main/postgresql.conf:

티어shared_bufferseffective_cache_sizework_memmaintenance_work_memmax_connections
VDS-1 (2 GB)384MB1GB8MB96MB40
VDS-2 (4 GB)1GB2GB12MB256MB60
VDS-3 (8 GB)2GB5GB16MB512MB100
VDS-4 (16 GB)4GB10GB24MB1GB150
VDS-5 (24 GB)6GB16GB32MB2GB200
VDS-6 (32 GB)8GB22GB48MB2GB250

추가로 일반적인 NVMe 설정입니다.

random_page_cost = 1.1
effective_io_concurrency = 200

work_mem은 연결당이 아니라 정렬 작업당 할당됩니다. 복잡한 정렬을 수행하는 병렬 쿼리 100개가 있으면 이 값이 수백 배로 늘어납니다. 너무 높게 설정하지 마세요.

적용: systemctl restart postgresql (shared_buffers를 변경하려면 반드시 재시작해야 합니다).

MySQL 및 MariaDB

티어innodb_buffer_pool_sizeinnodb_log_file_sizemax_connections
VDS-1512M128M60
VDS-21G256M100
VDS-33G512M150
VDS-48G1G200
VDS-512G1G250
VDS-618G2G300
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 2000

버퍼 풀이 핵심 파라미터입니다. 작업 데이터 세트가 여기에 들어가면 디스크를 거의 읽지 않습니다.

효과 확인

SELECT sum(blks_hit)*100/sum(blks_hit+blks_read) FROM pg_stat_database;

MySQL의 경우 SHOW ENGINE INNODB STATUS와 Innodb_buffer_pool_reads 대 Innodb_buffer_pool_read_requests의 비율을 확인하세요. 캐시 적중률이 95% 미만이면 데이터베이스에 메모리가 부족한 것입니다.

흔한 실수

증상원인
수정 후 데이터베이스가 시작되지 않음사용 가능한 것보다 많은 메모리를 요청함 — journal을 확인하세요
프로세스가 OOM으로 종료됨데이터베이스, 애플리케이션, 시스템의 합계가 티어의 메모리를 초과함
"최적화" 후 느려짐work_mem이 너무 높게 설정되어 머신이 스왑 중임
디스크를 계속 읽음버퍼가 너무 작아 작업 세트가 들어가지 않음

메모리를 튜닝한 후에도 여전히 한계에 부딪힌다면, 문제는 설정이 아니라 데이터의 양입니다. 유료 기간의 남은 일수에 대해 일할 계산한 결제로 플랜을 업그레이드하는 것만 가능하며, 다운그레이드는 제공되지 않으니 다음 티어를 신중하게 선택하세요.