listen_addresses='*'
어디에서든 접근 가능
log_destination = 'stderr'
Local Path에서 Standard Error Format으로 남겨짐
logging_collector = on
stderr로 전송된 로그 메시지를 캡처해 로그 파일로 리다이렉트 하는 logging collector 백그라운드 프로세스 활성화
wal_level = logical
WAL에 저장되는 데이터의 양이나 수준을 지정하는 설정 streaming replication 을 위해서는 최소 replication
archive_mode = on
wal 아카이브 파일을 만드려면 wal_level 환경 매개 변수 값으로 replica 이상을 지정한 다음 archive_mode on
archive_command = 'dd conv=fdatasync bs=256k if=%p of=/archive/temp_ktidcportal/%f && \\mv -vf /archive/temp %f /archive
해당 파티션으로 먼저 임시 파일 이름으로 복사를 하고, 복사가 끝나면 그 이름을 원래의 이름으로 바꾸는 방식 사용
%p: WAL 파일의 절대 경로, %f: 저장할 로그 파일의 이름
dd의 bs 값은 해당 호스트의 디스크 버퍼와 OS의 디스크 캐시를 가장 잘 활용할 수 있는 값이면 됨. 일반적인 리눅스 환경이면, 256k~512k
true로 설정하면 wal segment는 계속 만들어지지만 아카이빙은 되지 않기 때문에 복구의 필요한 WAL 파일의 체인이 단절되는 현상이 발생 -> 지나간 WAL 파일을 사용할 수 없음
log_min_duration_statement = 2000
설정한 시간 이상이 소요되는 Query들과 그 소요시간을 Log에 남김
log_line_prefix = '%t %u@%r/%d (%p) '
log_destination을 'stderr'로 설정했을 때, 발생하는 Log들의 접두어를 설정할 수 있음
log_statement = 'ddl'
Query 로그를 어느 수준으로 남길지 설정
none(default): Query를 안남김,
ddl: table create나 drop 같이 구조 변경 하는 Query 이상,
mod : data record 단위로 변경을 하는 Query 이상,
all : 모든 Query
shared_preload_libraries = '$libdir/pg_stat_statements,$libdir/auto_explain,$libdir/passwordcheck'
PostgreSQL이 시작될때 로드할 라이브러리를 결정하는 서버 구성 매개 변수
track_functions = all
함수 호출 횟수 및 사용된 시간의 추적을 활성화
pl : procedure로 작성된 언어만 추적,
all: SQL 및 C 언어 함수도 추적
track_activity_query_size = 65536
각각의 활성 세션에 대해 현재 실행 중인 명령을 추적하기 위해 pg_stat_activity_auery 필드에 예약된 바이트 수를 지정함
pg_stat_statements.max = 10000
이 모듈에서 처리할 수 있는 최대 쿼리 수를 지정 pg_stat_statments 뷰에 보일 최대 로우 수를 지정
pg_stat_statements.track = all
수집할 쿼리문의 사용빈도에 따른 쿼리문 사용 통계 정보 수집 범위를 지정
top(default): 자주 사용하는 쿼리를 대상,
all : 모든 쿼리를 대상,
none : 아무 쿼리도 수집하지 않음
auto_explain.log_min_duration = '5min'
쿼리 실행 시간이 해당 밀리초 이상인 경우에 실행 계획을 확인하도록 함 (0으로 지정하면 모든 쿼리를 대상으로 함)
shared_buffers = 4066593kB
데이터베이스에 액세서를 시도하면, 먼저 디스크에서 필요한 데이터를 공유 버퍼로 먼저 읽어들여 데이터를 읽고, 쓰기 처리함
이후, 동일한 데이터 액세스에 대해서는 공유버퍼에서 읽어 들여, 느린 디스크 액세스를 줄여 성능을 확보할 수 있는 기본적인 튜닝
공유 버퍼의 크기는 기본 32M이지만, 대략 서버 메모리 기준으로 1/4~1/2 정도로 할당함
autovacuum_max_workers = 5
한 번에 실행할 수 있는 autovaccum 프로세스의 최대 수를 지정 (default :3)
max_replication_slots = 6
서버가 지원할 수 있는 최대 replication 슬롯 수 (default : 10)
hot_standby = on
standby server에서는 hot_standby가 반드시 on이어야 Read Only로 동작함
max_wal_senders = 6
master server에서 postgresql을 실행하면 생성되는 process들 중에서 WAL 파일을 전송할 수 있는 최대 서버수를 결정하는 항목 (default 0)
log_temp_files = 1024kb
query를 실행할 때 미리 정해진 Memory(Work_mem) 이상을 사용할 때 일부를 temp_file에 저장하게 됨
temp_file 사용에 관련된 log를 남길것인지 여부 설정 (0 이상의 값은 그 크기를 넘는 temp_file 이 사용될 때만 Log를 남김)
너무 큰 Size의 결과값을 가져오는 Query를 파악해서 Tuning 하거나, 'work_mem' 설정을 tuning 할 필요가 있는지 확인할 때 이 값을 사용
max_connections = 204
최대 동시 접속 가능 수
maintenance_work_mem = 512MB
vacuum, create index 및 alter table add foreign key와 같이 유지 보수 작업에서 사용할 최대 메모리 양을 설정
백업 및 복원 시 속도에도 해당 설정의 영향을 받음
기본값은 64MB, 권장값은 서버 메모리의 1/16, work_mem보다 크게 설정 하는 것을 권장
checkpoint_completion_target = 0.9
체크포인트 도중 변경된 버퍼 플러시에 사용된 시간으로 체크포인트 간격의 분수 값
temp_file_limit = 100GB
임시 파일이 증가할 수 있는 최대 크기(KB)를 설정
autovacuum_work_mem = 1815MB
각각의 autovacuum worker 프로세스에서 사용되는 최대 메모리 양을 지정(default 값은 maintenance_work_mem 값을 대신 사용해야 함으로 -1)
max_wal_size = 2GB
pg_wal 디렉토리에 저장되는 WAL 파일들의 총합을 뜻함 (soft limit이라서 약간 초과될 수도 있음)
줄이면 checkpoint가 조금 더 빈번하게 발생
min_wal_size = 2GB
wal을 남겨두는 최소값을 지정
wal 조각 파일들은 더 이상 보관할 필요가 없어지면 지워지는 것이 아니라, 앞으로 사용될 파일로 그 이름을 바꿈
work_mem=256MB
정렬/해시/조인 등의 동작에 사용될 수 있는 메모리 사용량을 의미 이 메모리는 임시 디스크에 데이터를 쓰기전에 사용됨
쿼리 단위가 아니라 정렬 및 해시 작업의 수에 따라 설정
여러 세션이 병렬로 메모리를 사용할 수 있으므로 전체 메모리는 설정한 값의 몇배가 될 수 있음에 주의
work_mem=Total RAM / Max_connections /16
권장값 13MB 정도인데 현재 256MB
'Database & Bigdata > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 보안취약점 D-06 DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정 (1) | 2023.10.17 |
---|---|
[PostgreSQL] Vacuum & Freeze (3) | 2023.01.12 |
[PostgreSQL] WAL 이란 ? / WAL 관련 파라미터 (0) | 2022.07.05 |
[PostgreSQL] Lock & Deadlock (0) | 2022.06.09 |
[PostgreSQL] DB LOG CHECK : ERROR 23505, 22021,57014,21000 / FATAL : 25P03 (0) | 2022.05.26 |
댓글