PostgreSQL데이터베이스는로 알려진주기적인 유지 보수가 필요합니다.윈 토토 청소기. 많은 설치의 경우에 의해 윈 토토 청소기를 수행하도록하기에 충분합니다.autovacuum daemon,섹션 24.1.6. 상황에 대한 최상의 결과를 얻으려면 설명 된 자동화 매개 변수를 조정해야 할 수도 있습니다.윈 토토
명령, 일반적으로 일정에 따라 실행됩니다.Cron또는작업 스케줄러스크립트. 수동으로 관리되는 윈 토토 청소기를 올바르게 설정하려면 다음 몇 가지 하위 섹션에서 논의 된 문제를 이해해야합니다.
PostgreSQL's윈 토토
명령은 여러 가지 이유로 각 테이블을 정기적으로 처리해야합니다.
이러한 각 이유는 수행을 지시합니다윈 토토
다음 하위 섹션에서 설명한대로 다양한 주파수 및 범위의 작동.
두 가지 변형이 있습니다.윈 토토
: 표준윈 토토
및윈 토토 Full
. 윈 토토 Full
더 많은 디스크 공간을 되 찾을 수 있지만 훨씬 더 느리게 작동합니다. 또한 표준 형태의윈 토토
생산 데이터베이스 작업과 병렬로 실행할 수 있습니다. (와 같은 명령select
, 삽입
, 업데이트
및삭제
|와 같은 명령으로 테이블의 정의를 수정할 수는 없지만 정상적으로 계속 작동합니다.Alter Table
윈 토토 청소기가있는 동안.)윈 토토 Full
필요액세스 독점
작업중 인 테이블을 잠그므로 테이블의 다른 사용과 병렬로 수행 할 수 없습니다. 따라서 일반적으로 관리자는 표준을 사용하기 위해 노력해야합니다윈 토토
그리고 피하기윈 토토 Full
.
윈 토토
상당한 양의 I/O 트래픽을 생성하여 다른 활성 세션의 성능이 저하 될 수 있습니다. 배경 윈 토토의 성능 영향을 줄이기 위해 조정할 수있는 구성 매개 변수가 있습니다. 참조섹션 19.4.4.
inPostgreSQL, an업데이트
또는삭제
행의 행은 즉시 기존 행 버전을 제거하지 않습니다. 이 접근법은 Multiversion Concurrency Control (의 이점을 얻기 위해 필요합니다.MVCC, 참조13 장) : 다른 트랜잭션이 여전히 보이는 동안 행 버전을 삭제해서는 안됩니다. 그러나 결국 구식 또는 삭제 된 행 버전은 더 이상 거래에 관심이 없습니다.윈 토토
.
표준 형태윈 토토
테이블 및 인덱스에서 Dead Row 버전을 제거하고 향후 재사용에 사용할 수있는 공간을 표시합니다. 그러나 테이블 끝의 하나 이상의 페이지가 완전히 무료로되고 독점 테이블 잠금을 쉽게 얻을 수있는 특별한 경우를 제외하고는 공간을 운영 체제로 반환하지 않습니다.윈 토토 Full
죽은 공간이없는 완전한 새 버전의 테이블 파일을 작성하여 테이블을 적극적으로 압축합니다. 이것은 테이블의 크기를 최소화하지만 오랜 시간이 걸릴 수 있습니다.
일상 윈 토토 청소기의 일반적인 목표는 표준을 수행하는 것입니다윈 토토
필요를 피하기에 충분히윈 토토 Full
. Autovacuum 데몬은 이런 식으로 일하려고 시도하지만 실제로는 결코 발행하지 않을 것입니다윈 토토 Full
. 이 접근법 에서이 아이디어는 테이블을 최소 크기로 유지하는 것이 아니라 디스크 공간의 정상 상태 사용을 유지하는 것입니다. 각 테이블은 최소 크기와 동등한 공간을 차지하지만 윈 토토 실행 사이에 많은 공간이 사용됩니다.윈 토토 Full
최소 크기로 테이블을 축소하고 디스크 공간을 운영 체제로 돌려 보는 데 사용될 수 있습니다. 테이블이 향후 다시 자라면이 점이 많지 않습니다. 따라서 적당히 프레시트 표준윈 토토
Runs는 드물게 더 나은 접근 방식입니다윈 토토 Full
심하게 업데이트 된 테이블을 유지하기 위해 실행됩니다.
일부 관리자는 부하가 낮을 때 밤에 모든 작업을 수행하는 등 스스로 윈 토토 청소기를 예약하는 것을 선호합니다. 고정 된 일정에 따라 윈 토토 청소기를 수행하는 데 어려움이있는 것은 테이블에 업데이트 활동이 예기치 않은 스파이크가 있으면 지점까지 부풀어 질 수 있다는 것입니다.윈 토토 Full
공간을 되찾기 위해서는 실제로 필요합니다. Autovacuum 데몬을 사용하면 업데이트 활동에 대한 반응으로 동적으로 윈 토토 상태를 유지하기 때문에이 문제가 완화됩니다.윈 토토
부하가 일반적 일 때 대부분의 작업을 수행 할 것으로 예상됩니다.
autovacuum을 사용하지 않는 사람들의 경우 일반적인 접근 방식은 데이터베이스 전체를 예약하는 것입니다윈 토토
필요한 경우 상당한 업데이트 된 테이블의 윈 토토 청소기가 더 자주 윈 토토 상태로 보충되는 저용 기간 동안 하루에 한 번. (매우 높은 업데이트 속도를 가진 일부 설치는 몇 분마다 가장 바쁜 테이블을 윈 토토 청소기로 윈 토토 청소기에 윈 토토화합니다.) 클러스터에 여러 데이터베이스가있는 경우윈 토토
각각; 프로그램VACUUMDB도움이 될 수 있습니다.
일반윈 토토
테이블에 대규모 업데이트 또는 삭제 활동으로 인해 많은 수의 Dead Row 버전이 포함되어있을 때 만족스럽지 않을 수 있습니다. 그러한 테이블이 있고 점유하는 과도한 디스크 공간을 되 찾아야하는 경우 사용해야합니다.윈 토토 Full
또는 또는 대안클러스터
Alter Table
. 이 명령은 완전히 새로운 테이블 사본을 다시 작성하고 새로운 색인을 작성합니다.액세스 독점
잠금. 테이블의 오래된 사본과 인덱스는 새 새로운 것들이 완료 될 때까지 해제 할 수 없기 때문에 테이블 크기와 거의 같은 여분의 디스크 공간을 일시적으로 사용합니다..
전체 내용이 정기적으로 삭제되는 테이블이있는 경우를 고려하십시오.Truncate
사용하지 않고삭제
그 뒤에윈 토토
. Truncate
후속이 필요없이 표의 전체 내용을 즉시 제거합니다윈 토토
또는윈 토토 Full
현재 사용되지 않은 디스크 공간을 되 찾으려면. 단점은 엄격한 MVCC 시맨틱이 위반된다는 것입니다.
thePostgreSQL쿼리 플래너는 쿼리에 대한 좋은 계획을 생성하기 위해 테이블 내용에 대한 통계 정보에 의존합니다. 이 통계는에 의해 수집됩니다.분석
명령, 그 자체로 또는 선택적 단계로 촉진 될 수 있습니다윈 토토
. 합리적으로 정확한 통계를 보유하는 것이 중요합니다. 그렇지 않으면 계획의 열악한 선택은 데이터베이스 성능을 저하시킬 수 있습니다.
Autovacuum 데몬은 활성화되면 자동으로 발행됩니다분석
테이블의 내용이 충분히 변경 될 때마다 명령합니다. 그러나 관리자는 수동 예약에 의존하는 것을 선호 할 수 있습니다분석
운영, 특히 테이블의 업데이트 활동이의 통계에 영향을 미치지 않는다고 알려진 경우“흥미로운”열. 데몬 일정분석
삽입 또는 업데이트 된 행 수의 함수로서 엄격하게; 그것이 의미있는 통계적 변화로 이어질지 여부는 알 수 없습니다.
튜플이 파티션에서 변경되었으며 상속 자녀는 부모 테이블에서 분석을 트리거하지 않습니다. 상위 테이블이 비어 있거나 거의 변경되지 않은 경우 Autovacuum에 의해 처리되지 않을 수 있으며 상속 트리의 통계는 전체적으로 수집되지 않습니다.분석
통계를 최신 상태로 유지하기 위해 수동으로 부모 테이블에서.
공간 복구를위한 윈 토토 청소기와 마찬가지로, 통계의 빈번한 업데이트는 거의 업데이트 된 테이블보다 무거운 업데이트 된 테이블에 더 유용합니다. 그러나 업데이트 된 테이블의 경우에도 데이터의 통계 분포가 크게 변경되지 않으면 통계 업데이트가 필요하지 않을 수 있습니다.타임 스탬프
행 업데이트 시간이 포함 된 열은 행이 추가되고 업데이트 될 때 지속적으로 증가하는 최대 값을 갖습니다. 이러한 열은 아마도 웹 사이트에 액세스 할 수있는 페이지에 대한 URL이 포함 된 열보다 더 빈번한 통계 업데이트가 필요할 것입니다.
실행할 수 있습니다분석
특정 테이블 및 테이블의 특정 열만 있으므로 응용 프로그램이 필요한 경우 다른 통계보다 일부 통계를 더 자주 업데이트하는 유연성이 존재합니다. 그러나 실제로는 빠른 작업이기 때문에 전체 데이터베이스를 분석하는 것이 가장 좋습니다.분석
모든 행을 읽지 않고 테이블 행의 통계적으로 임의의 샘플링을 사용합니다.
콜럼 당 조정이지만분석
주파수는 생산적이지 않을 수 있습니다.분석
. 크게 사용되는 열여기서
조항과 불규칙한 데이터 분포는 다른 열보다 더 미세한 데이터 히스토그램이 필요할 수 있습니다. 보다Alter Table Set Statistics
또는를 사용하여 데이터베이스 전체 기본값을 변경하십시오.default_statistics_target구성 매개 변수.
또한 기본적으로 함수 선택성에 대한 정보가 제한되어 있습니다. 그러나 함수 호출을 사용하는 통계 개체 또는 표현식 색인을 작성하면 기능에 대한 유용한 통계가 수집되어 표현식 인덱스를 사용하는 쿼리 계획을 크게 향상시킬 수 있습니다..
autovacuum 데몬이 문제가되지 않습니다분석
외국 테이블에 대한 명령은 얼마나 자주 유용한지를 결정할 수단이 없기 때문에. 쿼리에 적절한 계획을 위해 외국 테이블에 대한 통계가 필요한 경우 수동으로 관리하는 것이 좋습니다분석
적절한 일정에 따라 해당 테이블의 명령.
autovacuum 데몬이 문제가되지 않습니다분석
분할 된 테이블의 명령. 상속 성 부모는 부모 자체가 변경된 경우에만 분석됩니다. 부모 테이블에서 자녀 테이블의 변경 사항은자가 분석을 트리거하지 않습니다.분석
통계를 최신 상태로 유지하려면 해당 테이블에서.
윈 토토 유지 관리토토 베이 : 문서 : 17 : 65.4. 가시성 맵각 테이블의 경우 모든 활성 거래에 보이는 것으로 알려진 튜플 (및 페이지가 다시 수정 될 때까지 모든 향후 트랜잭션) 만 포함하는 페이지 만 추적합니다. 이것은 두 가지 목적이 있습니다.
두 번째, 허용PostgreSQL기본 테이블을 참조하지 않고 인덱스 만 사용하여 일부 쿼리에 응답합니다. 부터PostgreSQL인덱스에는 튜플 가시성 정보가 포함되어 있지 않으며, 정상 인덱스 스캔은 각 일치하는 인덱스 항목에 대한 힙 튜플을 가져와 현재 트랜잭션에서 볼 수 있는지 확인합니다.색인 전용 스캔26338_26681
PostgreSQL's스포츠 토토 사이트 : 문서 : 17 : 13.1. 소개트랜잭션 시맨틱은 트랜잭션 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 값이 얼마나 오래되어야하는지 제어합니다. 이 설정을 늘리면 얼어 붙을 행이 곧 다시 수정 될 경우 불필요한 작업을 피할 수 있지만,이 설정을 줄이면 테이블을 다시 청소하기 전에 경과 할 수있는 트랜잭션의 수가 증가합니다..
윈 토토
사용토토 베이 : 문서 : 17 : 65.4. 가시성 맵테이블의 어떤 페이지를 스캔 해야하는지 결정합니다. 일반적으로 해당 페이지에 오래된 XID 값이있는 행 버전이있을 경우에도 Dead Row 버전이없는 페이지를 건너 뜁니다.윈 토토
s는 항상 테이블의 모든 오래된 행 버전을 얼지 않을 것입니다. 그런 일이 발생하면윈 토토
결국 수행해야합니다공격적인 윈 토토, 모든 자격이없는 XID 및 MXID 값을 모두 볼 수는 있지만 모든 냉동 페이지의 페이지를 포함하여 모든 적격 XID 및 MXID 값을 동결시킬 것입니다. 실제로 대부분의 테이블은 주기적으로 공격적인 윈 토토 청소기가 필요합니다.VACUUM_FREEZE_TABLE_AGE컨트롤윈 토토
그렇게 : 마지막으로 전달 된 트랜잭션이 마지막 스캔 이후에 전달 된 트랜잭션의 수가보다 스캔됩니다.VACUUM_FREEZE_TABLE_AGE
마이너스VACUUM_FREEZE_MIN_AGE
. 환경VACUUM_FREEZE_TABLE_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_AGE
is 0.95 *autovacuum_freeze_max_age
; 그보다 높은 설정이 최대 값으로 제한됩니다.autovacuum_freeze_max_age
어쨌든 raparound autovacuum이 그 시점에서 트리거 될 것이기 때문에 말이되지 않을 것입니다.윈 토토
그 전에. 경험상VACUUM_FREEZE_TABLE_AGE
다소 아래의 값으로 설정되어야합니다autovacuum_freeze_max_age
윈 토토
또는 정상 삭제 및 업데이트 활동에 의해 트리거 된 Autovacuum이 해당 창에서 실행됩니다. 테이블이 최근에 공간을 되찾기 위해 윈 토토 청소 되었음에도 불구하고 너무 가깝게 설정할 수 있지만, 더 낮은 값은 더 빈번한 공격적인 윈 토토 청소기로 이어집니다..
증가하는 유일한 단점autovacuum_freeze_max_age
(및VACUUM_FREEZE_TABLE_AGE
와 함께)입니다.PG_XACT
및PG_COMMIT_TS
데이터베이스 클러스터의 하위 디렉토리는 커밋 상태를 저장해야하기 때문에 더 많은 공간을 차지합니다 (iftrack_commit_timestamp
활성화되었습니다) 모든 트랜잭션의 타임 스탬프로 다시autovacuum_freeze_max_age
Horizon. 커밋 상태는 거래 당 두 비트를 사용하므로 ifautovacuum_freeze_max_age
최대 허용 값으로 설정되어 있습니다.PG_XACT
약 절반의 기가 바이트로 성장할 수 있습니다.PG_COMMIT_TS
약 20GB. 이것이 총 데이터베이스 크기에 비해 사소한 경우autovacuum_freeze_max_age
최대 허용 값을 권장합니다. 그렇지 않으면 기꺼이 허용하는 것에 따라 설정PG_XACT
및PG_COMMIT_TS
스토리지. (기본값, 2 억 건의 거래는 약 50MB의로 변환됩니다.PG_XACT
스토리지 및 약 2GB의PG_COMMIT_TS
스토리지.)
감소의 한 가지 단점VACUUM_FREEZE_MIN_AGE
원인이 될 수 있습니다윈 토토
쓸모없는 작업을 수행하려면 : 행 버전을 동결시키는 것은 곧 행이 수정되면 시간 낭비입니다 (새 XID를 얻게됩니다). 따라서 설정은 더 이상 변경 될 가능성이 높아질 때까지 행이 얼어 붙지 않을 정도로 커야합니다.
데이터베이스에서 가장 오래된 XID의 나이를 추적하려면윈 토토
시스템 테이블에 XID 통계를 저장PG_CLASS
및pg_database
. 특히relfrozenxid
테이블의 열PG_CLASS
행은 가장 최근의 끝에 남아있는 가장 오래된 XID를 포함합니다윈 토토
성공적으로 발전relfrozenxid
(일반적으로 가장 최근의 공격적인 윈 토토). 마찬가지로datfrozenxid
데이터베이스의 열pg_database
행은 해당 데이터베이스에 나타나는 XID가없는 XID의 하한입니다. 테이블 당 최소의 최소입니다relfrozenxid
데이터베이스 내의 값. 이 정보를 조사하는 편리한 방법은 다음과 같은 쿼리를 실행하는 것입니다.
c.oid :: regclass as table_name을 선택하십시오.
theAge
열은 컷오프 XID에서 현재 트랜잭션의 XID 로의 트랜잭션 수를 측정합니다.
언제윈 토토
Command 'sVerbose
매개 변수가 지정되어 있습니다.윈 토토
테이블에 대한 다양한 통계를 인쇄합니다. 여기에는 방법에 대한 정보가 포함됩니다relfrozenxid
및relminmxid
고급 및 새로 얼어 붙은 페이지의 수. Autovacuum 로깅 (컨트롤 일 때 서버 로그에 동일한 세부 사항이 나타납니다.log_autovacuum_min_duration) A에 대한 보고서윈 토토
Autovacuum에 의해 실행 된 작동.
윈 토토
일반적으로 마지막 윈 토토 이후 수정 된 페이지 만 스캔하지만relfrozenxid
XID를 포함 할 수있는 테이블의 모든 페이지가 스캔 될 때만 고급화 될 수 있습니다. 이것은 발생할 때 발생합니다relfrozenxid
이상VACUUM_FREEZE_TABLE_AGE
거래 오래,윈 토토
'sFreeze
옵션이 사용되거나, 이미 전혀없는 모든 페이지가 Dead Row 버전을 제거하기 위해 윈 토토 청소기가 필요할 때. 언제윈 토토
테이블의 모든 페이지를 아직 완전히 냉동하지 않은 상태로 검사하면 설정해야합니다Age (RelfrozenxID)
VACUUM_FREEZE_MIN_AGE
사용 된 설정 ( 이후 시작된 트랜잭션 수에 따라윈 토토
시작).윈 토토
설정relfrozenxid
테이블에 남아있는 가장 오래된 XID에 대한 최종 값이 엄격하게 필요한 것보다 훨씬 최근에있을 수 있습니다. 그렇지 않은 경우relfrozenxid
-어드밴싱윈 토토
표에서 발행 될 때까지autovacuum_freeze_max_age
도달하면 Autovacuum이 곧 테이블을 위해 강요 될 것입니다.
어떤 이유로 autovacuum이 테이블에서 오래된 XID를 지우지 못하면 데이터베이스의 가장 오래된 XID가 랩 어라운드에서 4 천만 건의 트랜잭션에 도달 할 때 시스템이 이와 같은 경고 메시지를 방출하기 시작합니다.
경고 : 데이터베이스 "MyDB"는 39985967 트랜잭션 내에서 청소해야합니다
(매뉴얼윈 토토
힌트가 제안한대로 문제를 해결해야합니다. 하지만윈 토토
슈퍼업자가 수행해야합니다. 그렇지 않으면 시스템 카탈로그를 처리하지 않아 데이터베이스의 발전을 방해하지 않습니다datfrozenxid
.) 이러한 경고가 무시되면, 랩 어라운드까지 3 백만 개 미만의 트랜잭션이 남아 있으면 새로운 XID를 지정하는 것을 거부합니다 :
오류 : 데이터베이스는 데이터베이스 "MyDB"의 랩 어라운드 데이터 손실을 피하기 위해 새 XIDS를 지정하는 명령을 수락하지 않습니다.
이 조건에서 이미 진행중인 트랜잭션은 계속 진행될 수 있지만 읽기 전용 트랜잭션 만 시작할 수 있습니다. 데이터베이스 레코드를 수정하거나 관계를 자르는 작업은 실패합니다.윈 토토
명령은 여전히 정상적으로 실행할 수 있습니다. 이전 릴리스에서 때때로 권장되는 것과는 달리 정상 작동을 복원하기 위해 우체국 장을 중지하거나 단일 사용자 모드를 입력하는 것은 필요하거나 바람직하지 않습니다.
Age (TransactionId)
크다. 이러한 거래는 커밋되거나 롤백되어야합니다.Age (backend_xid)
또는Age (backend_xmin)
는 크다. 이러한 거래는 커밋되거나 롤백되어야합니다. 또는 세션은를 사용하여 종료 할 수 있습니다.pg_terminate_backend
.Age (Xmin)
또는Age (Catalog_Xmin)
크다. 많은 경우에, 이러한 슬롯은 더 이상 존재하지 않거나 오랫동안 다운 된 서버에 대한 복제를 위해 생성되었습니다.윈 토토
대상 데이터베이스에서. 데이터베이스 전체윈 토토
가장 간단합니다. 필요한 시간을 줄이려면 매뉴얼을 발행하는 것도 가능합니다윈 토토
테이블의 명령RelminxID
가장 오래된 것입니다. 사용하지 마십시오윈 토토 Full
이 시나리오에서는 XID가 필요하므로 슈퍼 사용자 모드를 제외하고 XID를 소비하여 트랜잭션 ID 랩 어라운드의 위험을 증가시키기 때문입니다. 사용하지 마십시오윈 토토 동결
정상 작동을 복원하는 데 필요한 최소 작업량 이상을 수행하기 때문에.이전 버전에서는 때때로 우체국을 중지해야했습니다.윈 토토
단일 사용자 모드의 데이터베이스. 일반적인 시나리오에서는 더 이상 필요하지 않으며 시스템을 중단하기 때문에 가능할 때마다 피해야합니다.Truncate
또는드롭
필요하지 않도록 불필요한 테이블윈 토토
그들. 관리자가이를 수행 할 수 있도록 3 백만 번의 이동 안전 마진이 존재합니다.Postgres단일 사용자 모드 사용에 대한 자세한 내용은 참조 페이지
Multixact ID여러 트랜잭션으로 행 잠금을 지원하는 데 사용됩니다. 잠금 정보를 저장하기 위해 튜플 헤더에 공간이 제한되어 있으므로 해당 정보는 A로 인코딩됩니다.“다중 트랜잭션 ID”또는 단기간에 동시에 행을 잠그는 트랜잭션이 두 개 이상있을 때마다 짧은 경우 다중 공장 ID. 특정 다중 공장 ID에 포함 된 트랜잭션 ID에 대한 정보는에 별도로 저장됩니다.PG_MULTIXACT
하위 디렉토리, 그리고 다중 팩트 ID 만에 나타납니다.xmax
튜플 헤더의 필드. 트랜잭션 ID와 마찬가지로 다중 공장 ID는 32 비트 카운터 및 해당 스토리지로 구현되며, 모두 신중한 노화 관리, 스토리지 정리 및 랩 어라운드 처리가 필요합니다.
언제든지윈 토토
테이블의 모든 부분을 스캔하면 더 오래된 다단계 ID를 대체합니다.VACUUM_MULTIXACT_FREEZE_MIN_AGE다른 값으로 0 값, 단일 트랜잭션 ID 또는 새로운 다중 공장 ID 일 수 있습니다. 각 테이블에 대해PG_CLASS
.relminmxid
그 테이블의 튜플에 여전히 나타나는 가장 오래된 다단계 ID를 저장합니다. 이 값이 더 오래된 경우VACUUM_MULTIXACT_FREEZE_TABLE_AGE, 공격적인 윈 토토이 강요됩니다. 이전 섹션에서 논의한 바와 같이, 공격적인 윈 토토 청소기는 모든 냉동으로 알려진 페이지 만 건너 뛸 것임을 의미합니다.mxid_age ()
사용 가능PG_CLASS
.relminmxid
나이를 찾으려면.
공격적인윈 토토
s, 원인에 관계없이보장테이블을 발전시킬 수 있으려면relminmxid
. 결국, 모든 데이터베이스의 모든 테이블이 스캔되고 가장 오래된 다중 공장 값이 발전되므로 구형 멀티 팩트를위한 온 디스크 스토리지를 제거 할 수 있습니다.
안전 장치로서, 다중 공장이 큰 테이블에 대해 공격적인 윈 토토 스캔이 발생합니다.autovacuum_multixact_freeze_max_age. 또한 다중 공장 멤버가 차지하는 스토리지가 2GB를 초과하는 경우, 가장 오래된 다중 공장이있는 사람부터 시작하여 모든 테이블에 대해 공격적인 윈 토토 스캔이 더 자주 발생합니다.
XID 사례와 유사하게, Autovacuum이 표에서 오래된 MXID를 제거하지 못하면 데이터베이스의 가장 오래된 MXID가 랩 어라운드 지점에서 4 천만 건의 트랜잭션에 도달하면 시스템이 경고 메시지를 방출하기 시작합니다. XID의 경우와 마찬가지로 이러한 경고가 무시되면 랩 어라운드까지 3 백만 미만이 남은 일단 새로운 MXID를 생성하는 것을 거부합니다..
MXID가 소진 될 때의 정상 작동은 XID가 소진 될 때와 거의 같은 방식으로 복원 할 수 있습니다. 이전 섹션에서 동일한 단계를 따르지만 다음과 같은 차이점이 있습니다.
pg_stat_activity
; 그러나 오래된 XID를 찾는 것은 여전히 MXID 랩 어라운드 문제를 일으키는 트랜잭션을 결정하는 좋은 방법입니다.PostgreSQL선택 사항이 있지만 적극 권장되는 기능이 있습니다.autovacuum.윈 토토
및분석
명령. 활성화되면 Autovacuum은 많은 수의 삽입, 업데이트 또는 삭제 된 튜플이있는 테이블을 확인합니다.track_countstrue
. 기본 구성에서는 자동화 장치가 활성화되고 관련 구성 매개 변수가 적절하게 설정됩니다.
the“autovacuum daemon”실제로 여러 프로세스로 구성됩니다. 라고 불리는 지속적인 데몬 프로세스가 있습니다.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
.
마지막 윈 토토이 정의 된 삽입 임계 값을 초과 한 이후 삽입 된 튜플의 수가 다음과 같이 정의 된 경우 테이블도 청소됩니다.
윈 토토 삽입 임계 값 = 윈 토토베이스 인서트 임계 값 + 윈 토토 삽입 스케일 팩터 * 튜플 수
윈 토토 삽입 기본 임계 값이있는 곳autovacuum_vacuum_insert_threshold및 윈 토토 삽입 스케일 팩터autovacuum_vacuum_insert_scale_factor. 이러한 윈 토토 청소기는 테이블의 일부를로 표시 할 수 있습니다.모든 가시적그리고 또한 튜플이 얼어 붙을 수 있도록하여 후속 윈 토토 청소기에 필요한 작업을 줄일 수 있습니다. 받는 테이블 용삽입
운영이지만 거의 없거나 거의 없음업데이트
/삭제
운영, 테이블을 낮추는 데 도움이 될 수 있습니다autovacuum_freeze_min_age이것은 이전 윈 토토에 의해 튜플을 얼릴 수 있으므로. 쓸모없는 튜플의 수와 삽입 된 튜플의 수는 누적 통계 시스템으로부터 얻어진다;업데이트
, 삭제
및삽입
작동. 인 경우relfrozenxid
테이블의 가치는 이상입니다.VACUUM_FREEZE_TABLE_AGE
트랜잭션 구식, 오래된 튜플을 얼리기 위해 공격적인 윈 토토 청소기가 수행됩니다relfrozenxid
; 그렇지 않으면 마지막 윈 토토 이후 수정 된 페이지 만 스캔됩니다.
분석의 경우 유사한 조건이 사용됩니다. 임계 값은 다음과 같습니다.
임계 값 분석 = 기본 임계 값 분석 + 스케일 팩터 분석 * 튜플 수
마지막 이후 삽입, 업데이트 또는 삭제 된 총 튜플 수와 비교됩니다분석
.
분할 된 테이블은 튜플을 직접 저장하지 않으므로 결과적으로 Autovacuum에 의해 처리되지 않습니다. (Autovacuum은 다른 테이블과 마찬가지로 테이블 파티션을 처리합니다.) 불행히도 이것은 Autovacuum이 실행되지 않음을 의미합니다.분석
분할 된 테이블에서, 이로 인해 파티션 된 테이블 통계를 참조하는 쿼리에 대한 최적의 계획이 발생할 수 있습니다. 수동으로 실행 하여이 문제를 해결할 수 있습니다분석
처음 인구가 채워질 때 파티션 된 테이블에서, 그리고 파티션에서 데이터의 분포가 크게 변경 될 때마다
Autovacuum은 임시 테이블에 액세스 할 수 없습니다. 따라서 세션 SQL 명령을 통해 적절한 윈 토토 및 분석 작업을 수행해야합니다.
기본 임계 값 및 스케일 요인은에서 가져옵니다.Postgres
, 그러나 테이블 별 기준으로 그것들 (및 기타 많은 Autovacuum 제어 매개 변수)을 무시할 수 있습니다. 보다스토리지 매개 변수자세한 내용. 테이블의 스토리지 매개 변수를 통해 설정이 변경된 경우 해당 테이블을 처리 할 때 해당 값이 사용됩니다.스포츠 토토 베트맨 : 문서 : 17 : 19.10. 스포츠 토토 베트맨 진공 스포츠 토토 베트맨글로벌 설정에 대한 자세한 내용은
여러 근로자가 달리면 Autovacuum 비용 지연 매개 변수 (참조섹션 19.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와 충돌하는 자물쇠를 획득하는 명령을 정기적으로 실행합니다.독점 업데이트 공유
잠금 (예 : 분석)
올바른 문서에 아무것도 표시되면 일치하지 않습니다.이 양식문서 문제를보고하려면