[PostgreSQL] PostgreSQL postgresql.conf 파일 정보
- Database(데이터베이스)
- 2022. 6. 24. 00:06
참고
목적
- 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
'Database(데이터베이스)' 카테고리의 다른 글
[PostgreSQL] PostgreSQL Docker-Compose TimeZone 설정 (0) | 2022.06.24 |
---|---|
[PostgreSQL] PostgreSQL 시간 설정 (0) | 2022.06.24 |
[PostgreSQL] PgTune 이란? (0) | 2022.06.23 |
[PostgreSQL] pgAgent Job Scheduler 에 VACUUM 등록 테스트 (0) | 2022.06.23 |
[PostgreSQL] Autovacuum 최적화 (0) | 2022.06.23 |
이 글을 공유하기