롤 토토 : 문서 : 9.5 : 롤 토토 | |||
---|---|---|---|
윈 토토 : 문서 : 9.5 : 일상적인 데이터베이스 유지 관리 작업 | 윈 토토 : 문서 : 9.5 : 일상적인 데이터베이스 유지 관리 작업 | 23 장. 일상적인 데이터베이스 유지 관리 작업 | 다음 |
PostgreSQL데이터베이스는로 알려진주기적인 유지 보수가 필요합니다.배트맨 토토 청소기. 많은 설치의 경우에 의해 배트맨 토토 청소기를 수행하도록하기에 충분합니다.autovacuum daemon,섹션 23.1.6. 상황에 대한 최상의 결과를 얻으려면 설명 된 자동화 매개 변수를 조정해야 할 수도 있습니다.배트맨 토토명령, 일반적으로 일정에 따라 실행됩니다.Cron또는작업 스케줄러스크립트. 수동으로 관리되는 배트맨 토토 청소기를 올바르게 설정하려면 다음 몇 가지 하위 섹션에서 논의 된 문제를 이해해야합니다.
PostgreSQL'sPostgreSQL : 문서 : 9.5 : 토토 캔명령은 여러 가지 이유로 각 테이블을 정기적으로 처리해야합니다.
업데이트 또는 삭제 된 행으로 점유 된 디스크 공간을 복구하거나 재사용하려면
PostgreSQL쿼리 플래너.
가시성 맵을 업데이트하려면 인덱스 전용 스캔 속도가 빨라집니다.
|트랜잭션 ID 랩 어라운드또는Multixact ID 랩 어라운드.
이러한 각 이유는 수행을 지시합니다배트맨 토토다음 하위 섹션에서 설명한 것처럼 다양한 주파수 및 범위의 작동.
의 두 가지 변형이 있습니다.배트맨 토토: 표준배트맨 토토and배트맨 토토 Full. 배트맨 토토 Full더 많은 디스크 공간을 되 찾을 수 있지만 훨씬 더 천천히 작동합니다. 또한 표준 형태의배트맨 토토생산 데이터베이스 작업과 병렬로 실행할 수 있습니다. (와 같은 명령select, 삽입, 업데이트및삭제|와 같은 명령으로 테이블의 정의를 수정할 수는 없지만 정상적으로 계속 작동합니다.Alter Table배트맨 토토 청소기 중.)배트맨 토토 Full작업중 인 테이블의 독점 잠금이 필요하므로 다른 사용과 병렬로 수행 할 수 없습니다. 따라서 일반적으로 관리자는 표준을 사용하기 위해 노력해야합니다배트맨 토토그리고 피하기배트맨 토토 Full.
배트맨 토토12310_12533섹션 18.4.4.
inPostgreSQL, an업데이트또는삭제행의 행은 즉시 기존 행 버전을 제거하지 않습니다. 이 접근법은 Multiversion Concurrency Control (의 이점을 얻기 위해 필요합니다.MVCC, 참조13 장) : 다른 트랜잭션이 여전히 보이는 동안 행 버전을 삭제해서는 안됩니다. 그러나 결국 구식 또는 삭제 된 행 버전은 더 이상 거래에 관심이 없습니다.배트맨 토토.
표준 형태배트맨 토토테이블과 인덱스에서 데드 행 버전을 제거하고 향후 재사용이 가능한 공간을 표시합니다. 그러나 테이블 끝의 하나 이상의 페이지가 완전히 무료로되고 독점 테이블 잠금을 쉽게 얻을 수있는 특별한 경우를 제외하고는 공간을 운영 체제로 반환하지 않습니다.배트맨 토토 Full죽은 공간이없는 완전한 새 버전의 테이블 파일을 작성하여 테이블을 적극적으로 압축합니다. 이것은 테이블의 크기를 최소화하지만 오랜 시간이 걸릴 수 있습니다.
일상 배트맨 토토 청소기의 일반적인 목표는 표준을 수행하는 것입니다배트맨 토토필요를 피하기에 충분히 충분히배트맨 토토 Full. Autovacuum 데몬은 이런 식으로 일하려고 시도하며 실제로는 결코 발행하지 않을 것입니다배트맨 토토 Full. 이 접근법 에서이 아이디어는 테이블을 최소 크기로 유지하는 것이 아니라 디스크 공간의 정상 상태 사용을 유지하는 것입니다. 각 테이블은 최소 크기와 동등한 공간을 차지하지만 배트맨 토토 청소기 사이에 많은 공간이 사용됩니다.배트맨 토토 Full최소 크기로 테이블을 축소하고 디스크 공간을 운영 체제로 반환하는 데 사용될 수 있습니다. 테이블이 향후 다시 성장할 경우이 점이 많지 않습니다. 따라서 적당히 프레시트 표준배트맨 토토Runs는 드물게 더 나은 접근 방식입니다배트맨 토토 Full심하게 업데이트 된 테이블을 유지하기 위해 실행됩니다.
일부 관리자는 부하가 낮을 때 밤에 모든 작업을 수행하는 등 스스로 배트맨 토토 청소기를 예약하는 것을 선호합니다. 고정 된 일정에 따라 배트맨 토토 청소기를 수행하는 데 어려움이있는 것은 테이블에 업데이트 활동이 예기치 않은 스파이크가 있으면 지점까지 부풀어 질 수 있다는 것입니다.배트맨 토토 Full공간을 되찾기 위해서는 실제로 필요합니다. Autovacuum 데몬을 사용하면 업데이트 활동에 대한 반응으로 동적으로 배트맨 토토 상태를 유지하기 때문에이 문제가 완화됩니다.배트맨 토토s는 부하가 전형적 일 때 대부분의 작업을 수행 할 것으로 예상됩니다.
autovacuum을 사용하지 않는 사람들의 경우 일반적인 접근 방식은 데이터베이스 전체를 예약하는 것입니다배트맨 토토필요한 경우 상당한 업데이트 된 테이블을보다 빈번한 빈번한 배트맨 토토 청소기에 의해 보충 된 저장 기간 동안 하루에 한 번. (매우 높은 업데이트 속도를 가진 일부 설치는 몇 분마다 가장 바쁜 테이블을 배트맨 토토 청소기로 배트맨 토토 청소기에 배트맨 토토화합니다.) 클러스터에 여러 데이터베이스가있는 경우배트맨 토토각각; 프로그램Vacuumdb도움이 될 수 있습니다.
팁 :일반배트맨 토토테이블에 대규모 업데이트 또는 삭제 활동의 결과로 많은 수의 Dead Row 버전이 포함되어있을 때 만족스럽지 않을 수 있습니다. 그러한 테이블이 있고 점유하는 과도한 디스크 공간을 되 찾아야하는 경우 사용해야합니다.배트맨 토토 Full또는 대안클러스터스포츠 토토 사이트 PostgreSQL. 이 명령은 완전히 새로운 테이블 사본을 다시 작성하고 새로운 색인을 작성합니다.
팁 :전체 내용이 정기적으로 삭제되는 테이블이있는 경우를 고려하십시오.토토 캔 : 문서 : 9.5 : 토토 캔사용하는 대신삭제그 뒤에배트맨 토토. Truncate후속이 필요없이 표의 전체 내용을 즉시 제거합니다배트맨 토토또는배트맨 토토 Full현재 사용되지 않은 디스크 공간을 되 찾으려면. 단점은 엄격한 MVCC 시맨틱이 위반된다는 것입니다.
thePostgreSQL쿼리 플래너는 쿼리에 대한 좋은 계획을 생성하기 위해 테이블 내용에 대한 통계 정보에 의존합니다. 이 통계는에 의해 수집됩니다.PostgreSQL : 문서 : 9.5 : 스포츠 토토 결과명령, 자체적으로 또는 선택적 단계로 촉진 할 수 있습니다배트맨 토토. 합리적으로 정확한 통계를 보유하는 것이 중요합니다. 그렇지 않으면 계획의 열악한 선택은 데이터베이스 성능을 저하시킬 수 있습니다.
Autovacuum 데몬은 활성화되면 자동으로 발행됩니다분석테이블 내용이 충분히 변경 될 때마다 명령합니다. 그러나 관리자는 수동 예약에 의존하는 것을 선호 할 수 있습니다분석운영, 특히 테이블의 업데이트 활동이의 통계에 영향을 미치지 않는다고 알려진 경우."흥미로운"열. 데몬 일정분석삽입 또는 업데이트 된 행 수의 함수로서 엄격하게; 그것이 의미있는 통계적 변화로 이어질지 여부는 알 수 없습니다.
공간 복구를위한 배트맨 토토 청소기와 마찬가지로, 통계의 빈번한 업데이트는 거의 업데이트 된 테이블보다 무거운 업데이트 된 테이블에 더 유용합니다. 그러나 업데이트 된 테이블의 경우에도 데이터의 통계 분포가 크게 변경되지 않으면 통계 업데이트가 필요하지 않을 수 있습니다.타임 스탬프행 업데이트 시간이 포함 된 열은 행이 추가되고 업데이트 될 때 지속적으로 증가하는 최대 값을 갖습니다. 이러한 열은 아마도 웹 사이트에 액세스 할 수있는 페이지에 대한 URL이 포함 된 열보다 더 빈번한 통계 업데이트가 필요할 것입니다.
실행할 수 있습니다분석특정 테이블 및 테이블의 특정 열만 있으므로 응용 프로그램에 필요한 경우 다른 통계보다 일부 통계를 더 자주 업데이트하는 유연성이 존재합니다. 그러나 실제로는 빠른 작업이기 때문에 전체 데이터베이스를 분석하는 것이 가장 좋습니다.분석모든 행을 읽지 않고 테이블 행의 통계적으로 임의의 샘플링을 사용합니다.
팁 :콜럼 당 조정이지만분석주파수는 생산적이지 않을 수 있습니다.분석. 크게 사용되는 열여기서조항과 불규칙한 데이터 분포는 다른 열보다 더 미세한 데이터 히스토그램이 필요할 수 있습니다. 보다Alter Table Set Statistics또는를 사용하여 데이터베이스 전체 기본값을 변경하십시오.default_statistics_target구성 매개 변수.
또한 기본적으로 함수 선택성에 대한 정보가 제한되어 있습니다. 그러나 함수 호출을 사용하는 표현식 인덱스를 작성하면 기능에 대한 유용한 통계가 수집되어 표현식 인덱스를 사용하는 쿼리 계획을 크게 향상시킬 수 있습니다.
팁 :autovacuum 데몬이 발행되지 않습니다분석외국 테이블에 대한 명령은 얼마나 자주 유용한지를 결정할 수단이 없기 때문에. 쿼리에 적절한 계획을 위해 외국 테이블에 대한 통계가 필요한 경우 수동으로 관리하는 것이 좋습니다분석적절한 일정에 따라 해당 테이블의 명령.
배트맨 토토 유지 관리토토 사이트 : 문서 : 9.5 : 가시성 맵각 테이블의 경우 모든 활성 트랜잭션에 보이는 것으로 알려진 튜플 (및 페이지가 다시 수정 될 때까지 모든 향후 트랜잭션) 만 포함하는 페이지 만 추적합니다. 이것은 두 가지 목적이 있습니다.
두 번째, 허용PostgreSQL기본 테이블을 참조하지 않고 인덱스 만 사용하여 일부 쿼리에 응답합니다. 부터PostgreSQL인덱스에는 튜플 가시성 정보가 포함되어 있지 않으며, 정상 인덱스 스캔은 각 일치하는 인덱스 항목에 대한 힙 튜플을 가져와 현재 트랜잭션에서 볼 수 있는지 확인합니다.색인 전용 스캔22293_22640
PostgreSQL'sMVCC트랜잭션 시맨틱은 트랜잭션 ID (를 비교할 수 있다는 것에 달려 있습니다.xid) 숫자 : 현재 트랜잭션의 XID보다 큰 삽입 XID가있는 행 버전"미래의"현재 트랜잭션에 보이지 않아야합니다. 그러나 트랜잭션 ID는 크기가 제한되어 있기 때문에 (32 비트) 오랫동안 실행되는 클러스터 (40 억 개 이상의 거래)가 어려움을 겪기 때문에트랜잭션 ID 랩 어라운드: XID 카운터는 0으로 감싸고 과거에 있었던 갑작스런 트랜잭션은 미래에있는 것처럼 보입니다. 이는 출력이 보이지 않는다는 것을 의미합니다. 요컨대, 치명적인 데이터 손실.
정기 배트맨 토토 청소기가 문제를 해결하는 이유는입니다.배트맨 토토줄을 표시 할 것입니다냉동, 과거에 거래 삽입의 영향이 모든 현재 및 미래의 거래에서 볼 수 있도록 충분히 저지른 거래에 의해 삽입되었음을 나타냅니다. 정상 XID는 Modulo-2를 사용하여 비교됩니다32산술. 이것은 모든 정상적인 XID에 대해 20 억 개의 XID가 있음을 의미합니다."구형""최신"; 또 다른 방법은 정상적인 XID 공간이 엔드 포인트가없는 원형이라는 것입니다."과거"다음 20 억 건의 거래의 경우, 우리가 어떤 정상적인 XID에 대해 이야기하든. 20 억 건 이상의 거래 후에 행 버전이 여전히 존재하면 갑자기 앞으로 나올 것입니다.PostgreSQL특별 XID를 보유합니다.FozentRansactionID, 이것은 정상적인 XID 비교 규칙을 따르지 않으며 항상 모든 정상 XID보다 오래된 것으로 간주됩니다. 냉동 행 버전은 삽입 XID가 인 것처럼 취급됩니다.FozentRansactionID"과거"랩 어라운드 문제에 관계없이 모든 정상 트랜잭션에 대한 모든 정상 트랜잭션에 대해서는 이러한 행 버전이 삭제 될 때까지 유효합니다.
참고 :inPostgreSQL9.4 이전의 버전, 실제로 행의 삽입 xid를 대체하여 냉동을 구현했습니다.FozentRansactionID, 행에서 볼 수있는xmin시스템 열. 최신 버전은 플래그 비트를 설정하여 행의 원본을 보존합니다xmin가능한 법의학 사용. 그러나xmin동일FozentRansactionID(2) 여전히 데이터베이스에서 찾을 수 있습니다pg_upgrade'D Pre-9.4 버전에서.
또한 시스템 카탈로그에는 행이 포함될 수 있습니다.xmin동일bootstraptransactionID(1), 첫 번째 단계에서 삽입되었음을 나타냅니다.initdb. 좋다FozentRansactionID,이 특수 XID는 모든 정상 XID보다 오래된 것으로 취급됩니다.
VACUUM_FREEZE_MIN_AGEXID가 얼어 붙을 행 전에 XID 값이 얼마나 오래되어야하는지 제어합니다. 이 설정을 늘리면 얼어 붙을 행이 곧 다시 수정 될 경우 불필요한 작업을 피할 수 있지만,이 설정을 줄이면 테이블을 다시 청소하기 전에 경과 할 수있는 트랜잭션의 수가 증가합니다..
배트맨 토토일반적으로 Dead Row 버전이없는 페이지를 건너 뛰지 만 해당 페이지에는 여전히 오래된 XID 값이있는 행 버전이있을 수 있습니다. 모든 오래된 행 버전이 동결되었는지 확인하려면 전체 테이블의 스캔이 필요합니다.VACUUM_FREEZE_TABLE_AGE컨트롤배트맨 토토그렇게 : 테이블이 완전히 스캔되지 않으면 전체 테이블 스윕이 강요됩니다VACUUM_FREEZE_TABLE_AGE마이너스VACUUM_FREEZE_MIN_AGE거래. 0 세력으로 설정배트맨 토토항상 모든 페이지를 스캔하려면 가시성 맵을 효과적으로 무시합니다.
테이블이 발행 할 수있는 최대 시간은 20 억의 거래입니다.VACUUM_FREEZE_MIN_AGE당시의 가치배트맨 토토마지막으로 전체 테이블을 스캔했습니다. 그것이 그보다 더 오랫동안 발행되지 않으면 데이터 손실이 발생할 수 있습니다.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_AGEis 0.95 *autovacuum_freeze_max_age; 그보다 높은 설정이 최대 값으로 제한됩니다.autovacuum_freeze_max_age어쨌든 그 시점에서 raparound autovacuum이 그 시점에서 트리거되고 0.95 승수가 수동을 운영하기 위해 약간의 호흡 공간을 남겨두기 때문에 의미가 없습니다.배트맨 토토그 전에. 경험상VACUUM_FREEZE_TABLE_AGE다소 아래의 값으로 설정되어야합니다autovacuum_freeze_max_age배트맨 토토또는 정상 삭제 및 업데이트 활동에 의해 트리거 된 Autovacuum이 해당 창에서 실행됩니다. 테이블이 최근에 공간을 되찾기 위해 배트맨 토토 청소 되었음에도 불구하고 너무 가깝게 설정할 수 있지만, 더 낮은 값은 더 빈번한 전체 테이블 스캔으로 이어질 수 있습니다..
증가하는 유일한 단점autovacuum_freeze_max_age(및VACUUM_FREEZE_TABLE_AGE와 함께)PG_CLOG데이터베이스 클러스터의 하위 디렉토리는 모든 트랜잭션의 커밋 상태를 다시 |에 저장해야하기 때문에 더 많은 공간을 차지합니다.autovacuum_freeze_max_ageHorizon. 커밋 상태는 거래 당 두 비트를 사용하므로 ifautovacuum_freeze_max_age최대 허용 된 값으로 설정되었습니다.PG_CLOG약 절반의 기가 바이트로 성장할 수 있습니다. 이것이 총 데이터베이스 크기에 비해 사소한 경우autovacuum_freeze_max_age최대 허용 값을 권장합니다. 그렇지 않으면 기꺼이 허용하는 것에 따라 설정PG_CLOG스토리지. (기본값, 2 억 건의 거래는 약 50MB의로 변환됩니다.PG_CLOG스토리지.)
감소의 단점 중 하나VACUUM_FREEZE_MIN_AGE원인이 될 수 있다는 것입니다배트맨 토토쓸모없는 작업을 수행하려면 : 행 버전을 동결시키는 것은 곧 행이 수정되면 시간 낭비입니다 (새 XID를 얻게됩니다). 따라서 설정은 더 이상 변경 될 가능성이 높아질 때까지 행이 얼어 붙지 않을 정도로 커야합니다.
데이터베이스에서 가장 오래된 XID의 나이를 추적하려면배트맨 토토시스템 테이블에 XID 통계를 저장pg_classandpg_database. 특히relfrozenxid테이블의 열pg_class행 마지막 완전 테이블에서 사용한 동결 컷오프 XID가 포함되어 있습니다배트맨 토토해당 테이블의 경우. 이 컷오프 XID보다 오래된 XID와의 트랜잭션에 의해 삽입 된 모든 행은 동결 된 것으로 보장됩니다.datfrozenxid데이터베이스 열pg_database행 데이터베이스에 나타나는 XID가없는 XID의 하한은 테이블 당 최소의 최소입니다relfrozenxid데이터베이스 내의 값. 이 정보를 조사하는 편리한 방법은 다음과 같은 쿼리를 실행하는 것입니다.
C.OID :: regclass as table_name을 선택하십시오.
theAge열은 컷오프 XID에서 현재 트랜잭션의 XID 로의 트랜잭션 수를 측정합니다.
배트맨 토토일반적으로 마지막 배트맨 토토 이후 수정 된 페이지 만 스캔하지만relfrozenxid전체 테이블을 스캔 할 때만 진행할 수 있습니다. 전체 테이블이 스캔 될 때relfrozenxid더 이상VACUUM_FREEZE_TABLE_AGE거래 오래,배트맨 토토'sFreeze옵션이 사용되거나 모든 페이지가 Dead Row 버전을 제거하기 위해 배트맨 토토 청소기가 필요한 경우. 언제배트맨 토토완성 된 후 전체 테이블을 스캔합니다Age (relfrozenxid)|VACUUM_FREEZE_MIN_AGE사용 된 설정 ( 이후 시작된 트랜잭션 수에 따라배트맨 토토시작). 전체 테이블 스캔이 없다면배트맨 토토|autovacuum_freeze_max_age도달하면, 오토바 쿠움이 곧 테이블을 위해 강요 될 것입니다.
어떤 이유로 autovacuum이 테이블에서 오래된 XID를 지우지 못하면 데이터베이스의 가장 오래된 XID가 랩 어라운드에서 110 만 개의 트랜잭션에 도달 할 때 시스템이 이와 같은 경고 메시지를 방출하기 시작합니다.
경고 : 데이터베이스 "MyDB"는 10985967 트랜잭션 내에서 청소해야합니다
(매뉴얼배트맨 토토힌트가 제안한대로 문제를 해결해야합니다. 하지만배트맨 토토슈퍼 사용자가 수행해야합니다. 그렇지 않으면 시스템 카탈로그를 처리하지 못하므로 데이터베이스를 발전시킬 수 없습니다datfrozenxid.) 이러한 경고가 무시되면, 랩 어라운드까지 1 백만 개 미만의 트랜잭션이 남아 있으면 시스템이 종료되고 새로운 거래 시작을 거부합니다.
오류 : 데이터베이스는 데이터베이스 "mydb"의 랩 어라운드 데이터 손실을 피하기 위해 명령을 수락하지 않습니다.
1 백만 번의 트랜잭션 안전 마진이 존재합니다.배트맨 토토명령. 그러나 시스템이 안전 차단 모드로 들어간 후에 시스템이 사령부를 실행하지 않기 때문에이를 수행하는 유일한 방법은 서버를 중지하고 단일 사용자 모드에서 서버를 시작하여 실행하는 것입니다.배트맨 토토. 셧다운 모드는 단일 사용자 모드에서 시행되지 않습니다.Postgres단일 사용자 모드 사용에 대한 자세한 내용은 참조 페이지입니다.
Multixact ID는 여러 트랜잭션으로 행 잠금을 지원하는 데 사용됩니다. 잠금 정보를 저장하기 위해 튜플 헤더에 공간이 제한되어 있으므로 해당 정보는 A로 인코딩됩니다."다중 거래 ID"또는 단기간에 동시에 행을 잠그는 트랜잭션이 하나 이상있을 때마다 짧은 경우 다중 공장 ID. 특정 다중 공장 ID에 포함 된 트랜잭션 ID에 대한 정보는에 별도로 저장됩니다.pg_multixact하위 디렉토리, 그리고 다중 팩트 ID 만에 나타납니다.xmax튜플 헤더의 필드. 트랜잭션 ID와 마찬가지로 다중 공장 ID는 32 비트 카운터 및 해당 스토리지로 구현되며, 모두 신중한 노화 관리, 스토리지 정리 및 랩 어라운드 처리가 필요합니다.
동안배트맨 토토테이블 스캔, 부분적 또는 전체 테이블의 테이블 스캔,보다 오래된 다단계 IDVACUUM_MULTIXACT_FREEZE_MIN_AGE는 0 값, 단일 트랜잭션 ID 또는 새로운 다중 공장 ID 일 수있는 다른 값으로 대체됩니다. 각 테이블에 대해pg_class.relminmxid해당 테이블의 튜플에 여전히 표시되는 가장 오래된 다단계 ID를 저장합니다. 이 값이 더 오래된 경우VACUUM_MULTIXACT_FREEZE_TABLE_AGE, 전체 테이블 스캔이 강요됩니다.mxid_age ()
사용 가능pg_class.relminmxid나이를 찾으려면
전체-테이블배트맨 토토원인에 관계없이 스캔을 통해 해당 테이블의 값을 발전시킬 수 있습니다. 결국, 모든 데이터베이스의 모든 테이블이 스캔되고 가장 오래된 다중 공장 값이 발전되므로 구형 멀티 팩트를위한 온 디스크 스토리지를 제거 할 수 있습니다.
안전 장치로서, 다수의 연령대가 큰 테이블에 대해 전체 테이블 배트맨 토토 스캔이 발생합니다.autovacuum_multixact_freeze_max_age. 중고 멤버 저장 공간의 양이 주소가 가능한 저장 공간의 50%를 초과하는 경우, 전체 테이블에 대해 전체 테이블 배트맨 토토 스캔도 모든 테이블에 대해 점차적으로 발생합니다.
PostgreSQL선택 사항이 있지만 적극 권장되는 기능이 있습니다.autovacuum.배트맨 토토and분석명령. 활성화되면 Autovacuum은 많은 수의 삽입, 업데이트 또는 삭제 된 튜플이있는 테이블을 확인합니다.track_countstrue. 기본 구성에서는 자동화 장치가 활성화되고 관련 구성 매개 변수가 적절하게 설정됩니다.
the"Autovacuum 데몬"실제로 여러 프로세스로 구성됩니다. 라고 불리는 지속적인 데몬 프로세스가 있습니다.Autovacuum 런처, 시작을 담당하는Autovacuum Worker모든 데이터베이스의 프로세스. 런처는 시간이 지남에 따라 작업을 배포하여 각 데이터베이스 내에서 한 명의 작업자를 시작하려고 시도합니다.autovacuum_naptime초. (따라서 설치에N데이터베이스, 새로운 작업자가 매번 출시됩니다autovacuum_naptime/N초) 최대autovacuum_max_workers작업자 프로세스는 동시에 실행할 수 있습니다. 이상이있는 경우autovacuum_max_workers처리 할 데이터베이스가 처리 될 경우 첫 번째 작업자가 완료 되 자마자 다음 데이터베이스가 처리됩니다. 각 작업자 프로세스는 데이터베이스 내의 각 테이블을 확인하고 실행합니다배트맨 토토및/또는분석필요에 따라.log_autovacuum_min_durationautovacuum 근로자의 활동을 모니터링하도록 설정할 수 있습니다.
몇 개의 큰 테이블이 모두 짧은 시간 안에 배트맨 토토 청소기를 청소할 수있게되면 모든 Autovacuum 작업자는 오랫동안 테이블을 배트맨 토토 청소기로 배트맨 토토 청소기로 차지할 수 있습니다. 이로 인해 다른 테이블과 데이터베이스가 작업자가 사용할 수있을 때까지 배트맨 토토 청소기가 발생하지 않습니다.max_connections또는SuperUser_Reserved_Connections한도.
테이블의relfrozenxid값은 이상입니다.autovacuum_freeze_max_age오래된 트랜잭션은 항상 배트맨 토토 청소기입니다 (이는 스토리지 매개 변수를 통해 동결 연령이 수정 된 테이블에도 적용됩니다. 아래 참조). 그렇지 않으면, 튜플의 수가 마지막 이후 쓸모없는 경우배트맨 토토초과"배트맨 토토 임계 값", 테이블은 배트맨 토토 청소기입니다. 배트맨 토토 임계 값은 다음과 같이 정의됩니다.
배트맨 토토 임계 값 = 배트맨 토토베이스 임계 값 + 배트맨 토토 스케일 팩터 * 튜플 수
배트맨 토토베이스 임계 값이있는 곳autovacuum_vacuum_threshold, 배트맨 토토 스케일 계수는autovacuum_vacuum_scale_factor, 그리고 튜플의 수는pg_class.Reltuples. 쓸모없는 튜플의 수는 통계 수집가로부터 얻어진다;업데이트and삭제작동. (일부 정보가 무거운 짐으로 손실 될 수 있기 때문에 반 정확도입니다.) 인 경우relfrozenxid테이블의 가치는 이상입니다.VACUUM_FREEZE_TABLE_AGE트랜잭션 오래된 트랜잭션, 전체 테이블이 스캔되어 오래된 튜플을 얼리고 진전relfrozenxid, 그렇지 않으면 마지막 배트맨 토토 상태에서 수정 된 페이지 만 스캔합니다.
분석의 경우 유사한 조건이 사용됩니다. 임계 값은 다음과 같습니다.
임계 값 분석 = 기본 임계 값 분석 + 스케일 요인 분석 * 튜플 수
마지막 이후 삽입, 업데이트 또는 삭제 된 총 튜플 수와 비교됩니다분석.
Autovacuum은 임시 테이블에 액세스 할 수 없습니다. 따라서 세션 SQL 명령을 통해 적절한 배트맨 토토 및 분석 작업을 수행해야합니다.
기본 임계 값 및 스케일 요인은에서 가져옵니다.Postgres, 그러나 테이블 별 기준으로 그것들 (및 기타 많은 Autovacuum 제어 매개 변수)을 무시할 수 있습니다. 보다스토리지 매개 변수자세한 내용. 테이블의 스토리지 매개 변수를 통해 설정이 변경된 경우 해당 테이블을 처리 할 때 해당 값이 사용됩니다.토토 핫 : 문서 : 9.5 : 자동 진공 청소기글로벌 설정에 대한 자세한 내용은
여러 근로자가 달리면 Autovacuum 비용 지연 매개 변수 (참조섹션 18.4.4) are"밸런스"모든 달리는 근로자 중에서 시스템에 대한 총 I/O 영향은 실제로 실행되는 근로자 수에 관계없이 동일합니다. 그러나 테이블 당 테이블을 처리하는 근로자autovacuum_vacuum_cost_delay또는autovacuum_vacuum_cost_limit스토리지 매개 변수가 설정되어 밸런싱 알고리즘에서 고려되지 않습니다.
Autovacuum 근로자는 일반적으로 다른 명령을 차단하지 않습니다. 프로세스가와 충돌하는 자물쇠를 획득하려는 경우공유 업데이트 독점autovacuum에서 보유한 잠금, 잠금 획득은 autovacuum을 방해합니다. 충돌하는 잠금 모드는 참조표 13-2. 그러나 Autovacuum이 트랜잭션 ID 랩 어라운드를 방지하기 위해 실행중인 경우 (즉,의 Autovacuum 쿼리 이름pg_stat_activity보기가 끝납니다(랩 어라운드 방지)), Autovacuum은 자동으로 중단되지 않습니다.
경고 |
A와 충돌하는 자물쇠를 얻는 명령을 정기적으로 실행하는 명령공유 업데이트 독점잠금 (예 : 분석) |
윈 토토 : 문서 : 9.5 : 일상적인 데이터베이스 유지 관리 작업 | 롤 토토 : 문서 : 9.5 : 롤 토토 9.5.25 문서화 | 다음 |
일상적인 데이터베이스 유지 관리 작업 | 윈 토토 : 문서 : 9.5 : 일상적인 데이터베이스 유지 관리 작업 | 일상적인 Reindexing |