| 윈 토토 : 문서 : 9.4 : 윈 토토 | |||
|---|---|---|---|
| 토토 사이트 순위 : 문서 : 9.4 : 일상적인 데이터베이스 유지 보수 작업 | 토토 사이트 순위 : 문서 : 9.4 : 일상적인 데이터베이스 유지 보수 작업 | 23장. 일상적인 데이터베이스 유지 관리 작업 | 토토 사이트 순위 : 문서 : 9.4 : 일상적인 다시 인덱싱 | 
PostgreSQL데이터베이스에는 정기적인 유지 관리가 필요합니다.청소 중. 대부분의 설치에서는 무지개 토토 청소를 수행하는 것으로 충분합니다.autovacuum 데몬, 설명된 내용은섹션 23.1.6. 상황에 맞는 최상의 결과를 얻으려면 거기에 설명된 자동 무지개 토토화 매개변수를 조정해야 할 수도 있습니다. 일부 데이터베이스 관리자는 데몬의 활동을 수동으로 관리되는 활동으로 보완하거나 교체하기를 원할 것입니다.무지개 토토일반적으로 일정에 따라 실행되는 명령크론또는작업 스케줄러스크립트. 수동으로 관리되는 무지개 토토청소기를 올바르게 설정하려면 다음 몇 가지 하위 섹션에서 설명하는 문제를 이해하는 것이 중요합니다. 자동 무지개 토토 처리를 사용하는 관리자는 자동 무지개 토토 처리를 이해하고 조정하는 데 도움이 되도록 이 자료를 훑어보는 것이 좋습니다.
포스트그레SQL'sPostgreSQL : 문서 : 9.4 : 사설 토토명령은 여러 가지 이유로 정기적으로 각 테이블을 처리해야 합니다.
업데이트되거나 삭제된 행이 차지하는 디스크 공간을 복구하거나 재사용합니다.
다음에서 사용하는 데이터 통계를 업데이트하려면포스트그레SQL쿼리 플래너.
가시성 지도를 업데이트하여 색인 전용 스캔 속도를 높입니다.
다음으로 인해 매우 오래된 데이터의 손실을 방지하기 위해트랜잭션 ID 랩어라운드또는Multixact ID 랩어라운드.
이러한 각 이유는 수행을 지시합니다.무지개 토토다음 하위 섹션에 설명된 대로 다양한 빈도와 범위의 작업.
다음에는 두 가지 변형이 있습니다.무지개 토토: 표준무지개 토토그리고무지개 토토 가득 참. 무지개 토토 가득 참더 많은 디스크 공간을 확보할 수 있지만 훨씬 더 느리게 실행됩니다. 또한,의 표준형무지개 토토프로덕션 데이터베이스 작업과 동시에 실행될 수 있습니다. (다음과 같은 명령)선택, 삽입, 업데이트및삭제다음과 같은 명령을 사용하여 테이블 정의를 수정할 수는 없지만 계속해서 정상적으로 작동합니다.테이블 변경청소되는 동안.)무지개 토토이 가득 참작업 중인 테이블에 대한 배타적 잠금이 필요하므로 테이블의 다른 사용과 동시에 수행할 수 없습니다. 따라서 일반적으로 관리자는 표준을 사용하도록 노력해야 합니다.무지개 토토그리고 피하세요무지개 토토 가득 참.
무지개 토토상당한 양의 I/O 트래픽을 생성하여 다른 활성 세션의 성능을 저하시킬 수 있습니다. 백그라운드 무지개 토토 청소가 성능에 미치는 영향을 줄이기 위해 조정할 수 있는 구성 매개변수가 있습니다. 참조섹션 18.4.4.
에PostgreSQL,업데이트또는삭제행의 이전 버전은 즉시 제거되지 않습니다. 이 접근 방식은 다중 버전 동시성 제어의 이점을 얻는 데 필요합니다(MVCC, 참조13장): 행 버전은 잠재적으로 다른 트랜잭션에 표시되는 동안 삭제하면 안 됩니다. 그러나 결국 오래되었거나 삭제된 행 버전은 더 이상 어떤 트랜잭션에도 관심이 없습니다. 그런 다음 디스크 공간 요구 사항이 무제한으로 증가하는 것을 방지하기 위해 차지하는 공간을 새 행에서 재사용할 수 있도록 회수해야 합니다. 이는 다음을 실행하여 수행됩니다.무지개 토토.
의 표준형무지개 토토테이블과 인덱스에서 데드 행 버전을 제거하고 향후 재사용이 가능한 공간을 표시합니다. 그러나 테이블 끝에 있는 하나 이상의 페이지가 완전히 비어 있고 배타적 테이블 잠금을 쉽게 얻을 수 있는 특수한 경우를 제외하고는 운영 체제에 공간을 반환하지 않습니다. 대조적으로,무지개 토토이 가득 참불용 공간 없이 완전히 새로운 버전의 테이블 파일을 작성하여 테이블을 적극적으로 압축합니다. 이렇게 하면 테이블 크기가 최소화되지만 시간이 오래 걸릴 수 있습니다. 또한 작업이 완료될 때까지 테이블의 새 복사본을 위한 추가 디스크 공간이 필요합니다.
일상적인 무지개 토토 청소의 일반적인 목표는 표준을 수행하는 것입니다.무지개 토토필요를 피할 수 있을 만큼 자주무지개 토토이 가득 참. autovacuum 데몬은 이런 방식으로 작동하려고 시도하지만 실제로는 실행되지 않습니다.무지개 토토 가득 참. 이 접근 방식의 아이디어는 테이블을 최소 크기로 유지하는 것이 아니라 디스크 공간의 안정된 상태 사용을 유지하는 것입니다. 각 테이블은 최소 크기에 해당하는 공간에 더해 무지개 토토 청소 사이에 사용되는 공간을 차지합니다. 그래도무지개 토토이 가득 참테이블을 최소 크기로 다시 축소하고 디스크 공간을 운영 체제에 반환하는 데 사용할 수 있습니다. 테이블이 나중에 다시 커지면 별 의미가 없습니다. 따라서 중간 빈도 표준무지개 토토실행은 드물게 실행하는 것보다 더 나은 접근 방식입니다.무지개 토토 가득 참대량 업데이트된 테이블을 유지하기 위해 실행됩니다.
일부 관리자는 부하가 적은 밤에 모든 작업을 수행하는 등 스스로 무지개 토토 청소 일정을 잡는 것을 선호합니다. 고정된 일정에 따라 무지개 토토 청소를 수행할 때 어려운 점은 테이블의 업데이트 활동이 예기치 않게 급증하는 경우 테이블이 너무 커져서 다음과 같은 수준이 될 수 있다는 것입니다.무지개 토토 가득 참공간을 확보하려면 정말 필요합니다. autovacuum 데몬을 사용하면 데몬이 업데이트 활동에 대한 응답으로 동적으로 무지개 토토 청소를 예약하므로 이 문제가 완화됩니다. 작업 부하가 극도로 예측 가능한 경우가 아니면 데몬을 완전히 비활성화하는 것은 현명하지 않습니다. 한 가지 가능한 절충안은 비정상적으로 과도한 업데이트 활동에만 반응하도록 데몬의 매개변수를 설정하여 예정된 동안 일이 통제 불능 상태가 되는 것을 방지하는 것입니다.무지개 토토s는 일반적인 로드일 때 대부분의 작업을 수행할 것으로 예상됩니다.
autovacuum을 사용하지 않는 경우 일반적인 접근 방식은 데이터베이스 전체에 걸쳐 예약하는 것입니다.무지개 토토사용량이 적은 기간 동안 하루에 한 번, 필요에 따라 많이 업데이트되는 테이블을 더 자주 정리하여 보충합니다. (업데이트 속도가 매우 높은 일부 설치에서는 가장 바쁜 테이블을 몇 분에 한 번씩 무지개 토토 청소합니다.) 클러스터에 여러 데이터베이스가 있는 경우 다음을 잊지 마세요.무지개 토토각각; 프로그램vacuumdb도움이 될 것 같아요.
팁:평야무지개 토토대량 업데이트 또는 삭제 활동으로 인해 테이블에 데드 행 버전이 많이 포함된 경우 만족스럽지 못할 수 있습니다. 그러한 테이블이 있고 그것이 차지하는 초과 디스크 공간을 회수해야 하는 경우 다음을 사용해야 합니다.무지개 토토이 가득 참또는 대안으로PostgreSQL : 문서 : 9.4 : 토토또는 다음의 테이블 재작성 변형 중 하나무지개 토토 PostgreSQL : 문서 : 9.4 : Alter Table. 이 명령은 테이블의 전체 새 복사본을 다시 작성하고 이에 대한 새 인덱스를 구축합니다. 이러한 모든 옵션에는 배타적 잠금이 필요합니다. 또한 테이블과 인덱스의 이전 복사본은 새 복사본이 완료될 때까지 해제될 수 없기 때문에 일시적으로 테이블 크기와 동일한 추가 디스크 공간을 사용한다는 점에 유의하세요.
팁:전체 내용이 주기적으로 삭제되는 테이블이 있는 경우 다음을 사용하는 것을 고려하십시오.스포츠 토토 사이트 : 문서 : 9.4 : Truncate사용하는 것보다삭제다음에 이어무지개 토토. 잘라내기후속 작업 없이 테이블의 전체 내용을 즉시 제거무지개 토토또는무지개 토토 가득 참현재 사용되지 않는 디스크 공간을 회수합니다. 단점은 엄격한 MVCC 의미 체계를 위반한다는 것입니다.
그포스트그레SQL쿼리 플래너는 쿼리에 대한 좋은 계획을 생성하기 위해 테이블 내용에 대한 통계 정보에 의존합니다. 이 통계는 다음에 의해 수집됩니다.스포츠 토토 사이트 PostgreSQL : 문서 : 9.4 : Analyze명령은 단독으로 또는 선택적 단계로 호출될 수 있습니다.무지개 토토. 합리적으로 정확한 통계를 갖는 것이 중요합니다. 그렇지 않으면 계획을 잘못 선택하면 데이터베이스 성능이 저하될 수 있습니다.
autovacuum 데몬이 활성화되면 자동으로 실행됩니다.분석테이블의 내용이 충분히 변경될 때마다 명령합니다. 그러나 관리자는 수동으로 예약하는 것을 선호할 수 있습니다.분석작업, 특히 테이블의 업데이트 활동이 통계에 영향을 미치지 않는 것으로 알려진 경우"흥미롭다"열. 데몬 일정분석엄격히 삽입되거나 업데이트된 행 수의 함수로 사용됩니다. 그것이 의미 있는 통계적 변화로 이어질지 여부는 알 수 없습니다.
공간 복구를 위한 무지개 토토 청소와 마찬가지로 통계를 자주 업데이트하는 것은 거의 업데이트되지 않는 테이블보다 많이 업데이트되는 테이블에 더 유용합니다. 그러나 많이 업데이트된 테이블의 경우에도 데이터의 통계적 분포가 크게 변하지 않으면 통계를 업데이트할 필요가 없을 수도 있습니다. 간단한 경험 법칙은 테이블 열의 최소값과 최대값이 얼마나 변경되는지 생각해 보는 것입니다. 예를 들어,타임스탬프행 업데이트 시간을 포함하는 열은 행이 추가되고 업데이트됨에 따라 지속적으로 증가하는 최대값을 갖습니다. 이러한 열은 웹 사이트에서 액세스하는 페이지의 URL이 포함된 열보다 더 자주 통계 업데이트가 필요할 수 있습니다. URL 열은 자주 변경사항을 수신할 수 있지만 해당 값의 통계적 분포는 비교적 느리게 변경될 수 있습니다.
실행이 가능합니다분석특정 테이블 및 테이블의 특정 열에만 적용되므로 애플리케이션에 필요한 경우 일부 통계를 다른 통계보다 더 자주 업데이트할 수 있는 유연성이 있습니다. 그러나 실제로는 빠른 작업이기 때문에 일반적으로 전체 데이터베이스를 분석하는 것이 가장 좋습니다.분석모든 단일 행을 읽는 대신 테이블 행의 통계적으로 무작위 샘플링을 사용합니다.
팁:열별로 조정했지만분석빈도는 별로 생산적이지 않을 수 있습니다. 수집된 통계의 세부정보 수준을 열별로 조정하는 것이 좋습니다.분석. 에서 많이 사용되는 열어디절과 데이터 분포가 매우 불규칙한 경우 다른 열보다 더 세부적인 데이터 히스토그램이 필요할 수 있습니다. 참조테이블 세트 통계 변경또는를 사용하여 데이터베이스 전체 기본값을 변경합니다.default_statistics_target구성 매개변수.
또한 기본적으로 기능 선택에 대해 사용할 수 있는 정보가 제한되어 있습니다. 그러나 함수 호출을 사용하는 식 인덱스를 생성하면 함수에 대한 유용한 통계가 수집되므로 식 인덱스를 사용하는 쿼리 계획이 크게 향상될 수 있습니다.
팁:autovacuum 데몬이 실행되지 않습니다.분석외부 테이블에 대한 명령입니다. 얼마나 자주 유용할지 판단할 수단이 없기 때문입니다. 쿼리에 적절한 계획을 위해 외부 테이블에 대한 통계가 필요한 경우 수동 관리를 실행하는 것이 좋습니다.분석적절한 일정에 따라 해당 테이블에 명령을 내립니다.
무지개 토토 상태는 a를 유지합니다.토토 캔 : 문서 : 9.4 : 가시성 맵각 테이블에 대해 모든 활성 트랜잭션(및 페이지가 다시 수정될 때까지 모든 향후 트랜잭션)에 표시되는 것으로 알려진 튜플만 포함된 페이지를 추적합니다. 여기에는 두 가지 목적이 있습니다. 첫째, 정리할 내용이 없기 때문에 무지개 토토 청소기 자체는 다음 실행 시 이러한 페이지를 건너뛸 수 있습니다.
둘째, 허용합니다PostgreSQL기본 테이블을 참조하지 않고 색인만 사용하여 일부 쿼리에 응답합니다. 이후PostgreSQL인덱스에는 튜플 가시성 정보가 포함되어 있지 않습니다. 일반 인덱스 스캔은 일치하는 각 인덱스 항목에 대해 힙 튜플을 가져와 현재 트랜잭션에서 표시해야 하는지 여부를 확인합니다. 안색인 전용 스캔23712_24061
포스트그레SQL's토토 사이트 순위 PostgreSQL : 문서 : 9.4 : 소개트랜잭션 의미는 트랜잭션 ID를 비교할 수 있는지 여부에 따라 달라집니다. (XID) 숫자: 현재 트랜잭션의 XID보다 큰 삽입 XID가 있는 행 버전은"미래에"현재 트랜잭션에 표시되어서는 안 됩니다. 그러나 트랜잭션 ID의 크기는 제한되어 있으므로(32비트) 오랫동안 실행되는 클러스터(40억 개 이상의 트랜잭션)는 문제를 겪게 됩니다.트랜잭션 ID 랩어라운드: XID 카운터가 0으로 돌아가고 갑자기 과거의 트랜잭션이 미래에 있는 것처럼 보입니다. 즉, 해당 출력이 보이지 않게 됩니다. 즉, 치명적인 데이터 손실입니다. (실제로 데이터는 여전히 존재하지만, 접근할 수 없다면 불편할 것입니다.) 이를 방지하려면 적어도 20억 트랜잭션마다 한 번씩 모든 데이터베이스의 모든 테이블을 무지개 토토 청소기로 청소해야 합니다.
주기적인 무지개 토토 청소로 문제가 해결되는 이유는 다음과 같습니다.무지개 토토행을 다음으로 표시합니다동결는 삽입 트랜잭션의 효과가 모든 현재 및 미래 트랜잭션에 확실히 표시될 만큼 충분히 과거에 커밋된 트랜잭션에 의해 삽입되었음을 나타냅니다. 일반 XID는 modulo-2를 사용하여 비교됩니다.32산술. 이는 모든 일반 XID에 대해 20억 개의 XID가 있음을 의미합니다."나이가 많은"그리고 20억이"최신"; 다르게 말하면 일반 XID 공간은 끝점이 없는 원형이라는 것입니다. 따라서 특정 일반 XID를 사용하여 행 버전이 생성되면 행 버전은 다음과 같이 나타납니다."과거에"우리가 말하는 일반 XID가 무엇이든 관계없이 다음 20억 개의 거래를 위해. 20억 개가 넘는 트랜잭션 후에도 행 버전이 여전히 존재한다면 갑자기 미래 버전인 것처럼 보일 것입니다. 이를 방지하기 위해,포스트그레SQL특수 XID를 예약합니다.FrozenTransactionId은 일반 XID 비교 규칙을 따르지 않으며 항상 모든 일반 XID보다 오래된 것으로 간주됩니다. 고정된 행 버전은 삽입된 XID가 다음과 같이 처리됩니다.FrozenTransactionId, 그러면 다음과 같이 표시됩니다."과거에"랩어라운드 문제에 관계없이 모든 일반 트랜잭션에 적용되므로 이러한 행 버전은 기간에 관계없이 삭제될 때까지 유효합니다.
참고:에PostgreSQL9.4 이전 버전에서는 실제로 행 삽입 XID를 다음으로 대체하여 고정이 구현되었습니다.FrozenTransactionId, 행의에 표시되었습니다.xmin시스템 열. 최신 버전에서는 플래그 비트만 설정하여 행의 원본을 보존합니다.xmin가능한 법의학 용도. 그러나 다음이 포함된 행은xmin같음FrozenTransactionId(2)는 여전히 데이터베이스에서 찾을 수 있습니다.pg_upgrade9.4 이전 버전에서 왔습니다.
또한 시스템 카탈로그에는 다음과 같은 행이 포함될 수 있습니다.xmin같음BootstrapTransactionId(1), 이는 첫 번째 단계에서 삽입되었음을 나타냅니다.initdb. 좋아요FrozenTransactionId, 이 특수 XID는 모든 일반 XID보다 오래된 것으로 처리됩니다.
vacuum_freeze_min_ageXID를 포함하는 행이 고정되기 전에 XID 값이 얼마나 오래되어야 하는지 제어합니다. 이 설정을 늘리면 고정될 행이 곧 다시 수정될 경우 불필요한 작업을 피할 수 있지만, 이 설정을 줄이면 테이블을 다시 정리해야 하기 전에 경과할 수 있는 트랜잭션 수가 늘어납니다.
무지개 토토일반적으로 데드 행 버전이 없는 페이지는 건너뛰지만 해당 페이지에는 여전히 이전 XID 값이 있는 행 버전이 있을 수 있습니다. 모든 이전 행 버전이 고정되었는지 확인하려면 전체 테이블을 스캔해야 합니다.vacuum_freeze_table_age언제 제어무지개 토토그렇습니다: 테이블이 완전히 스캔되지 않은 경우 전체 테이블 스윕이 강제로 수행됩니다.vacuum_freeze_table_age마이너스vacuum_freeze_min_age거래. 힘을 0으로 설정무지개 토토항상 모든 페이지를 스캔하여 가시성 지도를 효과적으로 무시합니다.
테이블이 비워지지 않을 수 있는 최대 시간은 20억 트랜잭션에서 다음 시간을 뺀 값입니다.vacuum_freeze_min_age당시의 값무지개 토토마지막으로 전체 테이블을 스캔했습니다. 그보다 오랫동안 무지개 토토 상태가 되지 않으면 데이터가 손실될 수 있습니다. 이런 일이 발생하지 않도록 하기 위해 구성 매개변수에 지정된 기간보다 오래된 XID를 가진 고정되지 않은 행이 포함될 수 있는 모든 테이블에서 autovacuum이 호출됩니다.autovacuum_freeze_max_age. (이것은 autovacuum이 비활성화된 경우에도 발생합니다.)
이는 테이블이 달리 무지개 토토 처리되지 않으면 대략 한 번씩 테이블에 대해 자동 무지개 토토이 호출됨을 의미합니다.autovacuum_freeze_max_age마이너스vacuum_freeze_min_age거래. 공간 회수 목적으로 정기적으로 무지개 토토 청소를 하는 테이블의 경우 이는 그다지 중요하지 않습니다. 그러나 정적 테이블(삽입을 수신하지만 업데이트나 삭제는 수행하지 않는 테이블 포함)의 경우 공간 회수를 위해 Vacuum을 수행할 필요가 없으므로 매우 큰 정적 테이블에서 강제 Autovacuum 간격을 최대화하는 것이 유용할 수 있습니다. 분명히 다음 중 하나를 증가시켜 이를 수행할 수 있습니다.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, 정기적으로 예약될 수 있도록 충분한 간격을 둡니다.무지개 토토또는 일반적인 삭제 및 업데이트 활동에 의해 트리거된 자동 무지개 토토이 해당 창에서 실행됩니다. 너무 가깝게 설정하면 최근에 공간을 확보하기 위해 테이블을 vacuuming한 경우에도 랩어라운드 방지 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를 획득하게 만드는) 시간 낭비입니다. 따라서 설정은 행이 더 이상 변경되지 않을 때까지 행이 고정되지 않도록 충분히 커야 합니다.
데이터베이스에서 가장 오래되고 고정되지 않은 XID의 나이를 추적하려면,무지개 토토시스템 테이블에 XID 통계를 저장합니다pg_class그리고pg_database. 특히,relfrozenxid테이블의 열pg_class행에는 마지막 전체 테이블에서 사용된 고정 컷오프 XID가 포함되어 있습니다.무지개 토토그 테이블에 대해. 이 기준 XID보다 오래된 XID를 사용하는 트랜잭션으로 삽입된 모든 행은 고정된 것으로 보장됩니다. 마찬가지로,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
WHERE c.relkind IN ('r', 'm');
pg_database에서 datname, age(datfrozenxid) 선택;
그나이열은 컷오프 XID부터 현재 트랜잭션의 XID까지의 트랜잭션 수를 측정합니다.
무지개 토토일반적으로 마지막 무지개 토토 이후 수정된 페이지만 검사하지만relfrozenxid전체 테이블을 스캔할 때만 고급화할 수 있습니다. 전체 테이블은 다음과 같은 경우에 스캔됩니다.relfrozenxid이상vacuum_freeze_table_age오래된 거래, 언제무지개 토토's정지옵션이 사용되거나 데드 로우 버전을 제거하기 위해 모든 페이지를 정리해야 하는 경우. 언제무지개 토토완료 후 전체 테이블을 스캔합니다.나이(relfrozenxid)다음보다 조금 더 커야 합니다vacuum_freeze_min_age사용된 설정(이후 시작된 트랜잭션 수에 따라 더 많음무지개 토토시작됨). 전체 테이블 스캔이 없는 경우무지개 토토다음까지 테이블에 발행됩니다.autovacuum_freeze_max_age도달하면 테이블에 자동 무지개 토토이 곧 강제 실행됩니다.
어떤 이유로 autovacuum이 테이블에서 이전 XID를 지우지 못하는 경우 시스템은 데이터베이스의 가장 오래된 XID가 랩어라운드 지점에서 천만 트랜잭션에 도달할 때 다음과 같은 경고 메시지를 보내기 시작합니다.
경고: 데이터베이스 "mydb"는 177009986 트랜잭션 내에서 비워져야 합니다 힌트: 데이터베이스 종료를 방지하려면 "mydb"에서 데이터베이스 전체 VACUUM을 실행하세요.
(설명서무지개 토토힌트에서 제안한 대로 문제를 해결해야 합니다. 하지만 참고하세요.무지개 토토수퍼유저가 수행해야 합니다. 그렇지 않으면 시스템 카탈로그 처리에 실패하여 데이터베이스를 발전시킬 수 없습니다.datfrozenxid.) 이러한 경고를 무시하면 랩어라운드까지 남은 트랜잭션이 100만 개 미만이면 시스템이 종료되고 새 트랜잭션 시작이 거부됩니다.
오류: 데이터베이스가 "mydb" 데이터베이스의 랩어라운드 데이터 손실을 방지하기 위한 명령을 허용하지 않습니다. 힌트: 포스트마스터를 중지하고 단일 사용자 모드에서 해당 데이터베이스를 비우세요.
관리자가 필요한 작업을 수동으로 실행하여 데이터 손실 없이 복구할 수 있도록 1백만 트랜잭션의 안전 여유가 존재합니다.무지개 토토명령. 그러나 시스템이 안전 종료 모드로 전환되면 명령을 실행하지 않으므로 이를 수행하는 유일한 방법은 서버를 중지하고 단일 사용자 모드에서 서버를 시작하여 실행하는 것입니다.무지개 토토. 단일 사용자 모드에서는 종료 모드가 적용되지 않습니다. 참조포스트그레단일 사용자 모드 사용에 대한 자세한 내용은 참조 페이지.
Multixact ID는 여러 트랜잭션에 의한 행 잠금을 지원하는 데 사용됩니다. 튜플 헤더에는 잠금 정보를 저장할 수 있는 공간이 제한되어 있으므로 해당 정보는 다음과 같이 인코딩됩니다."다중 거래 ID", 또는 줄여서 multixact ID입니다. 동시에 행을 잠그는 둘 이상의 트랜잭션이 있을 때마다 발생합니다. 특정 multixact ID에 어떤 트랜잭션 ID가 포함되어 있는지에 대한 정보는pg_multixact하위 디렉터리에 있으며 multixact ID만에 나타납니다.xmax37685_38052
동안무지개 토토테이블 스캔, 부분 또는 전체 테이블, 다음보다 오래된 다중 정확한 IDvacuum_multixact_freeze_min_age은 0 값, 단일 트랜잭션 ID 또는 최신 multixact ID일 수 있는 다른 값으로 대체됩니다. 각 테이블마다,pg_class.relminmxid해당 테이블의 튜플에 여전히 나타나는 가장 오래된 다중 쌍 ID를 저장합니다. 이 값이 다음보다 오래된 경우vacuum_multixact_freeze_table_age, 전체 테이블 스캔이 강제 실행됩니다. 전체 테이블무지개 토토스캔은 원인에 관계없이 해당 테이블의 값을 향상시킬 수 있습니다. 결국 모든 데이터베이스의 모든 테이블이 스캔되고 가장 오래된 multixact 값이 향상됨에 따라 이전 multixact에 대한 디스크 내 스토리지가 제거될 수 있습니다.
안전 장치로서 multixact-age가 다음보다 큰 모든 테이블에 대해 전체 테이블 무지개 토토 스캔이 발생합니다.autovacuum_multixact_freeze_max_age. 사용된 구성원 저장 공간의 양이 주소 지정 가능한 저장 공간의 50%를 초과하는 경우 전체 테이블 무지개 토토 스캔은 가장 오래된 다중 작업 기간을 가진 테이블부터 시작하여 모든 테이블에 대해 점진적으로 발생합니다. autovacuum이 명목상 비활성화된 경우에도 이러한 종류의 전체 테이블 검색이 모두 발생합니다.
PostgreSQL선택사항이지만 적극 권장되는 기능이 있습니다.자동 무지개 토토, 그 목적은 다음의 실행을 자동화하는 것입니다.무지개 토토그리고분석명령. 활성화되면 autovacuum은 삽입, 업데이트 또는 삭제된 튜플이 많이 있는 테이블을 확인합니다. 이러한 검사에서는 통계 수집 기능을 사용합니다. 따라서 autovacuum은 다음을 제외하고는 사용할 수 없습니다.track_counts다음으로 설정됨참. 기본 구성에서는 autovacuuming이 활성화되고 관련 구성 매개변수가 적절하게 설정됩니다.
그"autovacuum 데몬"실제로는 여러 프로세스로 구성되어 있습니다. 다음과 같은 지속적인 데몬 프로세스가 있습니다.자동 무지개 토토 실행기, 시작을 담당합니다.자동 무지개 토토 작업자모든 데이터베이스에 대한 프로세스입니다. 런처는 시간에 따라 작업을 분산하여 매 데이터베이스 내에서 하나의 작업자를 시작하려고 시도합니다.autovacuum_naptime초. (따라서 설치가 완료된 경우)N데이터베이스, 매주 새로운 작업자가 시작됩니다.autovacuum_naptime/N초.) 최대autovacuum_max_workers작업자 프로세스가 동시에 실행될 수 있습니다. 개 이상인 경우autovacuum_max_workers데이터베이스를 처리할 경우 첫 번째 작업자가 완료되자마자 다음 데이터베이스가 처리됩니다. 각 작업자 프로세스는 데이터베이스 내의 각 테이블을 확인하고 실행합니다.무지개 토토및/또는분석필요에 따라.log_autovacuum_min_durationautovacuum 활동을 모니터링하는 데 사용할 수 있습니다.
몇 개의 큰 테이블이 짧은 시간 내에 모두 무지개 토토 청소 대상이 되면 모든 자동 무지개 토토 작업자는 오랜 기간 동안 해당 테이블을 무지개 토토 청소하는 데 전념할 수 있습니다. 이로 인해 작업자가 사용 가능해질 때까지 다른 테이블과 데이터베이스가 정리되지 않습니다. 단일 데이터베이스에 포함될 수 있는 작업자 수에는 제한이 없지만 작업자는 다른 작업자가 이미 수행한 작업을 반복하지 않으려고 노력합니다. 실행 중인 작업자 수는 계산에 포함되지 않습니다.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, 그러나 테이블별로 재정의하는 것이 가능합니다. 참조저장소 매개변수자세한 정보를 확인하세요. 저장 매개변수를 통해 설정이 변경된 경우 해당 값이 사용됩니다. 그렇지 않으면 전역 설정이 사용됩니다. 참조무지개 토토 : 문서 : 9.4 : 무지개 토토 진공 무지개 토토전역 설정에 대한 자세한 내용을 확인하세요.
기본 임계값 및 배율 인수 외에도 저장 매개변수를 통해 각 테이블에 설정할 수 있는 6개의 자동 무지개 토토 매개변수가 더 있습니다. 첫 번째 매개변수,autovacuum_enabled, 다음으로 설정 가능거짓autovacuum 데몬에게 특정 테이블을 완전히 건너뛰도록 지시합니다. 이 경우 autovacuum은 트랜잭션 ID 랩어라운드를 방지하기 위해 필요한 경우에만 테이블을 터치합니다. 또 다른 두 개의 매개변수,autovacuum_vacuum_cost_delay그리고autovacuum_vacuum_cost_limit은 비용 기반 무지개 토토 지연 기능에 대한 테이블별 값을 설정하는 데 사용됩니다(참조섹션 18.4.4). 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설정된 항목은 밸런싱 알고리즘에서 고려되지 않습니다.
Autovacuum 작업자는 일반적으로 다른 명령을 차단하지 않습니다. 프로세스가 다음과 충돌하는 잠금을 획득하려고 시도하는 경우업데이트 독점 공유autovacuum에 의해 잠금이 유지됩니다. 잠금 획득으로 인해 autovacuum이 중단됩니다. 잠금 모드 충돌에 대해서는 다음을 참조하세요.표 13-2. 그러나 트랜잭션 ID 랩어라운드를 방지하기 위해 autovacuum이 실행 중인 경우(즉,pg_stat_activity보기는 다음으로 끝납니다.(랩어라운드 방지를 위해)), autovacuum은 자동으로 중단되지 않습니다.
| 경고 | 
| 
 다음과 충돌하는 잠금을 획득하는 명령을 정기적으로 실행합니다.업데이트 독점 공유잠금(예: ANALYZE)은 autovacuum이 완료되는 것을 효과적으로 방지할 수 있습니다.  |