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 테이블 세트 통계
또는를 사용하여 데이터베이스 전체 기본값을 변경하십시오.default_statistics_target구성 매개 변수.
또한 기본적으로 함수 선택성에 대한 정보가 제한되어 있습니다. 그러나 함수 호출을 사용하는 표현식 인덱스를 작성하면 기능에 대한 유용한 통계가 수집되어 표현식 인덱스를 사용하는 쿼리 계획을 크게 향상시킬 수 있습니다.
autovacuum 데몬이 발행되지 않습니다분석
외국 테이블의 명령은 얼마나 자주 유용할지를 결정할 수단이 없기 때문에. 쿼리에 적절한 계획을 위해 외국 테이블에 대한 통계가 필요한 경우 수동으로 관리하는 것이 좋습니다분석
적절한 일정에 따라 해당 테이블의 명령.
autovacuum 데몬이 발행되지 않습니다분석
분할 된 테이블의 명령. 상속 성 부모는 부모 자체가 변경된 경우에만 분석됩니다. 부모 테이블에서 자녀 테이블의 변경 사항은자가 분석을 트리거하지 않습니다.분석
통계를 최신 상태로 유지하려면 해당 테이블에서.
스포츠 토토 베트맨 유지 관리스포츠 토토 베트맨 : 문서 : 13 : 69.4. 가시성 맵각 테이블에 대해 모든 활성 거래에 보이는 것으로 알려진 튜플 만 포함하는 페이지 (및 페이지가 다시 수정 될 때까지 모든 미래의 트랜잭션)를 추적합니다. 이것은 두 가지 목적이 있습니다.
두 번째, 허용PostgreSQL기본 테이블을 참조하지 않고 인덱스 만 사용하여 일부 쿼리에 응답합니다. 부터PostgreSQL인덱스에는 튜플 가시성 정보가 포함되어 있지 않으며, 정상 인덱스 스캔은 각 일치하는 인덱스 항목에 대한 힙 튜플을 가져와 현재 트랜잭션에서 볼 수 있는지 확인합니다.색인 전용 스캔26095_26438
PostgreSQL's토토 캔 : 문서 : 13 : 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를 보유합니다.frozentRansactionID
, 이것은 정상적인 XID 비교 규칙을 따르지 않으며 항상 모든 정상 XID보다 오래된 것으로 간주됩니다. 냉동 행 버전은 삽입 XID가 인 것처럼 취급됩니다.frozentRansactionID
“과거”22260_22401
inPostgreSQL9.4 이전의 버전에서, 실제로 행의 삽입 xid를 대체하여 냉동은 구현되었습니다.frozentRansactionID
, 행에서 볼 수있는xmin
시스템 열. 최신 버전은 플래그 비트를 설정하여 행의 원본을 보존합니다xmin
가능한 법의학 사용. 그러나xmin
동일frozentRansactionID
(2) 여전히 데이터베이스에서 찾을 수 있습니다pg_upgrade'D Pre-9.4 버전에서.
또한 시스템 카탈로그에는가 포함되어있을 수 있습니다.xmin
동일bootstraptransactionID
(1), 첫 번째 단계에서 삽입되었음을 나타냅니다.initdb. 좋다frozentRansactionID
,이 특수 XID는 모든 정상 XID보다 오래된 것으로 취급됩니다.
VACUUM_FREEZE_MIN_AGEXID가 얼어 붙을 행 전에 XID 값이 얼마나 오래되어야하는지 제어합니다. 이 설정을 늘리면 얼어 붙을 행이 곧 다시 수정 될 경우 불필요한 작업을 피할 수 있지만,이 설정을 줄이면 테이블을 다시 청소하기 전에 경과 할 수있는 트랜잭션의 수가 증가합니다..
스포츠 토토 베트맨
사용스포츠 토토 베트맨 : 문서 : 13 : 69.4. 가시성 맵테이블의 어떤 페이지를 스캔 해야하는지 결정합니다. 일반적으로 해당 페이지에 오래된 XID 값이있는 행 버전이있을 경우에도 Dead Row 버전이없는 페이지를 건너 뜁니다.스포츠 토토 베트맨
s는 항상 테이블의 모든 오래된 행 버전을 얼지 않습니다. 주기적으로스포츠 토토 베트맨
수행 할 예정공격적인 스포츠 토토 베트맨, 죽은 줄이나 XID 또는 MXID 값이 포함되어 있지 않은 페이지 만 건너 뜁니다.Vacuum_Freeze_table_age컨트롤스포츠 토토 베트맨
그렇게 : 마지막으로 스캔 한 이후로 통과 한 트랜잭션의 수가보다 into-visible이지만 모든 프록 젠 페이지가 스캔되지 않습니다.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가 포함되어 있습니다스포츠 토토 베트맨
해당 테이블의 경우. 이 컷오프 XID보다 오래된 XID와의 트랜잭션에 의해 삽입 된 모든 행은 동결 된 것으로 보장됩니다.datfrozenxid
데이터베이스의 열pg_database
행은 해당 데이터베이스에 나타나는 XID가없는 XID의 하한입니다. 테이블 당 최소의 최소입니다relfrozenxid
데이터베이스 내의 값. 이 정보를 조사하는 편리한 방법은 다음과 같은 쿼리를 실행하는 것입니다.
c.oid :: regclass as table_name,
theAge
열은 컷오프 XID에서 현재 트랜잭션의 XID까지의 트랜잭션 수를 측정합니다.
스포츠 토토 베트맨
일반적으로 마지막 스포츠 토토 베트맨 이후 수정 된 페이지 만 스캔하지만relfrozenxid
XID를 포함 할 수있는 테이블의 모든 페이지가 스캔 될 때만 고급화 될 수 있습니다. 이것은 발생할 때 발생합니다relfrozenxid
이상Vacuum_Freeze_table_age
거래 오래,스포츠 토토 베트맨
's동결
옵션이 사용되거나, 이미 전혀없는 모든 페이지가 Dead Row 버전을 제거하기 위해 스포츠 토토 베트맨 청소기가 필요할 때. 언제스포츠 토토 베트맨
아직 전혀없는 테이블의 모든 페이지를 스캔하면 설정해야합니다Age (RelfrozenxID)
VACUUM_FREEZE_MIN_AGE
사용 된 설정 ( 이후 시작된 트랜잭션 수에 따라스포츠 토토 베트맨
시작). 그렇지 않은 경우relfrozenxid
-어드밴싱스포츠 토토 베트맨
|autovacuum_freeze_max_age
도달하면 Autovacuum이 곧 테이블을 위해 강요 될 것입니다.
어떤 이유로 autovacuum이 테이블에서 오래된 XID를 지우지 못하면 데이터베이스의 가장 오래된 XID가 랩 어라운드에서 110 만 개의 트랜잭션에 도달 할 때 시스템이 이와 같은 경고 메시지를 방출하기 시작합니다.
경고 : 데이터베이스 "MyDB"는 10985967 트랜잭션 내에서 청소해야합니다
(매뉴얼스포츠 토토 베트맨
힌트가 제안한대로 문제를 해결해야합니다. 하지만스포츠 토토 베트맨
슈퍼 사용자가 수행해야합니다. 그렇지 않으면 시스템 카탈로그를 처리하지 못하므로 데이터베이스를 발전시킬 수 없습니다datfrozenxid
.) 이러한 경고가 무시되면, 랩 어라운드까지 1 백만 개 미만의 트랜잭션이 남아 있으면 시스템이 종료되고 새로운 거래 시작을 거부합니다 :
오류 : 데이터베이스는 데이터베이스 "MyDB"의 랩 어라운드 데이터 손실을 피하기 위해 명령을 수락하지 않습니다.
1 백만 번의 트랜잭션 안전 마진이 존재하여 관리자가 데이터 손실없이 복구 할 수 있도록 필요합니다.스포츠 토토 베트맨
명령. 그러나 시스템이 안전 차단 모드로 들어간 후에 시스템이 사령부를 실행하지 않기 때문에이를 수행하는 유일한 방법은 서버를 중지하고 단일 사용자 모드에서 서버를 시작하여 실행하는 것입니다.스포츠 토토 베트맨
. 셧다운 모드는 단일 사용자 모드에서 시행되지 않습니다.Postgres단일 사용자 모드 사용에 대한 자세한 내용은 참조 페이지입니다.
Multixact ID여러 거래로 Row Locking을 지원하는 데 사용됩니다. 잠금 정보를 저장하기 위해 튜플 헤더에 공간이 제한되어 있으므로 해당 정보는 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
나이를 찾으려면.
공격적인스포츠 토토 베트맨
원인에 관계없이 스캔하면 해당 테이블의 값을 발전시킬 수 있습니다. 결국, 모든 데이터베이스의 모든 테이블이 스캔되고 가장 오래된 다중 공장 값이 발전되므로 구형 멀티 팩트를위한 온 디스크 스토리지를 제거 할 수 있습니다.
안전 장치로서, 다중 공장 연령대가 큰 테이블에 대해 공격적인 스포츠 토토 베트맨 스캔이 발생합니다.autovacuum_multixact_freeze_max_age. 중고 멤버 저장 공간의 양이 주소가 가능한 저장 공간의 50%를 초과하는 경우, 가장 오래된 다중 행위를 가진 사람들부터 시작하여 모든 테이블에 대해 공격적인 스포츠 토토 베트맨 스캔도 점차적으로 발생합니다.
PostgreSQL선택 사항이 있지만 적극 권장되는 기능이 있습니다.autovacuum, 그의 실행을 자동화하는 목적스포츠 토토 베트맨
및분석
명령. 활성화되면 Autovacuum은 많은 수의 삽입, 업데이트 또는 삭제 된 튜플이있는 테이블을 확인합니다.track_counts로 설정되었습니다true
. 기본 구성에서는 자동화 장치가 활성화되고 관련 구성 매개 변수가 적절하게 설정됩니다.
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_ageTransactions Old는 항상 스포츠 토토 베트맨 청소기입니다 (이것은 스토리지 매개 변수를 통해 동결 최대 시대가 수정 된 테이블에도 적용됩니다. 아래 참조). 그렇지 않으면, 튜플의 수가 마지막 이후 쓸모없는 경우스포츠 토토 베트맨
초과“스포츠 토토 베트맨 임계 값”, 테이블은 스포츠 토토 베트맨 청소기입니다. 스포츠 토토 베트맨 임계 값은 다음과 같이 정의됩니다.
스포츠 토토 베트맨 임계 값 = 스포츠 토토 베트맨베이스 임계 값 + 스포츠 토토 베트맨 스케일 팩터 * 튜플 수
스포츠 토토 베트맨베이스 임계 값이있는 곳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 제어 매개 변수)을 무시할 수 있습니다. 보다스토리지 매개 변수자세한 내용. 테이블의 스토리지 매개 변수를 통해 설정이 변경된 경우 해당 테이블을 처리 할 때 해당 값이 사용됩니다.범퍼카 토토 : 문서 : 13 : 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와 충돌하는 자물쇠를 획득하는 명령을 정기적으로 실행하는 명령독점 업데이트 공유
잠금 (예 : 분석)
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면