[PostgreSQL] PostgreSQL postgresql.conf 파일 정보

참고


목적

  • PostgreSQL 튜닝 옵션을 설정할 수 있는 파일인 postgresql.conf 파일 내용에 대하여 조사 및 정리 진행합니다.

CONNECTIONS AND AUTHENTICATION

Connection Settings

Parameter Default Value Range Description
bonjour off Bonjour를 통한 서버 광고 활성화
bonjour_name Bonjour 서비스 이름 설정
listen_address localhost Listen할 host-name 또는 IP 주소
* => 사용 가능한 모든 IP
0.0.0.0 => IPv4 주소 수신 허용
:: => IPv6 주소 수신 허용
max_connections 1~262143 최대 동시 연결 수
port 5432 1~65535 서버가 수신하는 TCP Port 설정
superuser_reserved_connections 3 0~262143 Superuser 로 예약된 연결 슬롯 수
unix_socket_directories /var/run/postgresql Unix 도메인 소켓이 생성될 디렉터리
unix_socker_group Unix 도메인 소켓의 소유 그룹 설정
unix_socket_permissions 파라미터와 같이 사용 하여 액세서 제어 설정 가능
unix_socket_permissions 0777 Unix 도메인 소켓의 액세스 권한 설정
0777 => 모든 접속
0770 => 사용자 및 그룹만 접속 (unix_socket_group 참조)
0700 => 사용자만 접속

TCP settings

Parameter Default Value Range Description
client_connection_check_interval 0 ms 0~2147483647 ms [14 버전 추가]쿼리 실행 동안 연결 상태 확인 시간 간격
tcp_keepalives_count 0 0~2147483647 최대 TCP 연결 유지 재전송 수
tcp_keepalives_idle 0 s 0~2147483647 s Time between issuing TCP keepalives.
tcp_keepalives_interval 0 s 0~2147483647 s Time between TCP keepalive retransmits.
tcp_user_timeout 0 ms 0~2147483647 ms TCP User timeout

Authentication

Parameter Default Value Range Description
authentication_timeout 60 s 1~600s 클라이언트 인증을 완료하는데 허용되는 최대 시간
db_user_namespace off DB별 사용자 이름 활성화
krb_caseins_users off Kerberos, GSSAPI 사용자 이름을 대소문자 구분할지 여부
krb_server_keyfile FILE:/etc/postgresql-common/krb5.keytab Kerberos 서버 키 파일의 위치
password_encryption scram-sha-256 scram-sha-256 md5 [14버전 Default 변경] 비밀번호 암호화 알고리즘 선택

SSL

Parameter Default Value Range Description
ssl on SSL 연결 활성화
ssl_ca_file SSL 인증 기관 파일의 위치
ssl_cert_file /etc/ssl/certs/ssl-cert-snakeoil.pem SSL 서버 인증서 파일 위치
ssl_ciphers HIGH:MEDIUM:+3DES:!aNULL 허용된 SSL 암호 목록 설정
ssl_crl_dir SSL 인증서 해지 목록 디렉터리 위치
ssl_crl_file SSL 인증서 해지 목록 파일 위치
ssl_dh_params_file SSL DH 파라미터 파일 위치
ssl_ecdh_curve prime256v1 ECDH에 사용할 곡선 설정
ssl_key_file /etc/ssl/private/ssl-cert-snakeoil.key SSL 서버 개인 키 파일 위치
ssl_max_protocol_version TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 사용할 최대 SSL/TLS 프로토콜 버전 설정
ssl_min_protocol_version TLSv1.2 v1.1, TLSv1.2, TLSv1.3 사용할 최소 SSL/TLS 프로토콜 버전 설정
ssl_passphrase_command SSL 암호를 가져오는 명령어
ssl_passphrase_command_supports_reload off 서버 reload 동안 ssl_passphrase_command 사용 여부
ssl_prefer_server_ciphers on 서버의 SSL 암호 기본 설정을 사용할지 여부

RESOURCE USAGE (except WAL)

Memory

Parameter Default Value Range Description
autovacuum_work_mem -1 -1~2147483647kB autovacuum worker에서 사용할 최대 메모리 크기
-1의 경우 maintenance_work_mem 값을 사용
dead tuple 식별자 수집의 경우 autovacuum은 최대 1GB의 메모리만 사용할 수 있으므로 autovacuum_work_mem을 이 값 이상으로 설정하면 autovacuum이 테이블을 검색하는 동안 수집할 수 있는 dead tuple 수에 영향을 미치지 않습니다.
dynamic_shared_memory_type posix posix, sysv, windows, mmap 사용된 동적 공유 메모리 구현 선택
hash_mem_multiplier 1.0 1~10000.0 Hash Table 에 사용할 work_mem의 배수
huge_pages try on, off, try huge page 사용 (Linux, Windows 전용)
huge_page_size 0 0~2147483647kB huge page 크기
logical_decoding_work_mem 65536 (64MB) 64(1MB)~ 2147483647kB Logical decoding에 사용할 최대 메모리 크기
maintenance_work_mem 65536 (64MB) 1024(1MB)~ 2147493647kB 유지 관리 작업에 사용할 최대 메모리 크기
VACUUM , CREATE INDEX 및 ALTER TABLE ADD FOREIGN KEY 와 같은 유지 관리 작업에서 사용할 최대 메모리 양을 지정합니다.
데이터베이스 세션은 이러한 작업 중 하나만 실행할 수 있으며 설치 시 일반적으로 많은 작업이 동시에 실행되지 않으므로 work_mem보다 이 값을 훨씬 크게 설정하는 것이 안전합니다.
autovacuum 시 autovacuum_max_workers 만큼의 배수까지 할당될 수 있으므로 설정에 주의가 필요합니다.
min_dynamic_shared_memory 0MB 0~2147483647MB 시작 시 예약된 동적 공유 메모리 크기
max_prepared_transactions 0 0~252143 동시에 준비된 트랜잭션의 최대 수
max_stack_depth 100kB 100~2147483647kB 최대 stack 깊이(KB)
shared_buffers 1024 (8MB) 16 (128kB)~ 1073741823 (8589934584kB) 서버에서 사용하는 공유 메모리 버퍼의 수(메모리 양)를 설정합니다.
128KB 이상이어야 하며, 일반적으로 좋은 성능을 위해서는 최소값보다는 훨씬 높은 설정이 필요합니다.
이 값은 서버 시작시에만 설정할 수 있습니다.
1GB 이상의 RAM이 있는 전용 데이터베이스 서버가 있는 경우 shared_buffer의 합리적인 시작 값은 시스템 메모리의 25%입니다.
shared_memory_type mmap mmap, sysv, windows Main 공유 메모리 영역에 사용되는 공유 메모리 구현 선택
temp_buffers 1024 (8MB) 100 (800kB)~ 1073741823 (8589934584kB) • 각 세션에서 사용하는 임시 버퍼의 최대 수(메모리 양)를 설정합니다.
임시 테이블에 대한 액세스에만 사용되는 세션 로컬 버퍼입니다.
개별 세션 내에서 변경할 수 있지만 세션 내에서 임시 테이블을 처음 사용하기 전에만 변경할 수 있습니다.(이후 시도는 해당 세션에 영향을 미치지 않습니다.)
work_mem 4096kB 64~2147483647kB 쿼리 작업 공간에 사용할 최대 메모리를 설정합니다.
임시 디스크 파일에 쓰기 전에 쿼리 작업(ex. 정렬 또는 해시 테이블)에서 사용할 최대 메모리 양을 설정합니다.
복잡한 쿼리의 경우 여러 정렬 또는 해시 작업이 병렬로 실행될 수 있으므로 사용된 총 메모리는 값의 work_mem 값의 여러 배가 될 수 있습니다.

Disk

Parameter Default Value Range Description
temp_file_limit -1 -1~2147483647kB 각 프로세스에서 사용하는 모든 임시 파일의 총 크기를 제한합니다.
프로세스가 임시 파일(ex. 정렬 및 해시 임시파일 또는 보유한 커서의 저장 파일)에 사용할 수 있는 최대 디스크 공간을 지정하며, 이 크기를 초과하는 트랜잭션은 취소됩니다.
PostgreSQL 프로세스에서 사용하는 모든 임시 파일이 사용하는 전체 공간을 제한하며, 슈퍼유저만 이 설정을 변경할 수 있습니다.
쿼리 실행에서 백그라운드에서 사용되는 임시 파일과 달리 명시적 임시 테이블에서 사용되는 디스크 공간은 이 제한에 포함되지 않습니다.

Kernel Resources

Parameter Default Value Range Description
max_files_per_process 1000 64~2147483647 각 서버 프로세스에서 동시에 열 수 있는 최대 파일 수

Cost-Based Vacuum Delay

Parameter Default Value Range Description
vacuum_cost_delay 0 0~100 ms Vacuum 작업에 사용될 cost 지연 값을 지정합니다.0 ⇒ disable
vacuum_cost_limit 200 1~10000 Vacuum을 절전 모드로 전환하는 비용
vacuum_cost_page_dirty 20 0~10000 dirty page를 flush 하는데 필요한 I/O 비용
vacuum_cost_page_hit 1 0~10000 Vacuum을 위해 buffer cache 를 탐색하는 비용
vacuum_cost_page_miss 2 0~10000 Vacuum을 위해 disk를 탐색하는 비용

Background Writer

Parameter Default Value Range Description
bgwriter_delay 200ms 10ms~10000ms bgwriter 수행 주기를 나타냅니다.
bgwriter_lru_maxpages만큼의 dirty pages를 정리한 후 sleep하는 시간입니다.
bgwriter_flush_after 64 (512kB) 0~256(2MB) 이전에 수행된 쓰기가 디스크에 flush된 후 page 수
0 ⇒ disable
bgwriter_lru_maxpages 100 0 ~1073741823 한번 write시 디스크로 내릴 수 있는 최대 buffer page 수를 나타냅니다.
0으로 설정하면 checkpoint activity를 제외한 background 쓰기가 비활성화됩니다.
bgwriter_lru_multiplier 2.0 0.0~10.0 최근 수행에 필요했던 buffer 양 기반으로 각 주기에 디스크에 저장하는 buffer의 양을 예측합니다.(필요 buffer 양의 평균에 bgwriter_lru_multiplier를 곱해서 계산합니다.)
bgwriter_lru_maxpages 및 bgwriter_lru_multiplier 값이 작을수록 bgwriter로 인한 추가 I/O가 줄어들지만 서버 프로세스가 자체적으로 쓰기를 실행해야 할 가능성이 높아져 interactive queries가 지연됩니다.

Asynchronous Behavior

Parameter Default Value Range Description
backend_flush_after 0kB 0~256(2MB) 이전에 수행된 쓰기가 디스크에 flush된 후 page 수
0 ⇒ disable
effective_io_concurrency 1 0~1000 Disk subsystem에서 효율적으로 처리할 수 있는 동시 요청 수
0 => disable
maintenance_io_concurrency 10 0~1000 유지 보수 작업에 사용되는 effective_io_concurrency의 변형
0 ⇒ disable
max_parallel_maintenance_workers 2 0~1024 유지 관리 작업당 최대 병렬 프로세스 수
max_parallel_workers 8 0~1024 한번에 활성화할 수 있는 최대 병렬 작업자 수
max_parallel_workers_per_gather 2 0~1024 Executor 노드 당 최대 병렬 프로세스 수
max_worker_processes 8 0~262143 최대 동시 작업 프로세스 수
old_snapshot_threshold -1 -1~ 86400min(60d) Snapshot을 만든 후 변경된 페이지를 읽을 수 없을 때까지의 시간
-1 ⇒ disable, 0 ⇒ immeidate
parallel_leader_participation on Gather나 Gather Merge도 하위 계획을 실행할지 여부

WRITE-AHEAD LOG

Settings

Parameter Default Value Range Description
commit_delay 0 0~100000ms 트랜잭션 commit과 Disk에 WAL flush 사이의 지연시간
commit_siblings 5 1~1000 commit_delay를 수행하기 전에 열려 있는 최소 동시 트랜잭션 수
fsync on Disk에 update를 강제로 동기화
full_page_writes on Checkpoint 후 처음 수정할 때 전체 페이지를 WAL에 쓸지 여부
synchronous_commit on local, remote_write, remote_apply, on, off 현재 트랜잭션의 동기화 수준 설정
commit 수행시 WAL 레코드를 디스크로 저장했다는 의미의 "success" 리턴여부를 설정합니다.
off 인 경우 실제 트랜잭션이 안정하게 반영된 시점까지 delay가 존재합니다.(최대 delay는 wal_writer_delay의 3배입니다.)
DB성능이 중요하다면 off 권장
wal_buffers -1 -1~262143 (2097144kB) Disk에 아직 기록되지 않은 WAL 데이터에 사용되는 공유 메모리 양 WAL에 대한 공유 메모리의 Disk-page buffer 수 설정 -1 ⇒ shared_buffers로 설정 • 값이 클 수록, 클라이언트가 한 번에 커밋하는 사용량이 많은 서버에서 쓰기 성능이 향상됨
wal_compression off WAL 파일에 기록된 전체 페이지 쓰기를 압축할지 여부
wal_init_zero on 처음 사용하기 전에 새로운 WAL 파일에 0을 기록할지 여부
wal_level replica minimal, replica, logical WAL에 기록되는 정보의 수준 설정
wal_log_hints off 중요하지 않은 수정에도 Checkpoint 후 처음 수정할 때 전체 페이지를 WAL에 쓸지 여부
wal_recycle on WAL 파일의 이름을 변경하여 재활용 할지 여부
wal_skip_threshold 2048(2MB) 0~2147483647kB WAL을 쓰는 대신 fsync할 새로운 파일의 최소 크기(wal_level=minimal 일 경우)
wal_sync_method fdatasync open_datasync, fdatasync, fsync, open_sync Disk에 WAL 업데이트를 강제로 적용하는 데 사용되는 Method 설정
wal_writer_delay 200ms 1ms ~ 10000ms(10s) WAL Writer에서 WAL Flush를 수행하는 간격
wal writer 기록 간 sleep 시간를 의미하며, sleep delay의 효율적인 설정은 10ms 입니다.
wal_writer_delay를 10의 배수가 아닌 값으로 설정하면 다음으로 높은 10의 배수로 설정하는 것과 동일합니다.
wal_writer_flush_after 128(1MB) 0 ~ 2147283647 (17179869176kB) Flush를 유발하는 WAL Writer가 기록한 WAL의 양
0 ⇒ disable

Checkpoints

Parameter Default Value Range Description
checkpoint_completion_target 0.9 0 ~ 1 checkpoint 중 dirty buffer는 기간을 나눠서 write하는데, 그 기간을 설정하는 파라미터입니다.
0.5인 경우, 다음 checkpoint가 시작되기 전 시간의 약 절반이 지난 후 각 checkpoint를 완료하는 것으로 예상합니다.
checkpoint_flush_after 32 (256kB) 0 ~ 256(2MB) 이전에 수행된 write에 대해 디스크로 flush 된 page 수 입니다.
checkpoint를 수행하는 동안 해당 파라미터 값보다 많은 데이터가 기록될때마다 OS는 기본 스토리지에 쓰기를 실행해야 합니다.
커널의 page cache에 있는 dirty 데이터의 양이 제한되어 fsync가 checkpoint 끝에서 실행되거나 OS가 백그라운드에서 더 큰 배치로 데이터를 다시 쓸때 멈출 가능성이 감소합니다.
checkpoint_timeout 300s 30~86400s(1day) 자동 WAL checkpoint 간의 최대 시간
checkpoint_warning 30s 0 ~ 2147483647s checkpoint 사이의 임계값을 구성하는 파라미터입니다.
checkpoint가 해당 파라미터 값에 가깝게 발생할 경우, 시스템이 서버 로그에 경고하여 사용자가 max_wal_size를 늘릴 것을 권장합니다.
max_wal_size 1024MB 2 ~ 2147483647MB checkpoint가 발생하는 최대 WAL 사이즈입니다.
min_wal_size 80MB 2 ~ 2147483647MB checkpoint가 발생하는 최소 WAL 사이즈입니다. 해당 크기 아래로 유지되는 한 오래된 WAL 파일은 제거되지 않고 체크포인트에서 향후 사용을 위해 항상 재활용됩니다.

Archiving

Parameter Default Value Range Description
archive_command WAL파일을 아카이브하기 위해 설정한 명령어입니다.
%p : 아카이브 파일의 경로 이름
%f : 아카이브 파일명• WAL 세그먼트 파일이 아카이브되면 archive_command에서 지정한 명령이 실행됩니다. 보관 명령이 0을 리턴하면 PostgreSQL은 파일이 성공적으로 아카이브된 것으로 간주한 다음 WAL 세그먼트 파일을 삭제하거나 재활용합니다. 0이 아닌 다른값이 리턴되면 성공할때까지 주기적으로 재시도를 합니다.
archive_mode off always, on, off archive_command를 사용하여 WAL파일을 보관할지 설정 가능합니다.
always로 설정하면 아카이브 복구 또는 대기 모드에서도 Archiver가 활성화됩니다.
archive_timeout 0s 0 ~ 1073741823s 서버가 주기적으로 새 WAL 세그먼트 파일로 전환하도록 하는 파라미터
해당 파라미터의 값만큼의 시간(N초)이 초과되면 WAL 세그먼트 파일이 강제로 전환됩니다.
강제스위치로 인해 일찍 닫히는 아카이브 파일의 길이는 전체 파일과 동일하기 때문에 너무 짧은 시간으로 설정하면 아카이브 스토리지가 사용량이 급증할 수 있습니다.(일반적으로 1분을 권장하며 디스크 공간과 대기시간을 고려하여 설정합니다.

Archive Recovery

Parameter Default Value Range Description
archive_cleanup_command 재시작 지점에 실행될 쉘 명령 설정
recovery_end_command 복구가 끝날 때 한번 실행될 쉘 명령 설정
restore_command 보관된 WAL 파일을 검색하기 위해 호출할 수레 명령 설정

Recovery Target

Parameter Default Value Range Description
recovery_target 일관된 상태에 도달하는 즉시 복구를 종료하려면 “immediate”로 설정
recovery_target_action pause pause, promote, shutdown 복구 대상에 도달할 떄 수행할 작업 설정
recovery_target_inclusive on 복구 대상과의 트랜잭션을 포함할지 제외할지 여부
recovery_target_lsn 복구가 진행될 wirte-ahead 로그 위치의 LSN을 설정
recovery_target_name 복구가 진행될 지정된 복원 지점 설정
recovery_target_time 복구가 진행될 최대 timestamp 설정
recovery_target_timeline latest current,latest 복구할 시간대 지정
recovery_target_xid 복구가 진행될 트랜잭션 ID 설정

REPLICATION

Sending Servers

Parameter Default Value Range Description
max_replication_slots 10 0~262143 동시에 정의된 최대 복제 슬롯 수
max_slot_wal_keep_size -1 -1~2147483647MB 복제 슬롯으로 예약하 수 있는 최대 WAL 크기
-1 ⇒ disable
max_wal_senders 10 0~262143 동시에 실행되는 WAL 송신자 프로세스의 최대 수
track_commit_timestamp off 트랜잭션 Commit 시간 수집여부
wal_keep_size 0 0~2147483647MB Standby 서버에 대해 유지되는 WAL 파일의 크기
0 ⇒ disable
wal_sender_timeout 60000ms (1min) 0~2147483647ms WAL 복제를 대기할 최대 시간

0 ⇒ disable

Primary Server (under 13 : Master Server)

Parameter Default Value Range Description
synchronous_standby_names 동기 Standby 수와 잠재적인 동기 Standby 이름 목록
vacuum_defer_cleanup_age 0 0~1000000 Vacuum과 HOT Cleanup을 연기해야 하는 트랜잭션 수

Standby Servers

Parameter Default Value Range Description
hot_standby on on, off 복구 중에 연결 및 쿼리 허용 여부
hot_standby_feedback off 쿼리 충돌을 피할 수 있도록 Host standby 에서 Primary 로 피드백 허용 여부
max_standby_archive_delay 30000ms -1~2147483647ms Hot standby 서버가 보관된 WAL 데이터 처리시 쿼리를 취소하기 전 최대 지연 시간
max_standby_streaming_delay 30000ms -1~2147483647ms Hot standby 서버가 스트리밍된 WAL 데이터 처리시 쿼리를 취소하기 전 최대 지연시간
primary_conninfo Sending Server에 연결하는 데 사용할 연결 문자열 설정
primary_slot_name Sending Server에서 사용할 복제 슬롯 이름 설정
promote_trigger_file 대기 상태에서 복구가 끝나는 파일 이름 설정
recovery_min_apply_delay 0ms 0~2147483647ms 복구 중 변경 사항을 적용하기 위한 최소 지연 시간
wal_receiver_create_temp_slot off 영구적인 슬롯이 구성되지 않은 경우, WAL Receiver가 임시 복제 슬롯 생성 여부
wal_receiver_status_interval 10s 0~2147483s WAL Receiver 상태 보고서를 Sending Server에 전달하는 최대 시간 간격
0 ⇒ disable
wal_receiver_timeout 60000ms 0~2147483647ms Seding Server에서 데이터를 수신하기 위한 최대 대기 시간
0 ⇒ disable
wal_retrieve_retry_interval 5000ms 1~2147483647ms 실패한 시도 후 WAL 검색을 다시 시도하기까지 대기 시간

Subscribers

Parameter Default Value Range Description
max_logical_replication_workers 4 0~262143 논리적 복제 작업 프로세스의 최대 수
max_sync_workers_per_subscription 2 0~262143 Subscription 당 테이블 동기화 작업자의 최대 수

QUERY TUNNING

Planner Method Configuration

Parameter Default Value Description
enable_async_append on async append plan 사용 여부
enable_bitmapscan on bitmap-scan plan 사용 여부
enable_gathermerge on gather merge plan 사용 여부
enable_hashagg on hash aggregation plan 사용 여부
enable_hashjoin on hash join plan 사용 여부
enable_incremental_sort on increment sort plan 사용 여부
enable_indexscan on index scan plan 사용 여부
enable_indexonlyscan on index-only-scan plan 사용 여부
enable_material on materialization plan 사용 여부
enable_memoize on [14버전추가] memoization plan 사용 여부
enable_mergejoin on merge join plan 사용 여부
enable_nestloop on nested-loop join plan 사용 여부
enable_parallel_append on parallel append plan 사용 여부
enable_parallel_hash on parallel hash plan 사용 여부
enable_partition_pruning on plan-time과 execution-time partition pruning 사용 여부
enable_partitionwise_join off partitionwise join 사용 여부
enable_partitionwise_aggregate off partitionwise aggregation과 grouping 사용 여부
enable_seqscan on sequential-scan plan 사용 여부
enable_sort on 명시적 sort plan 사용 여부
enable_tidscan on TID scan plan 사용 여부

Planner Cost Constants

Parameter Default Value Range Description
cpu_index_tuple_cost 0.005 0~1.79769e+308 Index Scan 동안 각 Index 항목을 처리하는 비용에 대한 추정치
cpu_operator_cost 0.0025 0~1.79769e+308 각 연산자나 함수 호출을 처리하는 비용에 대한 추정치
cpu_tuple_cost 0.01 0~1.79769e+308 각 tuple(row)를 처리하는 비용에 대한 추정치
effective_cache_size 524288 (4GB) 1(8kB)~2147483647(17179869176kB) Data cache의 총 크기에 대한 가정(assumption)
jit_above_cost 100000 -1~1.79769e+308 지정값 보다 쿼리 비용이 더 많이 발생할 경우 JIT 컴파일 수행
-1 ⇒ disable
jit_inline_above_cost 500000 -1~1.79769e+308 지정값 보다 쿼리 비용이 더 많이 발생할 경우 JIT inlining 수행
-1 ⇒ disable
jit_optimize_above_cost 500000 -1~1.79769e+308 지정값 보다 쿼리 비용이 더 많이 발생할 경우 JIT 컴파일 함수를 최적화
-1 ⇒ disable
min_parallel_index_scan_size 64(512kB) 0~715827882 (5726623056kB) parallel scan을 위한 인덱스 데이터 최소 양
min_parallel_table_scan_size 1024(8MB) 0~715827882 (5726623056kB) parallel scan을 위한 테이블 데이터 최소 양
parallel_setup_cost 1000.0 0~1.79769e+308 paralle query를 위한 작업 프로세스 시작 비용에 대한 추정치
parallel_tuple_cost 0.1 0~1.79769e+308 각 tuple(row)를 worker에서 leader backend로 전달하는 비용에 대한 추정치
random_page_cost 4.0 0~1.79769e+308 순차적으로 읽지 않은 Disk page 비용에 대한 추정치
seq_page_cost 1.0 0~1.79769e+308 순차적으로 읽은 Disk page 비용에 대한 추정치

Genetic QUery Optimizer

Parameter Default Value Range Description
geqo on genetic query optimization 활성화 여부
geqo_effort 5 1~10 다른 GEQO 파라미터에 대한 기본값을 설정하는데 사용
geqo_generations 0 0~2147483647 알고리즘의 반복 횟수
geqo_pool_size 0 0~2147483647 집단의 개체 수
geqo_seed 0.0 0.0~1.0 seed for random path selection
geqo_selection_bias 2.0 1.5~2.0 집단 내에 선택압력(selective pressure)
geqo_threshold 12 2~2147483647 GEQO가 사용되는 FROM 항목의 임계값

Other Planner Options

Parameter Default Value Range Description
constraint_exclusion partition on, off, partition 제약조건을 사용하여 쿼리 최적화 할지 여부
• on : 모든 테이블 제약 조건 검사
cursor_tuple_fraction 0.1 0.0~1.0 검색한 cursor’s rows의 비율 추정치
default_statistics_target 100 1~10000 기본 통계 대상 설정
• 값이 클수록 Analyze를 수행하는 시간은 늘지만, 예상 값을 향상 됨
from_collapse_limit 8 1~2147483647 subquery가 축소(collapsed)되지 않는 FROM 목록의 크기
jit on JIT 컴파일 사용 여부
join_collapse_limit 8 1~2147483647 JOIN 구성이 평명화 되지 않는 FROM 목록의 크기
1 ⇒ disable
plan_cache_mode auto auto, force_generic_plan, force_custom_plan 사용자 또는 일반 Plan 선택을 제어

REPORTING AND LOGGING

Where to Log

Parameter Default Value Range Description
event_source PostgreSQL 이벤트 로그에서 메시지 식별자 키워드(Windows용)
log_destination stderr stderr, csvlog, syslog, eventlog • 서버 로그 출력 대상을 설정합니다.
• PostgreSQL은 stderr, csvlog 및 syslog를 포함하여 서버 메시지를 기록하는 여러 방법을 지원합니다. (Windows에서는 이벤트 로그도 지원됩니다.)
log_diretory log logging_collector 활성화인 경우 로그 파일의 디렉토리를 결정합니다.
log_file_mode 0600 로그 파일에 권한
log_filename postgresql-%Y-%m-%d_%H%M%S.log 로그 파일 이름 패턴
logging_collector off stderr 또는 csvlog로 전송된 로그 메시지를 파일로 캡처하는 하위 프로세스 시작여부를 결정하는 파라미터입니다.
log_rotation_age 1440min (1d) 0~35791394min 설정값(기간) 후 로그파일 순환
0 ⇒ disable
log_rotation_size 10240kB (10MB) 0~2097151kB 설정값(크기) 후 로그파일 순환
0 ⇒ disable
log_truncate_on_rotation off 로그파일 순환 중 동일 이름의 로그 삭제여부
syslog_facility local0 local0~7 syslog 설정 시 syslog “facility” 설정
syslog_ident postgres syslog에서 메시지 식별자 키워드
syslog_sequence_numbers on 중복 방지를 위해 syslog 메시지에 시퀀스 번호 추가여부
syslog_split_messages on syslog를 줄별로 나누고 1024byte에 분할 할지 여부

When to Log

Parameter Default Value Range Description
log_min_duration_sample -1ms -1~2147483647ms 문장 샘플이 기록되는 최소 실행 시간.
샘플링은 log_statement_sample_rate에 의해 결정
-1 ⇒ disable , 0 ⇒ all
log_min_duration_statement -1ms -1~2147483647ms 모든 문장이 기록되는 최소 실행 시간
-1 ⇒ disable, 0 ⇒ all
log_min_error_statement error debug1~5, info, notice, warning, error, log, fatal, panic 설정된 레벨 이상에서 오류를 유발하는 모든 문장 기록
log_min_messages warning debug1~5, info, notice, warning, error, log, fatal, panic 기록되는 메시지 레벨 설정
log_statement_sample_rate 1.0 0.0~1.0 실행시간이 log_min_duration_sample을 초과하는 문장을 기록하기 위한 비율
0 ⇒ disable, 1 ⇒ all, 0.5 ⇒ 둘 중 하나만 기록
log_transaction_sample_rate 0.0 0.0~1.0 모든 문장을 기록할 트랜잭션의 비율
0 ⇒ disable, 1 ⇒ all

What to Log

Parameter Default Value Range Description
debug_pretty_print on 들여쓰기 구문 분석 및 plan 트리 표시 여부
debug_print_parse off 각 쿼리의 구문 분석 트리 기록 여부
debug_print_plan off 각 쿼리의 실행계획 기록 여부
debug_print_rewritten off 각 쿼리의 재작성된 구문 분석 트리 기록 여부
log_autovacuum_min_duration -1ms -1~2147483647ms [14버전추가]
• autovacuum 작업을 로그에 기록할 최소 실행시간을 설정합니다.
• log_autovacuum_min_duration를 초과하여 실행되는 경우 로그에 incident로 기록되므로 autovauum 작업 확인에 도움이 되는 파라미터입니다.
• -1 : autovauum 작업에 대하여 로그 비활성화
• 0 : 모든 autovauum 작업에 대하여 로그 기록
log_checkpoints off 각 Checkpoint 기록 여부
log_connections off 성공한 Connection 로그 기록 여부
log_disconnections off 세션 종료 로그 기록(지속시간 포함) 여부
log_duration off 완료된 SQL 문장의 지속시간 기록 여부
log_error_verbosity default terse, default, verbose 기록된 메시지의 상세 내용 설정
log_hostname off Connection 로그에 host-name 기록 여부
log_line_prefix %m [%p] %q%u@%d 각 로그 줄에 붙는 접두사 설정
log_lock_waits off Long lock wait 시간 기록 여부
log_parameter_max_length -1 -1~1073741823B 문장을 기록할때, 기록된 파라미터 값을 처음 설정값(Byte)로 제한
0 ⇒ disable, -1 ⇒ full
log_parameter_max_length_on_error 0 -1~1073741823B 오류 보고 시, 기록된 파라미터 값을 처음 설정값(Byte)로 제한
0 ⇒ disable, -1 ⇒ full
log_recovery_conflict_waits off [14버전추가] Recovery conflicts에 대해 시작 프로세스가 deadlock_timeout 보다 오래 대기 할 때 메시지를 생성할지 여부
log_replication_commands off 각 복제 명령어 기록 여부
log_statement none none, ddl, mod, all 기록되는 문장의 유형 설정
log_temp_files -1kB -1~2147493647kB 설정 값보다 큰 임시 파일의 사용하여 기록
-1 ⇒ disable, 0 ⇒ all
log_timezone Etc/UTC

PROCESS TITLE

Parameter Default Value Range Description
cluster_name 14/main 프로세스에 포함된 클러스터의 이름 설정
update_process_title on Active SQL 명령문을 표시하도록 프로세스 제목 업데이트 여부

STATISTICS

Query and Index Statistics Collector

Parameter Default Value Range Description
stats_temp_directory /var/run/postgresql/14-main.pg_stat_tmp • 통계정보를 위한 임시 저장 경로를 나타냅니다.(상대 또는 절대 경로)
• 이 파일은 초당 수백번 업데이트되기 때문에 RAM 기반의 파일 시스템으로 설정하면 물리적 IO 요구사항을 줄여서 성능을 향상시킬 수 있습니다.
• 서버가 완전히 종료되면 통계 데이터의 복사본이 pg_stat 하위 디렉토리에 영구적으로 저장되므로 서버를 다시 시작해도 통계는 유지됩니다.
track_activities on • 세션에 대한 통계정보 수집 기능을 사용할지 여부를 나타냅니다.(수퍼유저만 설정 변경 가능)
• 각 세션의 현재 실행 중인 command에 대한 정보와 실행 시작 시간을 수집합니다.
• 수퍼유저 및 세션을 소유한 사용자만 해당 정보를 확인할 수 있습니다.
track_activity_query_size 1024B 100~1048576B • 각 active session에서 현재 실행된 command(pg_stat_activity.query)를 수집에 사용되는 바이트 수를 설정합니다.
• pg_stat_activity, pg_stat_statements 에서 쿼리를 잘라내기 위한 임계치로 사용합니다.
track_counts on • 테이블 및 인덱스 액세스에 대한 통계 수집여부를 설정합니다.(수퍼유저만 설정 변경 가능)
• autovacuum 프로세스에서 이 통계정보를 활용해서 vacuum을 수행하므로 기본적으로 설정 on으로 해당 정보를 수집합니다.
track_functions none none, pl, all • 사용자 정의 function에 대한 통계 정보 수집 파라미터입니다.(수퍼유저만 설정 변경 가능)
• function 호출 횟수와 사용시간 등의 정보를 수집합니다.
• pl : procedure로 작성된 언어 function만 수집
• all : 모든 SQL 및 C언어 function도 수집
• none : 비활성화
track_io_timing off • 데이터베이스 I/O 활동에 대한 타이밍 통계 수집 기능을 사용할지 여부를 나타냅니다.(수퍼유저만 설정 변경 가능)
• on으로 설정하면 데이터베이스 시간이 반복적으로 호출되어 데이터베이스에 많은 오버헤드가 추가되기 때문에 기본값은 off입니다.(pg_test_timing 도구를 사용하여 타이밍 오버헤드를 측정할 수 있습니다.)
track_wal_io_timing off [14버전추가] WAL I/O 활동에 대한 시간통계 수집 여부

Monitoring

Parameter Default Value Range Description
compute_query_id auto auto, on, off [14버전추가] 쿼리 식별자 계산
log_executor_stats off Executor 성능 통계를 서버 로그에 기록할지 여부
log_parser_stats off Parser 성능 통계를 서버 로그에 기록할지 여부
log_planner_stats off Planner 성능 통계를 서버 로그에 기록할지 여부
log_statement_stats off 서버 로그에 누적 성능 통계를 기록할지 여부

AUTOVACUUM

Parameter Default Value Range Description
autovacuum on • autovacuum subprocess(autovacuum launcher daemon)를 시작할지 설정합니다.(해당 파라미터의 default 값은 on이지만 autovauum를 작동하려면 track_counts도 활성화해야 합니다.)
• off 로 설정해도 필요한 경우 시스템이 autovauum 프로세스를 시작합니다.
• table storage 파라미터를 변경하여 개별 테이블에 대해 autovacuum 기능을 사용하지 않도록 설정할 수 있습니다.
autovacuum_analyze_scale_factor 0.1 0.0~100.0 ANALYZE 트리거 여부를 결정할 때, autovacuum_analyze_threshold에 추가할 테이블 크기의 비율
autovacuum_analyze_threshold 50 0~2147483647 ANALYZE 트리거하는데 필요한 insert, update, delete tuple의 최소 수
autovacuum_freeze_max_age 200000000 100000~2000000000 • autovacuum 이 강제로 실행되어야 하는 트랜잭션ID의 상한값을 설정합니다.(table storage 파라미터를 변경하여 개별 테이블에 대해 설정을 줄일 수 있습니다.)
• autovacuum이 비활성화된 경우에도 해당 값을 초과하면 autovacuum 프로세스를 시작합니다.
autovacuum_max_workers 3 1~262143 • 한번에 실행할 수 있는 autovacuum worker 프로세스의 최대 수를 설정합니다.
• autovacuum worker 프로세스는 개별로 cpu, memory, I/O를 사용합니다.
autovacuum_multixact_freeze_max_age 400000000 10000~2000000000 테이블 내에서 multixact ID wraparound를 방지하기 위해 vacuum이 강제 실행되기 전 테이블의 pg_class.relminmxid 필드가 도달할 수 있는 최대 수
autovacuum_naptime 60s 1~2147483s • autovacuum 실행 사이의 sleep time 을 지정합니다.
• 주기마다 deamon이 데이터베이스를 확인해서 VACUUM & ANALYZE가 필요한 경우 해당 command를 실행합니다.
autovacuum_vacuum_cost_delay 2ms -1~100ms • autovacuum 작업에 사용될 cost 지연 값을 지정합니다.(-1이며 vacuum_cost_delay 값을 대신 사용)
• autovacuum_vacuum_cost_limit 값을 초과하면 autovacuum_vacuum_cost_delay 설정만큼의 지연이 발생합니다.
autovacuum_vacuum_cost_limit -1 -1~10000 • autovacuum 작업에 사용될 비용 제한 값을 지정합니다.(-1이면 vacuum_cost_limit 값을 대신 사용)
• autovacuum workers 간에 비례적으로 분배되므로 각 worker 프로세스에 대한 limit 의 합계가 이 파라미터 값을 초과하지 않습니다.
autovacuum_vacuum_insert_scale_factor 0.2 0.0~100.0 Vacuum을 트리거할지 여부를 결정할때 autovacuum_vacuum_insert_threshold에 추가할 테이블 크기의 비율
autovacuum_vacuum_insert_threshold 1000 -1~2147483647 VACUUM을 트리거하는 데 필요한 insert tuple의 수
-1 ⇒ disable (insert 기반으로 vacuum을 트리거 하지 않음)
autovacuum_vacuum_scale_factor 0.2 0~100 • autovacuum 이전에 업데이트 또는 삭제된 tuple 의 수(retuple 비율)
• default는 0.2로 테이블 크기의 20%를 초과하는 경우 VACUUM 트리거를 실행합니다.
autovacuum_vacuum_threshold 50 0~2147483647 autovacuum 이전에 업데이트 또는 삭제할 tuple 수의 임계값을 나타냅니다.(이 값을 초과할 경우 autovauum/analyze를 각각 수행해야 합니다.)

CLIENT CONNECTION DEFAULTS

Statement Behavior

Parameter Default Value Range Description
bytea_output hex hex, escape bytea type에 대한 출력 형식 설정
check_function_bodies on CREATE FUNCTION, CREATE PROCEDURE 동안 본문 문자열의 유효성 검사 여부
client_min_messages notice debug1~5, log, notice, warning, error 클라이언트에 전송되는 메시지 레벨
default_table_access_method heap 새로운 테이블에 대한 기본 테이블 액세스 방법을 설정
default_tablespace 테이블과 인덱스를 생성할 기본 테이블스페이스 설정
NULL = default
default_toast_compression pglz pglz, lz4 [14버전추가] 데이터 압축 방법 (13버전까지는 pglz만 지원)
lz4 압축방법을 사용하기 위해서는 PostgreSQL을 --with-lz4로 빌드해야 함
default_transaction_deferrable off 새로운 트랜잭션의 default defferrable 상태 설정
default_transaction_isolation read committed serializable, repeatable read, read committed, read uncommitted 새로운 트랜잭션의 트랜잭션 분리 수준 설정
default_transaction_read_only off 새로운 트랜잭션의 기본 읽기 전용 상태 설정
gin_pending_list_limit 4096kB 64~2147493647kB GIN 인덱스에 대한 보류 중인 목록의 최대 크기
idle_in_transaction_session_timeout 0ms 0~2147493647ms 트랜잭션 중 쿼리 사이에 허용되는 최대 idle 시간
0 ⇒ disable
idle_session_timeout 0ms 0~2147493647ms [14버전추가] 트랜잭션 중이지 않을때, 쿼리 사이에 허용되는 최대 idle 시간
0 ⇒ disable
lock_timeout 0ms 0~2147483647ms Lock 대기의 최대 허용 시간
0 ⇒ disable
row_security on Row security 사용 여부
search_path "$user", public 스키마가 지정되지 않은 단순 이름으로 Object를 참조할 때 스키마가 검색되는 순서
session_replication_role origin origin, replica, local 트리거 및 재작성 규칙에 대한 세션 동작 설정
statement_timeout 0ms 0~2147493647ms 문장의 최대 허용 기간 설정
0 ⇒ disable
temp_tablespaces Temp table과 sort file에 사용할 테이블스페이스 설정
vacuum_failsafe_age 1600000000 0~2100000000 [14버전추가] vacuum이 시스템 전체의 트랜잭션ID wraparound 실패를 피하기 위해 특별한 조치를 취하기 전에 테이블의 pg_class.relfrozenxid 필드가 도달할 수 있는 Age
vacuum_freeze_min_age 50000000 0~1000000000 Vacuum이 table row를 freeze해야 하는 최소 Age
vacuum_freeze_table_age 150000000 0~2000000000 Vacuum이 tuple을 고정하기 위해 전체 테이블을 스캔해야 하는 Age
vacuum_multixact_failsafe_age 1600000000 0~2100000000 [14버전추가] vacuum이 시스템 전체의 multixact ID wraparound 실패를 피하기 위해 특별한 조치를 취하기 전에 테이블의 pg_class.relminmxid필드가 도달할 수 있는 Age
vacuum_multixact_freeze_min_age 5000000 0~1000000000 Vacuum이 table row에서 MultiXactID를 freeze해야 하는 최소 Age
vacuum_multixact_freeze_table_age 150000000 0~2000000000 Vacuum이 tuple을 고정하기 위해 전체 테이블을 스캔해야 하는 Multixact Age
xmlbinary base64 base64, hex binary 값을 XML로 인코딩하는 방법 설정
xmloption content content, document 암시적 구문 분석 및 직렬화 작업의 XML 데이터를 문서 또는 콘텐츠 조각으로 간주할지 여부

Locale and Formatting

Parameter Default Value Range Description
client_encoding sql_ascii 클라이언트의 문자 집합 인코딩 설정
datestyle iso, mdy 날짜와 시간 값의 표시 형식 설정
default_text_search_config pg_catalog.english 기본 텍스트 검색 구성 설정
extra_float_digits 1 -15~3 부동 소수점으로 표시되는 자릿수 설정
intervalstyle postgres postgres, postgres_verbose, sql-standard, iso_8601 Interval Value의 표시 형식 설정
lc_messages en_US.UTF-8 메시지가 표시되는 언어 설정
lc_monetary C 화폐 금액의 형식 설정
lc_numeric en_US.UTF-8 숫자 형식 설정
lc_time en_US.UTF-8 날짜와 시간 형식 설정
timezone GMT Timestamp를 표시하고 해석하기 위한 시간대 설정
timezone_abbreviations Default 시간대 약어파일 선택

Shared Library Preloading

Parameter Default Value Range Description
jit_provider llvmjit 사용하고자 하는 JIT Provider
local_preload_libraries 각 backend에서 미리 로드할 권한이 없는 공유 라이브러리 나열
session_preload_libraries 각 backend에 미리 로드할 공유라이브러리 나열
shared_preload_libraries 서버에 미리 로드할 공유 라이브러리 나열

Other Defaults

Parameter Default Value Range Description
dynamic_library_path $libdir 동적으로 로드할 수 있는 모듈의 경로
extension_destdir extension 로드를 위해 추가할 경로
gin_fuzzy_search_limit 0 0~2147483647 GIN에 의한 정확한 검색을 위해 허용되는 최대 결과 설정

LOCK MANAGEMENT

Parameter Default Value Range Description
deadlock_timeout 1000ms 1~2147483647ms deadlock 상태를 확인하기 전 Lock 대기하는 시간
max_locks_per_transaction 64 10~2147483647 트랜잭션당 최대 Lock 수
max_locks_per_transaction * (max_connections + max_prepared_transactions)
max_pred_locks_per_page 2 0~2147483647 Page당 predicate-locked tuple 최대 수
max_pred_locks_per_relation -2 -2147483648~2147483647 Relation당 predicate-locked page 와 tuple의 최대 수
0≤ ⇒ 제한 값, 0> ⇒ max_pred_locks_per_transaction / abs(설정값)
max_pred_locks_per_transaction 64 10~2147483647 트랜잭션당 최대 Predicate Lock 수
max_pred_locks_per_transaction * (max_connections + max_prepared_transactions)

VERSION AND PLATFORM COMPATIBILITY

Previous PostgreSQL Versions

Parameter Default Value Range Description
array_nulls on 배열에서 NULL 요소 입력 활성화 여부
backslash_quote safe_encoding on, off, safe_encoding 문자열 Literal에서 “\” 허용 여부
escape_string_warning on 일반 문자열 Literal에서 ”\”에 대한 경고 여부.
on ⇒ Literal에 표시, standard_conforming_strings=off 경우 경고 발생
lo_compat_privileges off 큰 Object에 대한 권한 검사를 위해 이전 버전과의 호환성 모드 활성화 여부
quote_all_identifiers off SQL 조각을 만들때, 모든 식별자를 인용할지 여부
standard_conforming_strings on ‘...’ 문자열이 “\”를 문자 그대로 처리하도록 할지 여부
synchronize_seqscans on 동기화된 sequential scan 활성화 여부

Other Platforms and Clients

Parameter Default Value Range Description
transform_null_equals off “expr=NULL”을 “expr IS NULL”로 처리 할지 여부

ERROR HANDLING

Parameter Default Value Range Description
data_sync_retry off 데이터 파일 동기화 실패 후 계속 실행할지 여부
exit_on_error off 오류 발생 시 세션 종료 여부
recovery_init_sync_method fsync fsync, syncfs [14버전추가] Crash Recovery전에 데이터 디렉토리를 동기화하는 방법 설정
restart_after_crash on Backend crash 후 서버 초기화 할지 여부

Vacuum Series

Parameter Default Value Range Description
autovacuum ON • autovacuum subprocess(autovacuum launcher daemon)를 시작할지 설정합니다.(해당 파라미터의 default 값은 on이지만 autovauum를 작동하려면 track_counts도 활성화해야 합니다.) • off 로 설정해도 필요한 경우 시스템이 autovauum 프로세스를 시작합니다.
• table storage 파라미터를 변경하여 개별 테이블에 대해 autovacuum 기능을 사용하지 않도록 설정할 수 있습니다.
autovacuum_freeze_max_age 200,000,000 -1~2,147,483,647 • autovacuum 이 강제로 실행되어야 하는 트랜잭션ID의 상한값을 설정합니다.(table storage 파라미터를 변경하여 개별 테이블에 대해 설정을 줄일 수 있습니다.)
• autovacuum이 비활성화된 경우에도 해당 값을 초과하면 autovacuum 프로세스를 시작합니다.
autovacuum_max_workers 3 1~262,143 • 한번에 실행할 수 있는 autovacuum worker 프로세스의 최대 수 를 설정합니다.
• autovacuum worker 프로세스는 개별로 cpu, memory, I/O를 사용합니다.
autovacuum_naptime 60s 1~2,147,483s • autovacuum 실행 사이의 sleep time 을 지정합니다.
• 주기마다 deamon이 데이터베이스를 확인해서 VACUUM & ANALYZE가 필요한 경우 해당 command를 실행합니다.
autovacuum_vacuum_insert_scale_factor 0.2 0~100.0 Vacuum을 트리거할지 여부를 결정할때 autovacuum_vacuum_insert_threshold에 추가할 테이블 크기의 비율
autovacuum_vacuum_insert_threshold 10,000 -1~2,147,483,647 VACUUM을 트리거하는 데 필요한 insert tuple의 수 -1 ⇒ disable (insert 기반으로 vacuum을 트리거 하지 않음)
autovacuum_vacuum_scale_factor 0.2 0~100.0 • autovacuum 이전에 업데이트 또는 삭제된 tuple 의 수(retuple 비율)
• default는 0.2로 테이블 크기의 20%를 초과하는 경우 VACUUM 트리거를 실행합니다.
autovacuum_vacuum_threshold 50 0~2,147,483,647 autovacuum 이전에 업데이트 또는 삭제할 tuple 수의 임계값을 나타냅니다.(이 값을 초과할 경우 autovauum/analyze를 각각 수행해야 합니다.)
vacuum_freeze_min_age 50,000,000 0~1,000,000,000 Vacuum이 table row를 freeze해야 하는 최소 Age
vacuum_freeze_table_age 150,000,000 0~2,000,000,000 Vacuum이 tuple을 고정하기 위해 전체 테이블을 스캔해야 하는 Age
track_counts ON • 테이블 및 인덱스 액세스에 대한 통계 수집여부를 설정합니다.(수퍼유저만 설정 변경 가능)
• autovacuum 프로세스에서 이 통계정보를 활용해서 vacuum을 수행하므로 기본적으로 설정 on으로 해당 정보를 수집합니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY