PostgreSQL데이터베이스가 필요합니다 로 알려진 정기 유지 보수진공 토토 사이트기. 많은 설치의 경우 진공 토토 사이트기를 수행autovacuum daemon, 에 설명 된섹션 23.1.5. 당신은 할 수 있습니다 여기에 설명 된자가 경비원 매개 변수를 조정해야합니다 상황에 대한 최상의 결과를 얻으십시오. 일부 데이터베이스 관리자는 데몬을 보충하거나 교체하려고합니다 수동으로 관리되는 활동진공명령, 일반적으로 일정에 따라 실행됩니다.Cron또는작업 스케줄러스크립트. 설정합니다 수동으로 관리되는 진공 토토 사이트기는 제대로 진공 토토 사이트기가 필수적입니다 다음 몇 가지 하위 섹션에서 논의 된 문제를 이해하십시오. 자동화에 의존하는 관리자는 여전히 탈지하고 싶을 수 있습니다. 그들이 이해하고 조정하는 데 도움이되는이 자료 자가 경비원.
PostgreSQL'sPostgreSQL : 문서 : 8.4 : 배트맨 토토명령은 각각을 처리해야합니다 몇 가지 이유로 정기적으로 테이블 :
업데이트 된 디스크 공간을 복구하거나 재사용하려면 삭제 된 행.
PostgreSQL쿼리 플래너.
11799_11857트랜잭션 ID 랩 어라운드.
이러한 각 이유는 수행을 지시합니다진공다양한 주파수의 작동 및 다음 하위 섹션에 설명 된 스코프.
두 가지 변형이 있습니다.진공: 기준진공및진공 Full. 진공 가득한더 많은 디스크 공간을 되 찾을 수 있지만 훨씬 더 많이 실행됩니다 느리게. 또한 표준 형태의진공생산과 병렬로 실행할 수 있습니다 데이터베이스 작업. (와 같은 명령select, 삽입, 업데이트및삭제정상적으로 계속 작동합니다. 테이블의 정의를 수정할 수는 없지만 와 같은 명령으로Alter Table진공 토토 사이트기가있는 동안.)진공 가득한작동중인 테이블의 독점 잠금이 필요합니다 켜짐, 따라서 다른 사용과 병렬로 수행 할 수 없습니다. 테이블. 의 또 다른 단점진공 가득한테이블 크기를 줄이지 만 그렇지 않습니다. 비례 적으로 인덱스 크기를 줄입니다. 실제로 색인을 만들 수 있습니다더 큰. 일반적으로, 따라서 관리자는 표준을 사용하기 위해 노력해야합니다진공그리고 피하기진공 Full.
진공상당한 금액을 만듭니다 I/O 트래픽 중 다른 사람에게 성능이 저하 될 수 있습니다. 활성 세션. 할 수있는 구성 매개 변수가 있습니다 배경의 성능 영향을 줄이기 위해 조정되었습니다 진공 토토 사이트기 - 참조섹션 18.4.3.
inpostgresql, an업데이트또는삭제의 행은 즉시 제거하지 않습니다 행의 오래된 버전. 이 접근법은 Multiversion 동시성 제어의 이점 (참조13 장) : 행 버전은 아니어야합니다 여전히 다른 사람에게는 잠재적으로 볼 수있는 동안 삭제됩니다 업무. 그러나 결국 구식 또는 삭제 된 행입니다 버전은 더 이상 거래에 관심이 없습니다. 공간 새로운 행으로 재사용하려면 차지해야합니다. 디스크 공간 요구 사항의 무한한 성장을 피하십시오. 이것은 완료되었습니다 실행진공.
표준 형태진공제거 테이블 및 인덱스의 데드 행 버전 및 공간을 표시합니다. 향후 재사용에 사용할 수 있습니다. 그러나 반환되지 않습니다 특별한 경우를 제외하고 운영 체제의 공간 테이블 끝에있는 하나 이상의 페이지가 완전히 무료가됩니다. 독점 테이블 잠금을 쉽게 얻을 수 있습니다. ~ 안에 차이,진공 Full적극적으로 행 버전을 이전 페이지로 이동하여 테이블을 압축합니다. 그것은 따라서 테이블 끝의 페이지가 전적으로 무료, 그것은 그것들을 운영으로 되돌릴 것입니다. 체계. 그러나 많은 행을 움직여야한다면 장기. 또한 행을 움직이면 일시적으로 만들어야합니다 그것에 대한 복제 인덱스 항목 (새로운 것을 가리키는 항목 이전 항목을 제거하기 전에 위치를 만들어야합니다); 그래서 이런 식으로 많은 줄을 움직이면 심각한 색인 부풀게됩니다.
일상 진공 토토 사이트기의 일반적인 목표는 표준을 수행하는 것입니다진공필요를 피하기에 충분히 자주진공 Full. Autovacuum 데몬 이런 식으로 일하려고 시도하면 실제로는 결코 발행되지 않을 것입니다진공 Full. 이 접근법에서 아이디어는 테이블을 최소 크기로 유지하는 것이 아니라 디스크 공간의 정상 상태 사용을 유지하십시오. 각 테이블은 점유합니다 최소 크기와 많은 공간에 해당하는 공간 진공 토토 사이트기 사이에 사용됩니다. 하지만진공 Full테이블을 다시 축소하는 데 사용할 수 있습니다 최소 크기로 디스크 공간을 작동으로 반환합니다. 시스템, 테이블이 그냥 미래에 다시 성장하십시오. 따라서 적당히 프레시트 표준진공실행은보다 더 나은 접근 방식입니다 드문진공 Full무거운 업데이트 된 테이블 유지.
일부 관리자는 진공 토토 사이트기 일정을 선호합니다. 예를 들어, 부하가 낮을 때 밤에 모든 작업을 수행합니다. 그만큼 고정 된 일정에 따라 진공 토토 사이트기에 어려움이 있습니다 테이블에 업데이트 활동이 예상치 못한 스파이크가있는 경우진공 가득한공간을 되찾기 위해서는 실제로 필요합니다. 사용 Autovacuum 데몬은 데몬 이후이 문제를 완화시킵니다 업데이트 활동에 대한 응답으로 동적으로 진공 토토 사이트기를 정리합니다. 당신이 가지고 있지 않는 한 데몬을 완전히 비활성화하는 것은 현명하지 않습니다. 매우 예측 가능한 워크로드. 가능한 타협은 데몬 매개 변수를 설정하여 반응 만 비정상적으로 무거운 업데이트 활동으로 인해 상황을 유지합니다 예정된 상태에서 손을 떼다진공s는 대부분의 작업을 수행 할 것으로 예상됩니다. 하중이 일반적 일 때.
autovacuum을 사용하지 않는 사람들의 경우 일반적인 접근 방식은 다음과 같습니다. 데이터베이스 전체 예약진공한 번 a 낮은 사용 기간 동안, 더 자주 보충됩니다 필요에 따라 무거운 업데이트 된 테이블의 진공 토토 사이트기. (일부 매우 높은 업데이트 속도를 가진 설치는 진공 토토 사이트기 진공 토토 사이트기입니다 몇 분마다 가장 바쁜 테이블.) 클러스터의 여러 데이터베이스, 잊지 마십시오진공각각; 프로그램Vacuumdb도움이 될 수 있습니다.
팁 :두 가지 형태진공테이블시 완전히 만족 스럽습니다 결과적으로 많은 수의 Dead Row 버전이 포함되어 있습니다. 대규모 업데이트 또는 삭제 활동. 그런 테이블이있는 경우 그리고 당신은 그것이 차지하는 과도한 디스크 공간을 되 찾아야합니다. 가장 좋은 방법은 사용하는 것입니다클러스터또는 중 하나 의 테이블에 대한 변형 변형Alter Table. 이 명령 완전히 새 테이블 사본을 다시 작성하고 새로 건축하십시오. 그것에 대한 색인. 좋다진공 Full, 그들은 독점적 인 잠금이 필요합니다. 그들도 주목하십시오 오래된 사본 이후 일시적으로 여분의 디스크 공간을 사용합니다. 테이블과 인덱스는 새로운 것까지 해제 할 수 없습니다. 완료되었습니다. 최악의 경우 디스크가 거의없는 경우 가득한,진공 Full유일한 것일 수 있습니다 실행 가능한 대안.
팁 :전체 내용의 테이블이있는 경우 정기적으로 삭제됩니다.PostgreSQL : 문서 : 8.4 : 토토 커뮤니티오히려 사용하는 것보다삭제그 뒤에진공. Truncate전체 내용을 제거합니다 후속없이 즉시 테이블19899_19907또는진공 Full현재 사용되지 않은 디스크를 되 찾으려면 공간. 단점은 엄격한 MVCC 의미론이라는 점입니다 위반.
thePostgreSQL쿼리 플래너는 내용에 대한 통계 정보에 의존합니다 쿼리에 대한 좋은 계획을 생성하기 위해 테이블. 이것들 통계는에 의해 수집됩니다.분석명령 그 자체 또는 선택적 단계진공. 합리적으로하는 것이 중요합니다 정확한 통계, 그렇지 않으면 계획 선택이 열악 할 수도 있습니다 데이터베이스 성능 저하.
Autovacuum 데몬은 활성화되면 자동으로 발행됩니다분석내용이있을 때마다 명령합니다 테이블의 하나는 충분히 바뀌 었습니다. 그러나 관리자 수동 예약에 의존하는 것을 선호 할 수 있습니다분석특히 알려진 경우 작동 테이블의 업데이트 활동은 통계에 영향을 미치지 않습니다. 의"흥미로운"열. 데몬 일정분석엄격하게 a 삽입 또는 업데이트 된 행 수의 기능; 그것은 없다 그것이 의미있는 통계로 이어질지 여부에 대한 지식 변화.
공간 복구를위한 진공 토토 사이트기와 마찬가지로 빈번한 업데이트 통계는 업데이트 된 테이블보다 더 유용합니다 거의 업데이트 된 것들. 그러나 심하게 업데이트 된 테이블의 경우에도 통계 업데이트가 필요하지 않을 수 있습니다. 데이터의 통계 분포는 크게 변하지 않습니다. 에이 간단한 규칙은 최소값과 테이블에서 열의 최대 값이 변경됩니다. 예를 들어, 에이타임 스탬프시간이 포함 된 열 행 업데이트의 최대 값은 지속적으로 증가합니다 행이 추가되고 업데이트됨에 따라; 그러한 칼럼은 아마도 필요할 것입니다 더 빈번한 통계가 포함 된 열보다 업데이트됩니다 웹 사이트에서 액세스 한 페이지의 URL. URL 열이있을 수 있습니다 변경 사항을 자주 받지만 통계 분포를받습니다 그 가치는 아마도 비교적 느리게 변할 것입니다.
실행할 수 있습니다분석on 특정 테이블 및 테이블의 특정 열만 있으므로 일부 통계를 더 업데이트하기 위해 유연성이 존재합니다 응용 프로그램에 필요한 경우 다른 사람보다 자주 다른 사람보다 자주. ~ 안에 그러나 연습은 일반적으로 분석하는 것이 가장 좋습니다. 빠른 작업이기 때문에 전체 데이터베이스.분석통계 랜덤 샘플링을 사용합니다 모든 행을 읽지 않고 테이블의 행입니다.
팁 :콜럼 당 조정이지만분석주파수는 그리지 않을 수 있습니다 생산적, 당신은 할 가치가 있다는 것을 알 수 있습니다 세부의 세부 수준의 컬럼 당 조정 에 의해 수집 된 통계분석. 크게 사용되는 열여기서조항은 불규칙한 데이터를 가지고 있습니다 분포에는 더 미세한 데이터 히스토그램이 필요할 수 있습니다 다른 열보다. 보다알터 테이블 세트 통계또는 데이터베이스 전체 기본값을 변경하십시오 그만큼default_statistics_target구성 매개 변수.
PostgreSQL'S MVCC 거래 시맨틱은 비교할 수있는 것에 달려 있습니다 트랜잭션 ID (xid) 숫자 : 삽입 xid가 현재 트랜잭션의 XID는"에서 미래"전류에 보이지 않아야합니다 거래. 그러나 트랜잭션 ID는 크기가 제한되어 있기 때문에 (32 이 글을 쓰는 데 비트) 오랫동안 실행되는 클러스터 (더보기 40 억 대의 거래)가 어려움을 겪을 것입니다트랜잭션 ID 랩 어라운드: XID 카운터 주위를 0으로 감싸고 갑자기 갑자기 거래 과거에 미래에있는 것처럼 보였습니다. 이는 출력은 보이지 않습니다. 요컨대, 치명적인 데이터 손실. (실제로 데이터는 여전히 존재하지만 냉담한 편안함입니다. 당신은 그것을 얻을 수 없습니다.) 이것을 피하려면 진공 토토 사이트기가 필요합니다. 모든 데이터베이스의 모든 테이블은 최소한 20 억마다 한 번 업무.
정기 진공 토토 사이트기가 문제를 해결하는 이유 저것postgresql구별 특별한 xidfrozenxid. 이 xid입니다 항상 모든 정상 XID보다 오래된 것으로 간주됩니다. 정상적인 xids입니다 Modulo-2 사용 비교32산술. 이것은 의미합니다 정상적인 xid마다 20 억 개의 XID가 있습니다."구형""최신"; 또 다른 방법입니다 정상적인 XID 공간은 엔드 포인트가없는 원형입니다. 따라서 일단 행 버전이 생성되면 특정 일반 XID, 행 버전이로 보입니다."과거"다음 두 가지 우리가 말하는 일반적인 xid에 상관없이 10 억 트랜잭션 에 대한. 행 버전이 2 개 이상 이후에도 존재하는 경우 10 억 건의 거래, 갑자기 미래. 데이터 손실을 방지하려면 오래된 행 버전이 있어야합니다 XID를 재 할당frozenxid언젠가 그들이 20 억 트랜잭션에 도달하기 전에. 한 번 그들은이 특별한 xid로 할당되며"과거"모든 정상 랩 어라운드 문제 및 그러한 행에 관계없이 거래 아무리 오래 삭제 될 때까지 버전이 좋을 것입니다. 이다. 오래된 XIDS 의이 재 할당은에 의해 처리됩니다.진공.
VACUUM_FREEZE_MIN_AGEXID 값이 교체되기 전에 XID 값이 몇 살인지 제어 와 함께frozenxid. 이것의 더 큰 값 트랜잭션 정보를 더 오래 보존하는 동안 더 작은 값은 할 수있는 트랜잭션의 수를 증가시킵니다 테이블 전에 다시 진공 토토 사이트기를 청소해야합니다.
진공일반적으로 페이지를 건너 뜁니다 Dead Row 버전이 없지만 그 페이지는 여전히 오래된 XID 값이있는 행 버전이 있습니다. 모든 오래된 XID를 보장합니다 대체되었습니다frozenxid, a 전체 테이블 스캔이 필요합니다.VACUUM_FREEZE_TABLE_AGE컨트롤진공그렇게합니다 : a 테이블이 완전히 없으면 전체 테이블 스윕이 강요됩니다. 스캔VACUUM_FREEZE_TABLE_AGE마이너스VACUUM_FREEZE_MIN_AGE거래. 0 세력으로 설정진공항상 모든 페이지를 효과적으로 스캔하려면 가시성지도 무시.
테이블이 바로 사용할 수있는 최대 시간은 2입니다. 10 억 거래 뺀VACUUM_FREEZE_MIN_AGE진공마지막 테이블을 스캔했습니다. 그보다 오랫동안 발행되지 않은 경우 데이터 손실 결과 할 수 있습니다. 이런 일이 발생하지 않도록 Autovacuum 보다 오래된 XID를 포함 할 수있는 모든 테이블에서 호출됩니다. 구성 매개 변수로 지정된 연령autovacuum_freeze_max_age. (이것은 Autovacuum이 그렇지 않으면 발생합니다 장애가 있는.)
이것은 테이블이 진공 토토 사이트기가 아닌 경우, Autovacuum은 약 1 회마다 호출됩니다autovacuum_freeze_max_age마이너스VACUUM_FREEZE_MIN_AGE거래. 우주 교정을 위해 정기적으로 진공 토토 사이트기의 테이블 목적은 거의 중요하지 않습니다. 그러나 정적 인 경우 테이블 (인서트를받는 테이블 포함이지만 업데이트는 없습니다 또는 삭제), 우주에 대한 진공 토토 사이트기가 필요하지 않습니다. 교정, 따라서 최대화를 시도하는 것이 유용 할 수 있습니다. 매우 큰 정적에서 강제 autovacuum 사이의 간격 테이블. 분명히 하나는 증가함으로써 이것을 할 수 있습니다autovacuum_freeze_max_age또는 BY 감소VACUUM_FREEZE_MIN_AGE.
유효 최대VACUUM_FREEZE_TABLE_AGEis 0.95 *autovacuum_freeze_max_age; 보다 높은 설정 그것은 최대 값으로 제한됩니다. 값보다 높은 값autovacuum_freeze_max_age그렇지 않을 것입니다 raparound autovacuum이 될 것이기 때문에 의미가 있습니다 어쨌든 그 시점에서 트리거되고 0.95 승수 잎 매뉴얼을 실행하기위한 호흡 공간진공그 전에. 경험상VACUUM_FREEZE_TABLE_AGE를 설정해야합니다 다소 아래의 가치에autovacuum_freeze_max_age, 충분한 간격을 남기십시오 정기적으로 예정된진공또는 정상 삭제 및 업데이트 활동에 의해 트리거 된 Autovacuum은 다음과 같습니다. 그 창에서 실행하십시오. 너무 가깝게 설정하면 이어질 수 있습니다 테이블이 최근에 있었음에도 불구하고 raparound autovacuums 공간을 회수하기 위해 진공 토토 사이트기를 청구하는 반면, 낮은 값은 더 많은 것으로 이어집니다. 잦은 전체 테이블 스캔.
증가하는 유일한 단점autovacuum_freeze_max_age(및VACUUM_FREEZE_TABLE_AGE와 함께)입니다 그만큼PG_CLOG데이터베이스 클러스터는 저장해야하기 때문에 더 많은 공간을 차지합니다. 모든 트랜잭션에 대한 커밋 상태autovacuum_freeze_max_ageHorizon. 커밋 상태는 거래 당 두 비트를 사용하므로 ifautovacuum_freeze_max_age최대 값이 있습니다 허용 된 가치 20 억,PG_CLOG는 약 절반의 기가 바이트로 성장할 것으로 예상됩니다. 이것이 있다면 총 데이터베이스 크기에 비해 사소한 설정autovacuum_freeze_max_age최대 허용 값이 권장됩니다. 그렇지 않으면 설정하십시오 당신이 기꺼이 허용하는 것에 따라PG_CLOG스토리지. (기본값, 2 억 거래는 약 50MB의로 변환됩니다.PG_CLOG스토리지.)
감소의 단점 중 하나VACUUM_FREEZE_MIN_AGE원인이 될 수 있다는 것입니다진공쓸모없는 작업을 수행하려면 : a 테이블 행의 xid tofrozenxidis 그 후 곧 행이 수정 된 경우 시간 낭비 (원인 새로운 XID를 획득하기 위해). 따라서 설정은 충분히 커야합니다 그 행은 변경할 가능성이 없을 때까지 동결되지 않습니다. 더. 이 설정을 줄이는 또 다른 단점은 그 것입니다 정확히 삽입 또는 수정 된 트랜잭션에 대한 세부 사항 a 행은 더 빨리 손실됩니다. 이 정보는 때때로 들어옵니다 특히 무엇이 잘못되었는지 분석하려고 할 때 편리합니다 데이터베이스 실패 후. 이 두 가지 이유로 감소합니다 이 설정은 완전히 정적을 제외하고는 권장되지 않습니다 테이블.
데이터베이스에서 가장 오래된 XID의 나이를 추적하려면진공XID 통계를 저장합니다 시스템 테이블PG_CLASS및pg_database. 특히relfrozenxid테이블의 열pg_class행에는 동결이 포함되어 있습니다 마지막 완전 테이블이 사용한 컷오프 XID진공해당 테이블의 경우. 모든 정상 XID가 오래되었습니다 이 컷오프보다 xid가 대체 된 것보다frozenxid테이블 내. 비슷하게, 그만큼datfrozenxida의 열 데이터베이스pg_database행은 a 해당 데이터베이스에 나타나는 일반 XID의 하한 - IT 테이블 당 최소입니다relfrozenxid데이터베이스 내의 값. 에이 이 정보를 조사하는 편리한 방법은 실행하는 것입니다 다음과 같은 쿼리
c.oid :: regclass as table_name을 선택하십시오. 연령으로 가장 큰 (연령 (C.Relfrozenxid), 연령 (T.Relfrozenxid)) pg_class에서 c C.ReltoastRelid = T.Oid에서 PG_CLASS T를 왼쪽으로 결합하십시오 여기서 c.relkind = 'r'; pg_database에서 datname, age (datfrozenxid)를 선택하십시오.
theAge열은 숫자를 측정합니다 컷오프 XID에서 현재까지의 거래 거래의 xid.
진공일반적으로 페이지 만 스캔합니다 마지막 진공 이후 수정되었지만relfrozenxid전체 테이블이 스캔됩니다. 전체 테이블이 스캔 될 때relfrozenxid더 이상VACUUM_FREEZE_TABLE_AGE거래 옛날,진공 동결명령입니다 사용 또는 모든 페이지가 제거하기 위해 진공 토토 사이트기가 필요할 때 데드 행 버전. 언제진공스캔 전체 테이블, 완료 후Age (RelfrozenxID)그 이상이어야합니다 그만큼VACUUM_FREEZE_MIN_AGE그것을 설정합니다 사용되었습니다 ( 이후 시작된 트랜잭션 수에 따라진공시작). 아니오 전체 테이블 스캔진공가 발행됩니다 테이블에서autovacuum_freeze_max_age도달했습니다 Autovacuum은 곧 테이블을 위해 강요 될 것입니다.
어떤 이유로 autovacuum이 오래된 XID를 토토 사이트하지 못하는 경우 테이블, 시스템은 이와 같은 경고 메시지를 방출하기 시작합니다. 데이터베이스의 가장 오래된 XID가 1 백만 건의 트랜잭션에 도달하면 랩 어라운드 지점에서 :
경고 : 데이터베이스 "MyDB"는 177009986 트랜잭션 내에 청소해야합니다 힌트 : 데이터베이스 종료를 피하려면 "MyDB"에서 데이터베이스 전체 진공을 실행하십시오..
(매뉴얼진공힌트에 의해 제안 된대로 문제; 하지만진공슈퍼 사용자가 수행해야합니다 시스템 카탈로그를 처리하지 못하므로 데이터베이스의 전진datfrozenxid.) 이러한 경고가 있다면 무시하면 시스템이 종료되고 실행을 거부합니다. 새로운 거래 일단 백만 미만의 경우 랩 어라운드까지 남은 거래 :
오류 : 데이터베이스는 데이터베이스 "mydb"의 랩 어라운드 데이터 손실을 피하기 위해 명령을 수락하지 않습니다. 힌트 : 우체국 장을 중지하고 "MyDB"에서 진공 상태로 독립형 백엔드를 사용하십시오.
1 백만 번의 이동 안전 마진은 관리자는 수동으로 실행하여 데이터 손실없이 복구됩니다 필수진공명령. 하지만, 시스템이 사라진 후에는 명령을 실행하지 않기 때문에 안전 차단 모드로,이를 수행하는 유일한 방법은 서버를 중지하고 단일 사용자 백엔드를 사용하여 실행진공. 셧다운 모드는 아닙니다 단일 사용자 백엔드에 의해 시행됩니다. 참조Postgres자세한 내용은 참조 페이지입니다 단일 사용자 백엔드 사용에 대해.
PostgreSQL선택 사항이 있습니다 그러나 적극 권장되는 기능autovacuum실행진공and분석명령. 활성화되면 Autovacuum 많은 수의 삽입 된 테이블을 확인하고 튜플을 업데이트하거나 삭제했습니다. 이 수표는 통계를 사용합니다 수집 시설; 따라서 Autovacuum을 사용할 수 없습니다 하지 않는 한track_countstrue. 기본값에서 구성,자가 동작이 활성화되고 관련되어 있습니다 구성 매개 변수는 적절하게 설정됩니다.
the"Autovacuum Daemon"실제로 여러 프로세스로 구성됩니다. 지속적인 데몬이 있습니다 프로세스,autovacuum 발사통, 시작을 담당하는Autovacuum Worker모든 데이터베이스의 프로세스. 런처는 시간이 지남에 따라 작업을 배포하여 시도합니다 각 데이터베이스에서 한 명의 작업자를 시작하려면autovacuum_naptime초. 각 데이터베이스에 대해 한 명의 작업자가 출시되며 최대autovacuum_max_workers동시에 실행되는 프로세스. 이상이있는 경우autovacuum_max_workers처리 할 데이터베이스, 다음 데이터베이스가 처리됩니다. 첫 번째 작업자가 끝나 자마자. 각 근로자 과정은 그럴 것입니다 데이터베이스 내의 각 테이블을 확인하고 실행진공및/또는분석필요에 따라.
theautovacuum_max_workers설정 한도는 언제든지 얼마나 많은 근로자가 달릴 수 있는지 제한합니다. 만약에 여러 개의 큰 테이블이 모두 짧은 시간, 모든 Autovacuum 근로자가 될 수 있습니다 오랫동안 테이블을 진공 토토 사이트기로 청소합니다. 이것 다른 테이블과 데이터베이스가 진공 청소되지 않도록합니다. 근로자가 가능할 때까지. 방법에는 제한이 없습니다 많은 근로자가 단일 데이터베이스에있을 수 있지만 근로자는 시도합니다. 다른 사람이 이미 수행 한 반복 작업을 피하기 위해 노동자. 달리는 근로자의 수는 계산되지 않습니다. 쪽으로max_connections또는SuperUser_Reserved_Connections한계.
테이블의relfrozenxid값 이상autovacuum_freeze_max_age오래된 거래는 항상 진공 토토 사이트기입니다 (이것은 또한 적용됩니다 동결 최대 시대가 저장을 통해 수정 된 테이블 매개 변수; 아래를 참조하십시오). 그렇지 않으면, 튜플의 수라면 마지막 이래로 쓸모없는진공초과"진공 임계 값"40275_40341
진공 임계 값 = 진공베이스 임계 값 + 진공 스케일 팩터 * 튜플 수
진공베이스 임계 값이있는 곳autovacuum_vacuum_threshold, 진공 스케일 계수는autovacuum_vacuum_scale_factor, 그리고 튜플의 수는PG_CLASS.Reltuples. 쓸모없는 튜플의 수는입니다 통계 수집가로부터 얻은; 그것은 반 유감입니다 각에 의해 업데이트 됨업데이트and삭제작동. (그것은 단지입니다 일부 정보가 손실 될 수 있으므로 반 정확도 무거운 짐.) 인 경우relfrozenxid테이블의 가치는 이상입니다.Vacuum_Freeze_table_ageTransactions Old, the 전체 테이블이 스캔되어 오래된 튜플을 얼리고 전진합니다relfrozenxid, 그렇지 않으면 페이지 만 마지막 진공이 스캔 된 이후로 수정되었습니다.
분석의 경우 비슷한 조건이 사용됩니다 : 임계 값, 정의 :
임계 값 분석 = 기본 임계 값 분석 + 스케일 계수 분석 * 튜플 수
삽입 된 총 튜플 수와 비교됩니다. 마지막 이후로 업데이트분석.
기본 임계 값 및 스케일 요인은에서 가져옵니다.postgresql.conf그러나 가능합니다 테이블별로 그것들을 대체하기 위해; 보다스토리지 매개 변수자세한 내용은. 설정이 있다면 스토리지 매개 변수를 통해 변경되면 해당 값이 사용됩니다. 그렇지 않으면 글로벌 설정이 사용됩니다. 보다섹션 18.9더 많은 것 글로벌 설정에 대한 자세한 내용.
기본 임계 값 및 스케일 요인 외에 각각에 대해 설정할 수있는 6 개의 Autovacuum 매개 변수입니다. 스토리지 매개 변수를 통한 테이블. 첫 번째 매개 변수autovacuum_enabled,를 설정할 수 있습니다거짓Autovacuum 데몬에 건너 뛰도록 지시합니다 그 특정 테이블 전적으로. 이 경우 autovacuum은 할 것입니다 거래 ID를 방지하기 위해 테이블 만 터치하십시오. 랩 어라운드. 또 다른 두 매개 변수autovacuum_vacuum_cost_delayandautovacuum_vacuum_cost_limit, 설정에 사용됩니다 에 대한 테이블 별 값비용 기반 진공 지연기능.autovacuum_freeze_min_age, autovacuum_freeze_max_ageandautovacuum_freeze_table_age설정에 사용됩니다 에 대한 값VACUUM_FREEZE_MIN_AGE, autovacuum_freeze_max_ageandVacuum_Freeze_table_age각각.
여러 근로자가 달리면 비용 제한이입니다."밸런스"모든 달리기 중 작업자, 시스템에 대한 총 영향이 동일합니다. 실제로 달리는 근로자의 수에 관계없이.