PostgreSQL

[PostgreSQL] PostgreSQL Parameter

bbugge 2021. 1. 11. 12:17

PostgreSQL (v.10.15) 파라미터

# 통계

    - track_activities (Default : on)

각 세션에서 현재 실행 중인 명령의 실행이 시작될 때 해당 명령에 대한 정보 수집을 활성화한다. 슈퍼유저 및 리포트되는 세션의 소유자에게만 표시됨. 슈퍼유저만 이 설정을 변경할 수 있다.

    - track_activity_query_size (Default : 1024)

각각의 활성 세션에 대해 현재 실행 중인 명령을 추적하기 위해 pg_stat_activity.query 필드에 예약된 바이트 수를 지정한다. 이 매개 변수는 서버 시작 시에만 설정 가능하다.

    - track_counts (Default : on)

데이터베이스 작업에 대한 통계 수집을 활성화한다. 슈퍼유저만 이 설정을 변경할 수 있다.

    - track_io_timing (Default : off)

데이터베이스 I/O 호출의 타이밍을 활성화한다. 사용자 시스템에서 타이밍 오버헤드를 측정하기 위해 pg_test_timing 도구를 사용할 수 있다. I/O 타이밍 정보는 BUFFERS 옵션이 사용되는 경우 및 pg_stat_statements에 의해 EXPLAIN 출력에서 pg_stat_database에 표시된다. 슈퍼유저만 이 설정을 변경할 수 있다.

    - track_functions (Default : none)

함수 호출 횟수 및 사용된 시간의 추적을 활성화한다. 이 파라미터의 값을 pl로 설정 시 procedure로 작성된 언어만 추적하며, all로 설정 시 SQL 및 C 언어 함수도 추적한다. 슈퍼유저만 이 설정을 변경할 수 있다.

 + 참고

호출 쿼리에 간단하게 “inlined”되는 SQL 언어 함수는 이 설정과 무관하게 추적되지 않는다. 

    - update_process_title (Default : on)

새 SQL 명령이 서버에서 수신될 때마다 프로세스 제목 업데이트를 활성화한다. 프로세스 제목은 일반적으로 ps 명령으로 보거나 Process Explorer를 사용하여 Windows에서 볼 수 있다. 수퍼유저만 이 설정을 변경할 수 있다.

    - stats_temp_directory (Default : pg_stat_tmp)

임시 통계 데이터를 저장할 디렉터리를 설정한다. 디렉터리에 대한 상대 경로이거나 절대 경로일 수 있다. 이 파라미터를 RAM-based file system으로 설정한다면, 물리적 I/O 요구 사항이 줄어들고 성능 개선으로 이어질 수 있다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다.

 

# 통계 모니터링

    - log_statement_stats (Default : off)

    - log_parser_stats (Default : off)

    - log_planner_stats (Default : off)

    - log_executor_stats (Default : off)


각 쿼리에 대해 각 모듈의 성능 통계를 서버 로그에 출력한다. 이것은 Unix getrusage() 운영 체제 기능과 유사한 대략적인 프로파일링 방법이다. log_statement_stats는 총 문 통계를 리포트하고, 그 외의 것은 모듈별 통계를 알려준다. log_statement_stats는 모듈별 옵션과 함께 활성화될 수 없다. 수퍼유저만 이 설정을 변경할 수 있다.

# 자동 vacuum

    - autovacuum (Default : on)

서버가 autovacuum 런처 데몬을 실행해야 하는지를 제어한다. 기본값은 on이지만, autovacuum이 작동되게 하려면 track_counts도 활성화해야 한다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 
이 매개 변수가 비활성화된 경우 필요시 시스템이 autovacuum 프로세스를 실행하여 트랜잭션 ID 랩어라운드를 방지한다. 

    - log_autovacuum_min_duration (Default : -1) 

최소한 지정된 밀리초 동안 autovacuum에 의해 실행된 각각의 액션이 로깅되게 한다.

0으로 설정하면 모든 autovacuum 액션이 로깅된다.

-1은 autovacuum 액션을 비활성화한다.

250ms로 설정한 경우 250ms 이상 지속되는 모든 자동 vacuums 및 분석이 로깅된다.

또한 이 매개 변수가 -1 이외의 다른 값으로 설정된 경우 잠금 충돌이 존재하여 autovacuum 액션을 건너뛰면 메시지가 로깅된다. 이 매개 변수를 활성화하면 autovacuum 작업을 추적하는 데 도움이 된다. 이 설정은 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정할 수 있다. 

    - autovacuum_max_workers (Default : 3)

한 번에 실행할 수 있는 autovacuum 프로세스(autovacuum 제외)의 최대 수를 지정한다. 이 매개 변수는 서버 시작 시에만 설정 가능하다. 

    - autovacuum_naptime (Default : 60) // 초(sec)단위

주어진 데이터베이스에서 autovacuum 실행 사이의 최소 지연을 지정한다. 각 라운드에서 데몬은 데이터베이스를 검사하고 필요 시 해당 데이터베이스 테이블에 대해 VACUUM 및 ANALYZE 명령을 실행한다. 지연은 초 단위로 측정되며 기본값은 1분이다(1min). 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 

    - autovacuum_vacuum_threshold (Default : 50)

임의의 테이블에서 VACUUM을 트리거하는 데 필요한 업데이트 또는 삭제된 튜플의 최소 수를 지정한다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다. 

    - autovacuum_analyze_threshold (Default : 50)

임의의 테이블에서 ANALYZE을 트리거하는 데 필요한 삽입, 업데이트 또는 삭제된 튜플의 최소 수를 지정한다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다. 

    - autovacuum_vacuum_scale_factor (Default : 0.2) // 테이블 크기의 20%

VACUUM의 트리거 여부를 결정할 때 autovacuum_vacuum_threshold에 추가할 테이블 크기의 부분을 지정한다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다. 

    - autovacuum_analyze_scale_factor (Default : 0.1) // 테이블 크기의 10%

ANALYZE의 트리거 여부를 결정할 때 autovacuum_analyze_threshold에 추가할 테이블 크기의 부분을 지정한다. 이 매개 변수는 postgresqlconf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다. 

    - autovacuum_freeze_max_age (Default : 400000000)

테이블 내 트랜잭션 ID 랩어라운드를 방지하기 위해 VACUUM 명령을 강제로 실행하기 전에 테이블의 pg_class.relfrozenxid 필드가 도달할 수 있는 연령(트랜잭션에서)을 지정한다. autovacuum이 비활성화된 경우에도 시스템은 랩어라운드를 방지하기 위해 autovacuum 프로세스를 실행한다는 점에 유의해야 한다. 
Vacuum은 pg_xact 서브 디렉터리에서 오래된 파일도 제거하는데, 이는 기본값이 2억 트랜잭션으로 상대적으로 낮기 때문이다. 이 매개 변수는 서버 시작 시에만 설정할 수 있지만 저장소 매개 변수를 변경함으로써 개별 테이블에 대한 설정을 줄일 수 있다. 

    - autovacuum_multixact_freeze_max_age (integer)

테이블 내 multixact ID 랩어라운드를 방지하기 위해 VACUUM 명령을 강제하기 전에 테이블의 pg_class.relminmxid 필드가 도달할 수 있는 연령(multixacts에서)을 지정한다. autovacuum이 비활성화된 경우에도 시스템은 랩어라운드를 방지하기 위해 autovacuum 프로세스를 실행한다는 점에 유의해야 한다. 
Vacuuming multixacts는 pg_multixact/members 및 pg_multixact/offsets 서브 디렉터리에서 오래된 파일도 제거하는데, 이는 기본값이 4억 multixacts로 상대적으로 낮기 때문이다. 이 매개 변수는 서버 시작 시에만 설정할 수 있지만 저장소 매개 변수를 변경함으로써 개별 테이블에 대한 설정을 줄일 수 있다. 

    - autovacuum_vacuum_cost_delay (Default : 20)

자동 VACUUM 명령에 사용되는 비용 지연 값을 지정한다.

-1을 지정하면 일반 vacuum_cost_delay 값이 사용된다.

이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다.

 

    - autovacuum_vacuum_cost_limit (Default : -1) // vacuum_cost_limit의 default 200

자동 VACUUM 명령에 사용되는 비용 제한 값을 지정한다. -1을 지정하면 일반 vacuum_cost_limit 값이 사용된다. 실행 중인 autovacuum workers가 하나 이상 있을 경우 각 worker 제한의 합계가 이 변수의 제한값을 초과하지 않도록 값이 비례 분배된다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다.