Postgresql 기본 파라미터 변경

Ja L·2024년 4월 1일
0

[PostgreSQL] Operation

목록 보기
33/39

PostgreSQL을 처음 설치하고 설정해야하는 기본 파라미터에 대해 설명하겠습니다.

처음 설정하는 매개 변수는 1.메모리(버퍼)관련, 2.체크포인트 관련, 3.서버 로그 관련 변수입니다. 순차적으로 소개하겠습니다.

Memory(buffer) 관련 매개 변수

우선 메모리(버퍼)관련 매개 변수입니다. 메모리 관련 매개 변수는 크게 두 가지가 있습니다.

DBMS 에서 Disk I/O를 줄이는 것이 곧 성능 효율을 올릴 수 있는 가장 기본적인 방법입니다. 따라서 데이터를 버퍼링 할 메모리 영역을 적절하게 설정하는 것은 중요하고 기본적인 과정이라고 할 수 있습니다.

1. Shared Buffers

Shared_buffers는 기본적으로 32MB로 되어있습니다. 저는 해당 서버가 DB 서버로만 이용한다는 가정 하에 전체 메모리에 40% 정도로 설정합니다.

2. Wal Buffers

Wal Buffers는 트랜잭션 로그(WAL) 파일을 디스크에 써낼 때 버퍼링되는 메모리 영역입니다. Wal Buffers는 신뢰성을 보장하는 트랜잭션 로그이며 손실된 데이터 복원에 아주 중요한 역할을 합니다.
기본적으로 Shared Buffers의 1/32 크기로 설정합니다.

3. Work Mem

work mem은 각 세션의 정렬 또는 해시 조인 작업에 사용되는 메모리 양을 제어하는 매개 변수입니다. 각 세션 별 배정하는 메모리의 크기이기 때문에 max_connection 매개 변수를 고려하여 설정해야합니다. max_connection의 기본값은 100입니다.

저는 주로 아래와 같은 기준으로 설정합니다.

서버전체메모리 60% ~ 80% = (shared_buffer) + (max_connection * work_mem)

Checkpoint 관련 매개 변수

체크포인트는 공유 버퍼의 내용을 일괄적으로 디스크에 적습니다. Checkpoint는 공유 버퍼의 내용을 디스크에 저장되었음을 보장합니다. 이러한 과정은 너무 늦게되면 장애가 일어났을 경우 데이터가 유실될 위험에 놓이며, 너무 빈번하게 설정할 경우 데이터베이스의 성능이 저하될 수 있습니다.
따라서 Checkpoint 관련 매개변수는 '체크포인트를 얼마나 빈번하게 발생시킬 것인가'에 관련한 설정입니다.

체크포인트 발생 조건은 아래와 같습니다.
1. 이전 Checkpoint 발생 이후 checkpoint_timeout(5분)의 시간이 지난 경우
2. WAL 파일의 크기가 max_wal_size를 초과하는 경우
3. smart 또는 fast 모드로 Database Server를 종료하는 경우
4. pg_basebackup 또는 pg_start_backup으로 백업을 시작하는 경우
5. super 유저에 의해서 checkpoint Command를 실행하는 경우

1. Checkpoint_segments

디스크에 아직 기록되지 않은 공유 버퍼의 '페이지'를 디스크에 기록하는 설정입니다. 기본값은 3 segments이므로, 3*16MB 즉 48MB가 쌓이면 디스크에 기록한다는 의미입니다. 이 수치는 DB를 운영하여 시스템 상황과 통계치를 근거로 설정하는 것이 좋으며, Disk I/O를 줄여 성능향상에 도움이 됩니다.

2. Checkpoint_timeout

이 매개 변수는 시간을 기준으로 Checkpoint를 발생시키는 매개 변수입니다.

Server Log 관련 매개 변수

1. Logging_Collector

logging collector를 'on'으로 설정하여 log를 저장할 수 있도록 합니다.

2. Log_directory

기본값은 'log'입니다. PG 데이터 클러스터 내 log 디렉토리가 생성됩니다.

3. Log_filename

'agensql-%Y-%m-%d.log'으로 년월일 기준으로 구분하여 로그를 관리합니다. 로그 파일은 2번 Log_direcrtory 내에 저장됩니다.

profile
DB Engineer

0개의 댓글

관련 채용 정보