19.10. 자동 Vacuuming

이 설정은 autovacuum 기능의 동작을 제어한다. 자세한 내용은 24.1.6절을 참조 바란다. 이 설정들의 대부분은 각 테이블 별로 각각 설정할 수도 있다; 스토리지 매개 변수 참조.

autovacuum (boolean)

서버가 autovacuum 런처 데몬을 실행해야 하는지를 제어한다. 기본값은 on이지만, autovacuum이 작동되게 하려면 track_counts도 활성화해야 한다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다.

이 매개 변수가 비활성화된 경우 필요시 시스템이 autovacuum 프로세스를 실행하여 트랜잭션 ID 랩어라운드를 방지한다. 자세한 내용은 24.1.5절을 참조 바란다.

log_autovacuum_min_duration (integer)

지정된 시간 보다 더 걸린 autovacuum에 의해 실행된 각각의 액션이 로깅되게 한다. 0으로 설정하면 모든 autovacuum 액션이 로깅된다. -1 (기본값)은 autovacuum 로그 남기기를 비활성화한다. 설정값에 단위를 지정하지 않으면 밀리세컨드로 간주한다. 예를 들면, 이것을 250ms로 설정한 경우 250ms 이상 지속되는 모든 자동 vacuums 및 분석이 로깅된다. 또한 이 매개 변수가 -1 이외의 다른 값으로 설정된 경우 잠금 충돌이나, 같은 작업 시간에 테이블 삭제 작업이 있는 경우 autovacuum 액션을 건너뛰면 메시지가 로깅된다. 이 매개 변수를 활성화하면 autovacuum 작업을 추적하는 데 도움이 된다. 이 설정은 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정할 수 있다.

autovacuum_max_workers (integer)

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

autovacuum_naptime (integer)

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

autovacuum_vacuum_threshold (integer)

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

autovacuum_vacuum_insert_threshold (integer)

Specifies the number of inserted tuples needed to trigger a VACUUM in any one table. The default is 1000 tuples. If -1 is specified, autovacuum will not trigger a VACUUM operation on any tables based on the number of inserts. This parameter can only be set in the postgresql.conf file or on the server command line; but the setting can be overridden for individual tables by changing table storage parameters.

autovacuum_analyze_threshold (integer)

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

autovacuum_vacuum_scale_factor (floating point)

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

autovacuum_vacuum_insert_scale_factor (floating point)

Specifies a fraction of the table size to add to autovacuum_vacuum_insert_threshold when deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size). This parameter can only be set in the postgresql.conf file or on the server command line; but the setting can be overridden for individual tables by changing table storage parameters.

autovacuum_analyze_scale_factor (floating point)

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

autovacuum_freeze_max_age (integer)

테이블 내 트랜잭션 ID 랩어라운드를 방지하기 위해 VACUUM 명령을 강제로 실행하기 전에 테이블의 pg_class.relfrozenxid 필드가 도달할 수 있는 연령(트랜잭션에서)을 지정한다. autovacuum이 달리 비활성화된 경우에도 시스템은 랩어라운드를 방지하기 위해 autovacuum 프로세스를 실행한다는 점에 유의해야 한다.

Vacuum은 pg_xact 서브 디렉터리에서 오래된 파일도 제거하는데, 이는 기본값이 2억 트랜잭션으로 상대적으로 낮기 때문이다. 이 매개 변수는 서버 시작 시에만 설정할 수 있지만 저장소 매개 변수를 변경함으로써 개별 테이블에 대한 설정을 줄일 수 있다. 자세한 내용은 23.1.5절을 참조 바란다. Vacuum also allows removal of old files from the pg_xact subdirectory, which is why the default is a relatively low 200 million transactions. This parameter can only be set at server start, but the setting can be reduced for individual tables by changing storage parameters. For more information see 24.1.5절.

autovacuum_multixact_freeze_max_age (integer)

테이블 내 multixact ID 랩어라운드를 방지하기 위해 VACUUM 명령을 강제하기 전에 테이블의 pg_class.relminmxid 필드가 도달할 수 있는 연령(multixacts에서)을 지정한다. autovacuum이 달리 비활성화된 경우에도 시스템은 랩어라운드를 방지하기 위해 autovacuum 프로세스를 실행한다는 점에 유의해야 한다.

Vacuuming multixacts는 pg_multixact/memberspg_multixact/offsets 서브 디렉터리에서 오래된 파일도 제거하는데, 이는 기본값이 4억 multixacts로 상대적으로 낮기 때문이다. 이 매개 변수는 서버 시작 시에만 설정할 수 있지만 저장소 매개 변수를 변경함으로써 개별 테이블에 대한 설정을 줄일 수 있다. 자세한 내용은 24.1.5.1절을 참조 바란다.

autovacuum_vacuum_cost_delay (integer)

자동 VACUUM 명령에 사용되는 비용 지연 값을 지정한다. -1을 지정하면 일반 vacuum_cost_delay 값이 사용된다. 설정값에 단위가 없으면 밀리세컨드로 간주한다. 기본값은 2ms다. 이 매개 변수는 postgresql.conf 파일 또는 서버 커맨드 라인에서만 설정 가능하다. 이 설정은 저장소 매개 변수를 변경함으로써 개별 테이블에 오버라이드할 수 있다.

autovacuum_vacuum_cost_limit (integer)

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