이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 24.1. 일상 윈 토토 청소기버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

23.1. 일상적인 진공 범퍼카 토토

PostgreSQL데이터베이스에는 다음이 필요합니다. 정기적인 유지 관리로 알려져 있음범퍼카 토토 중. 대부분의 설치에서는 진공범퍼카 토토기로 범퍼카 토토하는 것만으로도 충분합니다. 에 의해 수행됨autovacuum 데몬, 에 설명되어 있습니다.섹션 23.1.5. 당신은 아마도 거기에 설명된 자동 범퍼카 토토화 매개변수를 조정해야 합니다. 귀하의 상황에 가장 적합한 결과를 얻으십시오. 일부 데이터베이스 관리자는 데몬의 기능을 보완하거나 교체하기를 원할 것입니다. 수동으로 관리되는 활동범퍼카 토토일반적으로 일정에 따라 실행되는 명령크론또는작업 스케줄러스크립트. 설정하려면 수동으로 범퍼카 토토청소기를 적절하게 관리하려면 다음이 필수적입니다. 다음 몇 가지 하위 섹션에서 논의되는 문제를 이해합니다. 자동 범퍼카 토토화에 의존하는 관리자는 여전히 훑어보기를 원할 수 있습니다. 이해하고 적응하는 데 도움이 되는 이 자료 자동 범퍼카 토토화 중입니다.

23.1.1. 범퍼카 토토청소기 기본 사항

포스트그레SQL's범퍼카 토토명령은 각 테이블을 처리해야 합니다. 여러 가지 이유로 정기적으로:

  1. 업데이트된 디스크 공간을 복구하거나 재사용하려면 행이 삭제되었습니다.

  2. 다음에서 사용하는 데이터 통계를 업데이트하려면포스트그레SQL쿼리 플래너.

  3. 다음으로 인해 매우 오래된 데이터의 손실을 방지하기 위해트랜잭션 ID 랩어라운드.

이러한 각 이유는 수행을 결정합니다.범퍼카 토토다양한 빈도의 작업 및 범위는 다음 하위 섹션에 설명되어 있습니다.

다음에는 두 가지 변형이 있습니다.범퍼카 토토: 표준범퍼카 토토그리고범퍼카 토토 가득 참. 범퍼카 토토 전체더 많은 디스크 공간을 회수할 수 있지만 훨씬 더 많이 실행됩니다. 천천히. 또한,의 표준형범퍼카 토토프로덕션과 동시에 실행 가능 데이터베이스 운영. (다음과 같은 명령)선택, 삽입, 업데이트삭제계속해서 정상적으로 작동할 것입니다. 하지만 테이블 정의를 수정할 수는 없습니다. 다음과 같은 명령을 사용하여테이블 변경범퍼카 토토되는 동안.)범퍼카 토토 전체작동 중인 테이블에 대한 배타적 잠금이 필요합니다. on이므로 다른 사용과 동시에 수행할 수 없습니다. 테이블. 따라서 일반적으로 관리자는 다음과 같이 노력해야 합니다. 표준을 사용하다범퍼카 토토그리고 피하세요범퍼카 토토이 가득 참.

범퍼카 토토상당한 양의 생성 다른 시스템의 성능 저하를 초래할 수 있는 I/O 트래픽 활성 세션. 다음과 같은 구성 매개변수가 있습니다. 배경이 성능에 미치는 영향을 줄이기 위해 조정되었습니다. 범퍼카 토토청소기 — 참조섹션 18.4.3.

23.1.2. 디스크 복구 중 공간

PostgreSQL, an업데이트또는삭제행은 즉시 제거되지 않습니다. 행의 이전 버전입니다. 이러한 접근 방식은 다음과 같은 이점을 얻기 위해 필요합니다. 다중 버전 동시성 제어의 이점(MVCC, 참조장 13): 행 버전이 아직 남아 있는 동안에는 삭제하면 안 됩니다. 잠재적으로 다른 트랜잭션에 표시됩니다. 그러나 결국, 오래되었거나 삭제된 행 버전은 더 이상 관심이 없습니다. 거래. 그런 다음 차지하는 공간을 회수해야 합니다. 디스크 공간의 무한한 증가를 방지하기 위해 새 행에서 재사용 요구 사항. 이는 다음을 실행하여 수행됩니다.범퍼카 토토.

의 표준 형식범퍼카 토토제거 테이블과 인덱스의 데드 로우 버전을 확인하고 공간을 표시합니다. 향후 재사용이 가능합니다. 그러나 반환되지는 않습니다. 특별한 경우를 제외하고 운영 체제에 공간을 할당합니다. 테이블 끝에 있는 하나 이상의 페이지가 완전히 무료가 됩니다. 전용 테이블 잠금 장치를 쉽게 얻을 수 있습니다. 에서 대비,범퍼카 토토 가득 참활동적으로 완전히 새로운 버전의 테이블을 작성하여 테이블을 압축합니다. 데드 스페이스가 없는 파일입니다. 테이블의 크기를 최소화하고, 하지만 시간이 오래 걸릴 수 있습니다. 또한 추가 디스크 공간이 필요합니다. 작업이 완료될 때까지 테이블의 새 복사본입니다.

일상적인 범퍼카 토토 청소의 일반적인 목표는 표준을 수행하는 것입니다.범퍼카 토토필요를 피할 수 있을 만큼 자주범퍼카 토토 가득 참. 자동 범퍼카 토토 데몬 이런 식으로 작업하려고 시도하지만 실제로는 결코 발행되지 않습니다.범퍼카 토토 가득 참. 이 접근법에서는 아이디어는 테이블을 최소 크기로 유지하는 것이 아니라 디스크 공간의 안정적인 사용 상태 유지: 각 테이블이 점유 최소 크기에 공간을 더한 것과 동일한 공간 범퍼카 토토 청소기로 청소하는 사이에 지쳐 버립니다. 그래도범퍼카 토토 가득 참테이블을 다시 축소하는 데 사용할 수 있습니다. 최소 크기로 줄이고 디스크 공간을 운영 체제로 되돌립니다. 시스템에서 테이블이 단지 앞으로 다시 성장하세요. 따라서 중간 빈도 표준범퍼카 토토실행은 다음보다 더 나은 접근 방식입니다. 드물게범퍼카 토토이 가득 참다음을 위해 실행됩니다. 많이 업데이트된 테이블을 유지 관리합니다.

일부 관리자는 스스로 범퍼카 토토 청소를 예약하는 것을 선호합니다. 예를 들어 부하가 낮은 밤에 모든 작업을 수행합니다. 는 정해진 일정에 따라 범퍼카 토토 청소를 하기 어려움 테이블의 업데이트 활동이 예기치 않게 급증하는 경우 너무 부풀어오르게 될 수도 있습니다.범퍼카 토토 전체공간을 확보하려면 정말 필요합니다. 사용하여 autovacuum 데몬은 이 문제를 완화합니다. 업데이트 활동에 대한 응답으로 동적으로 비우기를 예약합니다. 다음과 같은 경우가 아니면 데몬을 완전히 비활성화하는 것은 현명하지 않습니다. 극도로 예측 가능한 작업량. 한 가지 가능한 타협은 데몬의 매개변수를 설정하여 다음에만 반응하도록 합니다. 비정상적으로 과도한 업데이트 활동으로 인해 예정된 동안 손을 떼는 중범퍼카 토토s가 대부분의 작업을 수행할 것으로 예상됩니다. 부하가 일반적인 경우.

autovacuum을 사용하지 않는 경우 일반적인 접근 방식은 다음과 같습니다. 데이터베이스 전체 예약범퍼카 토토에 한 번 하루 사용량이 적은 기간에는 더 자주 보충됩니다. 필요에 따라 많이 업데이트된 테이블을 범퍼카 토토 청소합니다. (일부 업데이트 속도가 매우 높은 설치는 가장 바쁜 테이블은 몇 분에 한 번씩 자주 발생합니다.) 클러스터에 여러 데이터베이스가 있는 경우 잊지 마세요.범퍼카 토토각각; 프로그램vacuumdb도움이 될 것 같아요.

팁:일반범퍼카 토토5월 테이블에 많은 수의 항목이 포함되어 있으면 만족스럽지 않습니다. 대규모 업데이트 또는 삭제로 인해 데드 로우 버전 발생 활동. 그러한 테이블이 있고 재확보해야 하는 경우 차지하는 초과 디스크 공간을 사용해야 합니다.범퍼카 토토 가득 참또는 대안으로PostgreSQL : 문서 : 9.1 : 사설 토토또는 다음 중 하나 테이블 재작성 변형테이블 변경. 이 명령 테이블의 전체 복사본을 다시 작성하고 새로 빌드 그것에 대한 색인입니다. 이러한 모든 옵션에는 배타적 잠금이 필요합니다. 또한 일시적으로 추가 디스크 공간을 사용합니다. 옛날부터 테이블 크기와 거의 같았습니다. 테이블과 인덱스의 복사본은 새로운 것이 완성되었습니다.

팁:전체 내용이 포함된 테이블이 있는 경우 정기적으로 삭제되므로 다음을 사용하여 삭제하는 것을 고려해 보세요.토토 사이트 추천 : 문서 : 9.1 : Truncate사용하는 것보다삭제다음에 이어범퍼카 토토. 잘라내기테이블의 전체 내용을 즉시 제거합니다. 후속 조치가 필요하지 않음범퍼카 토토또는범퍼카 토토 전체현재 사용되지 않는 디스크 공간을 회수합니다. 는 단점은 엄격한 MVCC 의미론이 위반했습니다.

23.1.3. 플래너 업데이트 중 통계

포스트그레SQL질의 플래너는 콘텐츠에 대한 통계 정보에 의존합니다. 쿼리에 대한 좋은 계획을 생성하기 위한 테이블입니다. 이것들 통계는 다음에 의해 수집됩니다.분석다음에 의해 호출될 수 있는 명령 자체적으로 또는 선택적인 단계로범퍼카 토토. 합리적으로 갖는 것이 중요하다 정확한 통계가 없으면 잘못된 계획 선택이 발생할 수 있습니다. 데이터베이스 성능이 저하됩니다.

autovacuum 데몬이 활성화되면 자동으로 실행됩니다분석콘텐츠가 나타날 때마다 명령합니다. 테이블의 내용이 충분히 변경되었습니다. 그러나 관리자는 수동으로 예약하는 것을 선호할 수 있습니다.분석작업, 특히 알려진 경우 테이블의 업데이트 활동은 통계에 영향을 미치지 않습니다. 의"흥미롭다"열. 데몬 일정분석엄격하게는 삽입되거나 업데이트된 행 수의 기능; 그것은 없다 의미 있는 통계로 이어질지 여부에 대한 지식 변경됩니다.

공간 복구를 위한 범퍼카 토토 청소와 마찬가지로 자주 업데이트되는 통계는 테이블보다 자주 업데이트되는 테이블에 더 유용합니다. 거의 업데이트되지 않는 것. 그러나 크게 업데이트된 테이블의 경우에도 다음과 같은 경우 통계 업데이트가 필요하지 않을 수 있습니다. 데이터의 통계적 분포는 크게 변하지 않습니다. 에이 간단한 경험 법칙은 최소 및 테이블 열의 최대값이 변경됩니다. 예를 들어, 에타임스탬프시간을 포함하는 열 행 업데이트의 최대값은 지속적으로 증가합니다. 행이 추가되고 업데이트됨에 따라; 그러한 열에는 아마도 필요할 것입니다 다음을 포함하는 열보다 더 자주 통계가 업데이트됩니다. 웹사이트에서 액세스한 페이지의 URL입니다. URL 열은 다음과 같습니다. 변경사항은 자주 수신되지만 통계적 분포는 해당 값 중 일부는 상대적으로 느리게 변경될 수 있습니다.

실행이 가능합니다분석켜짐 특정 테이블, 심지어는 테이블의 특정 열만 일부 통계를 더 많이 업데이트할 수 있는 유연성이 존재합니다. 애플리케이션에 필요한 경우 다른 것보다 자주. 에서 그러나 일반적으로 단지 분석하는 것이 가장 좋습니다. 전체 데이터베이스입니다. 빠른 작업이기 때문입니다.분석통계적으로 무작위 샘플링을 사용합니다. 모든 단일 행을 읽는 대신 테이블의 행을 읽습니다.

팁:열별로 조정했지만분석빈도가 그리 높지 않을 수 있습니다. 생산적이라면 열별로 수행하는 것이 가치가 있다고 생각할 수도 있습니다. 통계의 세부 수준 조정 수집자:분석. 열 많이 사용됩니다어디절 데이터 분포가 매우 불규칙한 경우 다른 열보다 더 세밀한 데이터 히스토그램입니다. 참조테이블 세트 통계 변경또는 다음을 사용하여 데이터베이스 전체 기본값을 변경합니다.default_statistics_target구성 매개변수.

또한 기본적으로 사용 가능한 정보가 제한되어 있습니다. 기능의 선택성에 대해. 그러나 생성하면 함수 호출을 사용하는 표현식 인덱스, 유용함 기능에 대한 통계가 수집됩니다. 표현식을 사용하는 쿼리 계획을 크게 개선합니다. 색인.

23.1.4. 거래 ID 방지 랩어라운드 실패

PostgreSQL의 MVCC 트랜잭션 의미론은 비교 능력에 달려 있습니다. 거래 ID(XID) 숫자: 삽입 XID가 다음보다 큰 행 버전 현재 거래의 XID는"안에 미래"현재는 볼 수 없어야 합니다. 거래. 하지만 트랜잭션 ID의 크기가 제한되어 있으므로(32개) 비트) 장기간(40억 개 이상) 실행되는 클러스터 거래)가 어려움을 겪을 것입니다거래 ID 랩어라운드: XID 카운터는 0으로 돌아갑니다. 과거에 있었던 갑작스러운 거래가 현재인 것처럼 보입니다. 미래 — 이는 그들의 결과물이 보이지 않게 된다는 것을 의미합니다. 에서 단기적이고 치명적인 데이터 손실. (실제로 데이터는 아직 하지만 접근할 수 없다면 그것은 차갑고 위안이 되는 일입니다.) 이를 방지하려면 모든 테이블을 범퍼카 토토청소기로 청소해야 합니다. 적어도 20억 개의 트랜잭션마다 한 번씩 데이터베이스를 생성합니다.

주기적인 범퍼카 토토 청소로 문제가 해결되는 이유는 그PostgreSQL예약 특수 XID:FrozenXID. 이 XID 일반적인 XID 비교 규칙을 따르지 않으며 항상 모든 일반 XID보다 오래된 것으로 간주됩니다. 일반 XID는 다음과 같습니다. 모듈로-2를 사용하여 비교32산술. 이는 다음을 의미합니다. 모든 일반 XID에는 20억 개의 XID가 있습니다."나이가 많은"그리고 20억이"최신"; 또 다른 말로는 일반 XID 공간은 끝점이 없는 원형입니다. 따라서 행 버전이 생성되면 특정 일반 XID, 행 버전은 다음과 같이 나타납니다."과거에"다음 2개를 위해 10억 개의 거래, 우리가 말하는 일반 XID에 관계없이 약. 행 버전이 2개 이상 후에도 여전히 존재하는 경우 10억 건의 거래가 갑자기 발생하는 것처럼 보일 것입니다. 미래. 이를 방지하려면 이전 행 버전을 다시 할당해야 합니다. XIDFrozenXID그들이 오기 전에 언젠가 20억 건의 거래 기록에 도달했습니다. 일단 그들은 이 특수 XID가 할당되면 다음과 같이 나타납니다."과거에"모든 일반 거래에 랩어라운드 문제와 관계없이 이러한 행 버전은 기간에 관계없이 삭제될 때까지 유효합니다. 이 이전 XID의 재할당은 다음에서 처리됩니다.범퍼카 토토.

vacuum_freeze_min_ageXID 값이 대체되기까지의 기간을 제어합니다 와 함께FrozenXID. 이것의 더 큰 값 설정은 거래 정보를 더 오래 보존하는 반면 값이 작을수록 트랜잭션 수가 늘어납니다. 시간이 지나면 테이블을 다시 청소해야 합니다.

범퍼카 토토일반적으로 다음 페이지를 건너뜁니다. 데드 로우 버전은 없지만 해당 페이지는 여전히 남아 있을 수 있습니다. 이전 XID 값을 가진 행 버전이 있습니다. 모든 이전 XID를 보장하려면 다음으로 대체되었습니다.FrozenXID, 전체 테이블을 스캔해야 합니다.vacuum_freeze_table_age언제 제어범퍼카 토토그렇습니다: 테이블이 완전히 채워지지 않은 경우 전체 테이블 스윕이 강제 실행됩니다. 스캔됨vacuum_freeze_table_age마이너스vacuum_freeze_min_age거래. 힘을 0으로 설정범퍼카 토토항상 모든 페이지를 효과적으로 스캔하려면 가시성 맵을 무시합니다.

테이블이 범퍼카 토토 상태가 될 수 있는 최대 시간은 2입니다 10억 거래에서 마이너스vacuum_freeze_min_age당시의 값범퍼카 토토마지막으로 전체 테이블을 스캔했습니다. 그 이상 오랫동안 범퍼카 토토 상태가 되지 않으면 데이터가 손실됩니다. 결과가 나올 수 있습니다. 이런 일이 발생하지 않도록 하려면 autovacuum 다음보다 오래된 XID를 포함할 수 있는 모든 테이블에서 호출됩니다. 구성 매개변수에 의해 지정된 연령autovacuum_freeze_max_age. (이것은 autovacuum이 비활성화된 경우에도 발생합니다.)

이것은 테이블이 달리 범퍼카 토토청소되지 않으면, autovacuum은 대략 한 번씩 호출됩니다.autovacuum_freeze_max_age마이너스vacuum_freeze_min_age거래. 공간 활용을 위해 정기적으로 범퍼카 토토 청소를 하는 테이블의 경우 목적상 이것은 별로 중요하지 않습니다. 그러나 정적의 경우 테이블(삽입을 수신하지만 업데이트는 수신하지 않는 테이블 포함) 또는 삭제), 공간 회수를 위해 범퍼카 토토 작업을 수행할 필요가 없으며, 따라서 사이의 간격을 최대화하는 것이 유용할 수 있습니다. 매우 큰 정적 테이블에서 강제 자동 범퍼카 토토 처리. 분명히 하나 증가시켜 이를 수행할 수 있습니다.autovacuum_freeze_max_age또는 감소vacuum_freeze_min_age.

다음에 대한 유효 최대값vacuum_freeze_table_age0.95 *입니다autovacuum_freeze_max_age; 보다 높은 설정 최대치로 제한됩니다. 다음보다 큰 값autovacuum_freeze_max_age하지 않을 거예요 랩 어라운드 방지 autovacuum이 가능하기 때문에 의미가 있습니다. 어쨌든 그 시점에서 트리거되고 0.95 승수는 그대로 유지됩니다. 매뉴얼을 실행하기 위한 약간의 호흡 공간범퍼카 토토그 일이 일어나기 전에. 경험상,vacuum_freeze_table_age설정되어야 합니다 다소 낮은 값으로autovacuum_freeze_max_age, 충분한 간격을 두어 정기적으로 예정되어 있는 것입니다.범퍼카 토토또는 일반적인 삭제 및 업데이트 활동으로 인해 실행되는 autovacuum은 다음과 같습니다. 그 창에서 실행하세요. 너무 가깝게 설정하면 랩어라운드 방지 autovacuum(테이블이 최근에 생성되었음에도 불구하고) 공간을 확보하기 위해 범퍼카 토토 청소기로 청소하는 반면, 값이 낮을수록 더 많은 공간이 확보됩니다. 전체 테이블을 자주 스캔합니다.

증가의 유일한 단점autovacuum_freeze_max_age(및vacuum_freeze_table_age그리고) 그게 바로pg_clog하위 디렉토리 데이터베이스 클러스터는 저장해야 하기 때문에 더 많은 공간을 차지합니다. 모든 트랜잭션의 커밋 상태를 다시autovacuum_freeze_max_age수평선. 커밋 상태는 트랜잭션당 2비트를 사용하므로, 만약autovacuum_freeze_max_age최대값으로 설정되어 있습니다. 허용되는 값은 20억입니다.pg_clog약 0.5GB까지 증가할 것으로 예상됩니다. 이것이라면 전체 데이터베이스 크기에 비해 사소한 설정입니다.autovacuum_freeze_max_age그쪽으로 최대 허용 값을 권장합니다. 그렇지 않으면 설정하십시오. 귀하가 기꺼이 허용하는 것에 따라pg_clog저장. (기본값은 2억 거래는 약 50MB로 해석됩니다.pg_clog저장.)

감소의 한 가지 단점vacuum_freeze_min_age그것이 원인이 될 수도 있다는 것입니다범퍼카 토토쓸데없는 일을 하기 위해: 테이블 행의 XID를FrozenXID은 그 후 곧 행이 수정되면 시간 낭비가 됩니다. 새로운 XID를 얻으려면). 따라서 설정이 충분히 커야 합니다. 해당 행은 변경될 가능성이 없을 때까지 고정되지 않습니다. 더. 이 설정을 줄이는 데 따른 또 다른 단점은 다음과 같습니다. 어떤 트랜잭션이 삽입되거나 수정되었는지에 대한 세부정보 행이 더 빨리 손실됩니다. 이런 정보가 가끔 들어옵니다 특히 무엇이 잘못되었는지 분석하려고 할 때 편리합니다. 데이터베이스 오류 후. 이 두 가지 이유로 인해 감소 이 설정은 완전히 정적인 경우를 제외하고는 권장되지 않습니다. 테이블.

데이터베이스에서 가장 오래된 XID의 나이를 추적하려면,범퍼카 토토XID 통계를 다음 위치에 저장합니다. 시스템 테이블pg_class그리고pg_database. 특히,relfrozenxid테이블의 열pg_class행에 동결이 포함되어 있습니다. 마지막 전체 테이블에서 사용된 컷오프 XID범퍼카 토토해당 테이블에 대해. 이전의 모든 일반 XID 이 컷오프 XID보다 다음으로 대체됨이 보장됩니다.FrozenXID테이블 내. 마찬가지로,datfrozenxid열 데이터베이스의pg_database행은 해당 데이터베이스에 나타나는 일반 XID의 하한 — 테이블당 최소값입니다.relfrozenxid데이터베이스 내의 값. 에이 이 정보를 조사하는 편리한 방법은 다음을 실행하는 것입니다. 다음과 같은 쿼리:

c.oid::regclass를 table_name으로 선택,
       가장 큰(age(c.relfrozenxid),age(t.relfrozenxid))(나이)
pg_class c에서
왼쪽 조인 pg_class t ON c.reltoastrelid = t.oid
여기서 c.relkind = 'r';

pg_database에서 datname, age(datfrozenxid) 선택;

나이열은 숫자를 측정합니다 컷오프 XID부터 현재까지의 거래 거래의 XID.

범퍼카 토토일반적으로 페이지만 스캔합니다. 마지막 범퍼카 토토 이후 수정되었지만relfrozenxid다음 경우에만 고급화할 수 있습니다. 전체 테이블이 스캔됩니다. 전체 테이블은 다음과 같은 경우에 스캔됩니다.relfrozenxid이상vacuum_freeze_table_age거래 옛날, 언제범퍼카 토토정지옵션이 사용되거나 모든 페이지가 발생하는 경우 데드 로우 버전을 제거하려면 범퍼카 토토 청소가 필요합니다. 언제범퍼카 토토전체 테이블을 스캔한 후 끝났어나이(relfrozenxid)해야 한다 그보다 조금 더 많아라vacuum_freeze_min_age사용된 설정 (이후 시작된 트랜잭션 수에 따라 더 많음범퍼카 토토시작됨). 그렇지 않은 경우 전체 테이블 스캔범퍼카 토토발행됨 테이블에 까지autovacuum_freeze_max_age도달했습니다. 곧 테이블에 autovacuum이 강제 적용됩니다.

어떤 이유로 autovacuum이 장치에서 이전 XID를 지우지 못하는 경우 테이블에서 시스템은 다음과 같은 경고 메시지를 보내기 시작합니다. 데이터베이스의 가장 오래된 XID가 천만 트랜잭션에 도달할 때 랩어라운드 지점에서:

경고: 데이터베이스 "mydb"는 177009986 트랜잭션 내에서 비워져야 합니다
힌트: 데이터베이스 종료를 방지하려면 "mydb"에서 데이터베이스 전체 VACUUM을 실행하세요.

(설명서범퍼카 토토수정해야 합니다. 힌트에서 제안한 문제; 하지만 참고하세요.범퍼카 토토수퍼유저가 수행해야 합니다. 그렇지 않으면 시스템 카탈로그를 처리하지 못하여 다음 작업을 수행할 수 없습니다. 데이터베이스를 발전시킵니다.datfrozenxid.) 이러한 경고가 무시하면 시스템이 종료되고 새로운 시작이 거부됩니다. 거래가 100만 건 미만인 경우 거래 둘러볼 때까지 남음:

오류: 데이터베이스가 "mydb" 데이터베이스의 랩어라운드 데이터 손실을 방지하기 위한 명령을 허용하지 않습니다.
힌트: 포스트마스터를 중지하고 "mydb"에서 VACUUM에 대한 독립형 백엔드를 사용하십시오.

1백만 거래의 안전 마진은 다음을 허용하기 위해 존재합니다. 관리자는 수동으로 실행하여 데이터 손실 없이 복구합니다. 필수범퍼카 토토명령. 그러나, 시스템이 종료되면 시스템은 명령을 실행하지 않으므로 안전 종료 모드로 전환하는 유일한 방법은 다음과 같습니다. 서버를 중지하고 단일 사용자 백엔드를 사용하여 실행합니다.범퍼카 토토. 종료 모드가 아닙니다. 단일 사용자 백엔드에 의해 시행됩니다. 참조포스트그레스자세한 내용은 참조 페이지 단일 사용자 백엔드 사용에 대해 알아보세요.

23.1.5. Autovacuum 데몬

포스트그레SQL선택사항이 있습니다 그러나 매우 권장되는 기능은자동 범퍼카 토토, 그 목적은 실행범퍼카 토토그리고분석명령. 활성화되면 자동 범퍼카 토토화 다수의 테이블이 삽입되었는지 확인하고, 업데이트되거나 삭제된 튜플. 이러한 검사에서는 통계를 사용합니다. 수집 시설; 따라서 autovacuum을 사용할 수 없습니다. 않는 한track_counts다음으로 설정됨. 기본적으로 구성에서는 autovacuuming이 활성화되고 관련 구성 매개변수가 적절하게 설정되었습니다.

"autovacuum 데몬"사실 여러 프로세스로 구성됩니다. 영구 데몬이 있습니다 프로세스라고 합니다.자동 범퍼카 토토화 런처, 시작을 담당하는자동 범퍼카 토토 작업자모든 데이터베이스에 대한 프로세스입니다. 런처는 시간에 따라 작업을 배포하여 다음을 시도합니다. 매 데이터베이스마다 하나의 작업자를 시작합니다.autovacuum_naptime초. (따라서 설치가 완료된 경우)N데이터베이스, 새로운 작업자가 간격으로 실행됨autovacuum_naptime/N초.) 최대autovacuum_max_workers작업자 프로세스가 동시에 실행될 수 있습니다. 만약 거기에 이상입니다autovacuum_max_workers데이터베이스가 처리되면 다음 데이터베이스가 처리됩니다 첫 번째 작업자가 끝나자마자. 각 작업자 프로세스는 데이터베이스 내의 각 테이블을 확인하고 실행합니다.범퍼카 토토및/또는분석필요에 따라.

여러 개의 큰 테이블이 모두 범퍼카 토토 청소기로 청소할 수 있게 되면 짧은 시간 안에 모든 autovacuum 작업자가 오랫동안 테이블을 청소하느라 바빴습니다. 이 다른 테이블과 데이터베이스가 비워지지 않게 됩니다. 직원이 나올 때까지. 개수에는 제한이 없습니다. 작업자는 단일 데이터베이스에 있을 수 있지만 작업자는 다른 사람이 이미 수행한 작업을 반복하지 마십시오. 노동자. 실행 중인 작업자 수는 포함되지 않습니다. 쪽으로max_connections또는superuser_reserved_connections한계.

다음 테이블relfrozenxid값 이상입니다autovacuum_freeze_max_age오래된 거래는 항상 비워집니다. (이는 다음에도 적용됩니다. 동결 최대 기간이 스토리지를 통해 수정된 테이블 매개변수; 아래 참조). 그렇지 않은 경우, 튜플의 수가 마지막 이후로 사용되지 않음범퍼카 토토초과"범퍼카 토토 임계값", 테이블이 범퍼카 토토 청소기로 청소되었습니다. 범퍼카 토토 임계값은 다음과 같이 정의됩니다.

범퍼카 토토 임계값 = 범퍼카 토토 기본 임계값 + 범퍼카 토토 배율 인수 * 튜플 수

여기서 범퍼카 토토 베이스 임계값은autovacuum_vacuum_threshold, 범퍼카 토토 스케일 팩터는autovacuum_vacuum_scale_factor, 튜플 수는pg_class.reltuples. 쓸모없는 튜플의 수는 다음과 같습니다. 통계 수집기에서 얻었습니다. 그것은 반정확하다 각각 업데이트된 개수업데이트그리고삭제작동. (그것은 단지 일부 정보가 손실될 수 있으므로 준정확합니다. 무거운 짐.) 만약에relfrozenxid테이블 값이 다음보다 큽니다.vacuum_freeze_table_age오래된 거래, 전체 테이블을 스캔하여 오래된 튜플을 동결하고 진행합니다.relfrozenxid, 그렇지 않으면 페이지만 마지막 범퍼카 토토 검사 이후 수정된 항목이 검색됩니다.

분석을 위해 유사한 조건이 사용됩니다: 임계값, 다음과 같이 정의됩니다:

임계값 분석 = 기본 임계값 분석 + 배율 인수 분석 * 튜플 수

은 삽입, 업데이트된 총 튜플 수와 비교됩니다. 또는 마지막 이후 삭제됨분석.

임시 테이블은 autovacuum으로 접근할 수 없습니다. 따라서 적절한 범퍼카 토토 및 분석 작업을 수행해야 합니다. 세션 SQL 명령을 통해 수행됩니다.

기본 임계값 및 배율 인수는 다음에서 가져옵니다.postgresql.conf, 하지만 가능합니다 테이블별로 재정의합니다. 참조저장 매개변수41886_42037섹션 18.10더 보기 전역 설정에 대한 세부정보입니다.

기본 임계값 및 배율 인수 외에 각각에 대해 설정할 수 있는 6개의 추가 autovacuum 매개변수가 있습니다. 저장 매개변수를 통한 테이블. 첫 번째 매개변수,autovacuum_enabled, 다음으로 설정할 수 있습니다.거짓autovacuum 데몬에게 건너뛰도록 지시 그 특정 테이블은 완전히요. 이 경우 autovacuum은 거래 ID를 방지하기 위해 필요한 경우에만 테이블을 터치하세요. 랩 어라운드. 또 다른 두 개의 매개변수,autovacuum_vacuum_cost_delay그리고autovacuum_vacuum_cost_limit는 설정하는 데 사용됩니다. 비용 기반 범퍼카 토토 지연 기능에 대한 테이블별 값 (참조섹션 18.4.3). autovacuum_freeze_min_age, autovacuum_freeze_max_age그리고autovacuum_freeze_table_age설정하는 데 사용됩니다. 에 대한 값vacuum_freeze_min_age, autovacuum_freeze_max_age그리고vacuum_freeze_table_age각각.

여러 작업자가 실행 중일 때 비용 지연 매개변수는 이다"균형"달리는 모든 것 중에서 시스템에 대한 총 I/O 영향이 동일하도록 실제로 실행 중인 작업자 수에 관계없이. 그러나, 테이블을 처리하는 모든 작업자autovacuum_vacuum_cost_delay또는autovacuum_vacuum_cost_limit설정되었습니다. 밸런싱 알고리즘에서는 고려되지 않습니다.