📌 Ubuntu에서 apt-get(Advanced Packaging Tool)을 사용하여 설치한 PostgreSQL 14 버전 기준으로 정리
파라미터 명에 노란색 음영처리는 변경 시 재기동필요
FILE LOCATIONS
Parameter | Default Value | Description |
data_directory | /var/lib/postgresql/14/main | Data Directory 경로 |
external_pid_file | /var/run/postgresql/14-main.pid | postmaster PID 저장 파일 |
hba_file | /etc/postgresql/14/main/pg_hba.conf | hba 설정파일 경로 |
ident_file | /etc/postgresql/14/main/pg_ident.conf | ident 설정파일 경로 |
CONNECTIONS AND AUTHENTICATION
Connection Settings
Parameter | Default Value | Range | Description |
bonjour | off | Bonjour를 통한 서버 광고 활성화 | |
bonjour_name | Bonjour 서비스 이름 설정 | ||
listen_addresses | 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_socket_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 | 0ms | 0~2147483647ms | [14버전추가] 쿼리 실행 동안 연결 상태 확인 시간 간격 |
tcp_keepalives_count | 0 | 0~2147483647 | 최대 TCP 연결 유지 재전송 수 |
tcp_keepalives_idle | 0s | 0~2147483647s | Time between issuing TCP keepalives. |
tcp_keepalives_interval | 0s | 0~2147483647s | Time between TCP keepalive retransmits. |
tcp_user_timeout | 0ms | 0~2147483647ms | TCP User timeout |
Authentication
Parameter | Default Value | Range | Description |
authentication_timeout | 60s | 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 | [14버전추가] 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 | TLSv1, TLSv1.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~1000.0 | Hash Table에 사용할 work_mem의 배수 |
huge_pages | try | on, off, try | huge page 사용 (Linux, Windows 전용) |
huge_page_size | 0 | 0~2147483647kB | [14버전추가] 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 | [14버전추가] 시작 시 예약된 동적 공유 메모리 크기 |
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 | 복구가 진행될 write-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 | 쿼리 충돌을 피할 수 있도록 Hot 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 TUNING
Planner Method Configuration
Parameter | Default Value | Description |
enable_async_append | on | [14버전추가] async append plan 사용 여부 |
enable_bitmapscan | on | bitmap-scan plan 사용 여부 |
enable_gathermerge | on | [14버전추가] gather merge plan 사용 여부 |
enable_hashagg | on | hash aggregation plan 사용 여부 |
enable_hashjoin | on | hash join plan 사용 여부 |
enable_incremental_sort | on | incremental 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으로 해당 정보를 수집합니다. |
'엑셈 경쟁력 > DB 인사이드' 카테고리의 다른 글
DB 인사이드 | PostgreSQL Architecture - 2. Physical Structure (0) | 2022.04.27 |
---|---|
DB 인사이드 | PostgreSQL Architecture - 5. SQL 처리 과정 (6) | 2022.04.27 |
DB 인사이드 | PostgreSQL Architecture - 3. Logical Structure (2) | 2022.04.27 |
DB 인사이드 | PostgreSQL 참고자료 - Configuration File : pg_hba.conf (0) | 2022.03.30 |
DB 인사이드 | PostgreSQL Architecture - 1. Process, Memory (0) | 2022.03.30 |
댓글