PostgreSQL데이터베이스는로 알려진주기적인 유지 보수가 필요합니다.스포츠 토토 청소기. 많은 설치의 경우에 의해 스포츠 토토 청소기를 수행하도록하기에 충분합니다.autovacuum daemon,섹션 24.1.6. 상황에 대한 최상의 결과를 얻으려면 설명 된 자동화 매개 변수를 조정해야 할 수도 있습니다. 일부 데이터베이스 관리자는 데몬 활동을 수동 관리로 보충하거나 교체하려고합니다스포츠 토토
명령, 일반적으로 일정에 따라 실행됩니다.Cron또는작업 스케줄러스크립트. 수동으로 관리되는 스포츠 토토 청소기를 올바르게 설정하려면 다음 몇 가지 하위 섹션에서 논의 된 문제를 이해해야합니다. 자가 보증에 의존하는 관리자는 여전히 자산을 이해하고 조정하는 데 도움이되도록이 자료를 훑어 보길 원할 수 있습니다.
PostgreSQL's스포츠 토토명령은 여러 가지 이유로 각 테이블을 정기적으로 처리해야합니다.
이러한 각 이유는 수행을 지시합니다스포츠 토토
다음 하위 섹션에서 설명한대로 다양한 주파수 및 범위의 작동.
두 가지 변형이 있습니다.스포츠 토토
: 표준스포츠 토토
and스포츠 토토 Full
. 스포츠 토토 Full
더 많은 디스크 공간을 되 찾을 수 있지만 훨씬 더 천천히 작동합니다. 또한 표준 형태의스포츠 토토
생산 데이터베이스 작업과 병렬로 실행할 수 있습니다. (와 같은 명령select
, 삽입
, 업데이트
및삭제
|와 같은 명령으로 테이블의 정의를 수정할 수는 없지만 정상적으로 계속 작동합니다.Alter Table
스포츠 토토 청소기가있는 동안.)스포츠 토토 Full
필요액세스 독점
진행중인 테이블을 잠그므로 다른 사용과 병렬로 수행 할 수 없습니다. 따라서 일반적으로 관리자는 표준을 사용하기 위해 노력해야합니다스포츠 토토
그리고 피하기스포츠 토토 Full
.
스포츠 토토
상당한 양의 I/O 트래픽을 생성하여 다른 활성 세션의 성능이 저하 될 수 있습니다. 배경 스포츠 토토의 성능 영향을 줄이기 위해 조정할 수있는 구성 매개 변수가 있습니다. 참조섹션 19.4.4.
inPostgreSQL, an업데이트
또는삭제
의 행은 즉시 행의 기존 버전을 제거하지 않습니다. 이 접근법은 Multiversion Concurrency Control (의 이점을 얻기 위해 필요합니다.MVCC, 참조13 장) : 행 버전은 여전히 다른 트랜잭션에도 보이는 동안 삭제되어서는 안됩니다. 그러나 결국 구식 또는 삭제 된 행 버전은 더 이상 거래에 관심이 없습니다. 디스크 공간 요구 사항의 무한한 성장을 피하기 위해 새로운 행으로 재사용하려면 차지하는 공간을 재생해야합니다. 이것은 실행하여 이루어집니다스포츠 토토
.
표준 형태스포츠 토토
테이블과 인덱스에서 데드 행 버전을 제거하고 향후 재사용에 사용할 수있는 공간을 표시합니다. 그러나 테이블 끝의 하나 이상의 페이지가 완전히 무료로되고 독점 테이블 잠금을 쉽게 얻을 수있는 특별한 경우를 제외하고는 공간을 운영 체제로 반환하지 않습니다. 대조적으로,스포츠 토토 Full
죽은 공간이없는 완전한 새 버전의 테이블 파일을 작성하여 테이블을 적극적으로 압축합니다. 이것은 테이블의 크기를 최소화하지만 오랜 시간이 걸릴 수 있습니다. 또한 작업이 완료 될 때까지 새 테이블 사본을위한 추가 디스크 공간이 필요합니다.
일상 스포츠 토토 청소기의 일반적인 목표는 표준을 수행하는 것입니다스포츠 토토
필요를 피하기에 충분히 충분히스포츠 토토 Full
. Autovacuum 데몬은 이런 식으로 일하려고 시도하지만 실제로는 결코 발행하지 않을 것입니다스포츠 토토 Full
. 이 접근법 에서이 아이디어는 테이블을 최소 크기로 유지하는 것이 아니라 디스크 공간의 정상 상태 사용을 유지하는 것입니다. 각 테이블은 최소 크기와 동등한 공간을 차지하지만 스포츠 토토 실행 사이에 많은 공간이 사용됩니다. 하지만스포츠 토토 Full
최소 크기로 테이블을 축소하고 디스크 공간을 운영 체제로 돌려 보내는 데 사용될 수 있습니다. 테이블이 향후 다시 자라면이 점이 많지 않습니다. 따라서 적당히 프레시트 표준스포츠 토토
Runs는 드물게 더 나은 접근 방식입니다스포츠 토토 Full
심하게 업데이트 된 테이블을 유지하기 위해 실행됩니다.
일부 관리자는 부하가 낮을 때 밤에 모든 작업을 수행하는 등 스스로 스포츠 토토 청소기를 예약하는 것을 선호합니다. 고정 된 일정에 따라 스포츠 토토 청소기를 수행하는 데 어려움이있는 것은 테이블에 업데이트 활동이 예기치 않은 스파이크가 있으면 지점까지 부풀어 질 수 있다는 것입니다.스포츠 토토 Full
공간을 되찾기 위해서는 실제로 필요합니다. Autovacuum 데몬을 사용하면 업데이트 활동에 대한 반응으로 동적으로 스포츠 토토 상태를 유지하기 때문에이 문제가 완화됩니다. 매우 예측 가능한 워크로드가 없다면 데몬을 완전히 비활성화하는 것은 현명하지 않습니다. 가능한 타협은 데몬 매개 변수를 설정하여 비정상적으로 무거운 업데이트 활동에만 반응하여 일이 손을 떼지 못하게하는 것입니다.스포츠 토토
부하가 전형적인 경우 대부분의 작업을 수행 할 것으로 예상됩니다.
autovacuum을 사용하지 않는 사람들의 경우 일반적인 접근 방식은 데이터베이스 전체를 예약하는 것입니다스포츠 토토
필요에 따라 상당한 업데이트 된 테이블을보다 빈번하게 스포츠 토토 청소기로 보충하는 저용 기간 동안 하루에 한 번. (매우 높은 업데이트 속도를 가진 일부 설치는 몇 분마다 가장 바쁜 테이블을 스포츠 토토 청소기로 스포츠 토토 청소기에 스포츠 토토화합니다.) 클러스터에 여러 데이터베이스가있는 경우스포츠 토토
각각; 프로그램VACUUMDB도움이 될 수 있습니다.
일반스포츠 토토
테이블에 대규모 업데이트 또는 삭제 활동의 결과로 많은 수의 Dead Row 버전이 포함되어있을 때 만족스럽지 않을 수 있습니다. 그러한 테이블이 있고 점유하는 과도한 디스크 공간을 되 찾아야하는 경우 사용해야합니다.스포츠 토토 Full
또는 또는 대안클러스터Alter Table. 이 명령은 완전히 새로운 테이블 사본을 다시 작성하고 새로운 색인을 작성합니다. 이 모든 옵션에는액세스 독점
잠금. 테이블의 오래된 사본과 인덱스는 새 새로운 것들이 완료 될 때까지 해제 할 수 없기 때문에 테이블 크기와 거의 같은 여분의 디스크 공간을 일시적으로 사용합니다..
전체 내용이 정기적으로 삭제되는 테이블이있는 경우를 고려하십시오.Truncate사용하기보다는삭제
이후스포츠 토토
. Truncate
후속을 필요로하지 않고 즉시 테이블의 전체 내용을 제거합니다스포츠 토토
또는스포츠 토토 Full
현재 사용되지 않은 디스크 공간을 되 찾으려면. 단점은 엄격한 MVCC 시맨틱이 위반된다는 것입니다.
thePostgreSQL쿼리 플래너는 쿼리에 대한 좋은 계획을 생성하기 위해 테이블 내용에 대한 통계 정보에 의존합니다. 이 통계는에 의해 수집됩니다.분석명령, 자체적으로 또는 선택적인 단계로 촉진 할 수 있습니다스포츠 토토
. 합리적으로 정확한 통계를 보유하는 것이 중요합니다. 그렇지 않으면 계획의 열악한 선택은 데이터베이스 성능을 저하시킬 수 있습니다.
Autovacuum 데몬은 활성화되면 자동으로 발행됩니다분석
테이블의 내용이 충분히 변경 될 때마다 명령합니다. 그러나 관리자는 수동 예약에 의존하는 것을 선호 할 수 있습니다분석
운영, 특히 테이블의 업데이트 활동이의 통계에 영향을 미치지 않는다고 알려진 경우“흥미로운”열. 데몬 일정분석
삽입 또는 업데이트 된 행 수의 함수로서 엄격하게; 그것이 의미있는 통계적 변화로 이어질지 여부는 알 수 없습니다.
튜플은 파티션에서 변경되었으며 상속 자녀는 부모 테이블에서 분석을 트리거하지 않습니다. 상위 테이블이 비어 있거나 거의 변경되지 않은 경우 Autovacuum에 의해 처리되지 않을 수 있으며 상속 트리의 통계는 전체적으로 수집되지 않습니다. 실행할 필요가 있습니다분석
통계를 최신 상태로 유지하기 위해 수동으로 부모 테이블에서.
공간 복구를위한 스포츠 토토 청소기와 마찬가지로, 통계의 빈번한 업데이트는 거의 업데이트 된 테이블보다 무거운 업데이트 된 테이블에 더 유용합니다. 그러나 업데이트 된 테이블의 경우에도 데이터의 통계 분포가 크게 변경되지 않으면 통계 업데이트가 필요하지 않을 수 있습니다. 간단한 경험 법칙은 테이블의 열의 최소 및 최대 값이 얼마나 많이 변경되는지 생각하는 것입니다. 예를 들어, A타임 스탬프
행 업데이트 시간이 포함 된 열은 행이 추가되고 업데이트 될 때 지속적으로 증가하는 최대 값을 갖습니다. 이러한 열은 아마도 웹 사이트에 액세스 할 수있는 페이지에 대한 URL이 포함 된 열보다 더 빈번한 통계 업데이트가 필요할 것입니다. URL 열은 자주 변경을받을 수 있지만 그 값의 통계적 분포는 아마도 비교적 느리게 변할 것입니다.
실행할 수 있습니다분석
특정 테이블 및 테이블의 특정 열만 있으므로 응용 프로그램에 필요한 경우 다른 통계보다 일부 통계를 더 자주 업데이트하는 유연성이 존재합니다. 그러나 실제로는 빠른 작업이기 때문에 전체 데이터베이스를 분석하는 것이 가장 좋습니다.분석
모든 행을 읽지 않고 테이블 행의 통계적으로 임의의 샘플링을 사용합니다.
콜럼 당 조정이지만분석
주파수는 생산적이지 않을 수 있습니다.분석
. 크게 사용되는 열여기서
조항과 불규칙한 데이터 분포는 다른 열보다 더 미세한 데이터 히스토그램이 필요할 수 있습니다. 보다Alter Table Set Statistics
또는를 사용하여 데이터베이스 전체 기본값을 변경하십시오.default_statistics_target구성 매개 변수.
또한 기본적으로 함수 선택성에 대한 정보가 제한되어 있습니다. 그러나 함수 호출을 사용하는 표현식 인덱스를 작성하면 기능에 대한 유용한 통계가 수집되어 표현식 인덱스를 사용하는 쿼리 계획을 크게 향상시킬 수 있습니다.
autovacuum 데몬이 발행되지 않습니다분석
외국 테이블에 대한 명령은 얼마나 자주 유용한지를 결정할 수단이 없기 때문에. 쿼리에 적절한 계획을 위해 외국 테이블에 대한 통계가 필요한 경우 수동으로 관리하는 것이 좋습니다분석
적절한 일정에 따라 해당 테이블의 명령.
autovacuum 데몬이 발행되지 않습니다분석
분할 된 테이블에 대한 명령. 상속 성 부모는 부모 자체가 변경된 경우에만 분석됩니다. 부모 테이블에서 자녀 테이블의 변경 사항은자가 분석을 트리거하지 않습니다. 적절한 계획을 위해 부모 테이블에 대한 통계가 필요한 경우 정기적으로 설명서를 실행해야합니다분석
통계를 최신 상태로 유지하려면 해당 테이블에서.
스포츠 토토 유지 관리토토 사이트 추천 : 문서 : 12 : 69.4. 가시성 맵각 테이블의 경우 모든 활성 트랜잭션에 보이는 것으로 알려진 튜플 (및 페이지가 다시 수정 될 때까지 모든 미래의 트랜잭션) 만 포함하는 페이지를 추적합니다. 이것은 두 가지 목적이 있습니다. 먼저, 청소할 것이 없기 때문에 스포츠 토토 청소기 자체는 다음 달리기에서 그러한 페이지를 건너 뛸 수 있습니다.
두 번째, 허용PostgreSQL기본 테이블을 참조하지 않고 인덱스 만 사용하여 일부 쿼리에 응답합니다. 부터postgresql인덱스에는 튜플 가시성 정보가 포함되어 있지 않으며, 정상 인덱스 스캔은 각 일치하는 인덱스 항목에 대한 힙 튜플을 가져와 현재 트랜잭션에서 볼 수 있는지 확인합니다.색인 전용 스캔27966_28311
PostgreSQL's토토 커뮤니티 PostgreSQL : 문서 : 12 : 13.1. 소개트랜잭션 시맨틱은 트랜잭션 ID (를 비교할 수 있다는 것에 달려 있습니다.xid) 숫자 : 현재 트랜잭션의 XID보다 큰 삽입 XID가있는 행 버전“미래”현재 트랜잭션에 보이지 않아야합니다. 그러나 트랜잭션 ID는 크기가 제한되어 있기 때문에 (32 비트) 오랫동안 실행되는 클러스터 (40 억 개 이상의 거래)가 어려움을 겪기 때문에트랜잭션 ID 랩 어라운드: XID 카운터는 0으로 감싸고 과거에 있었던 갑작스런 트랜잭션은 미래에있는 것처럼 보입니다. 이는 출력이 보이지 않게됩니다. 요컨대, 치명적인 데이터 손실. (실제로 데이터는 여전히 존재하지만, 얻을 수 없다면 냉담한 편안함입니다.)이를 피하려면 모든 데이터베이스의 모든 테이블의 모든 테이블을 적어도 20 억 개의 거래마다 스포츠 토토 청소해야합니다..
정기 스포츠 토토 청소기가 문제를 해결하는 이유는입니다.스포츠 토토
줄을 표시 할 것입니다냉동, 과거에 거래 삽입의 영향이 모든 현재 및 미래의 거래에 볼 수 있도록 충분히 저지른 거래에 의해 삽입되었음을 나타냅니다. 정상 XID는 Modulo-2를 사용하여 비교됩니다32산술. 이것은 모든 정상적인 XID에 대해 20 억 개의 XID가 있음을 의미합니다.“구식”“최신”; 또 다른 방법은 정상적인 XID 공간이 엔드 포인트가없는 원형이라는 것입니다. 따라서 특정 일반 XID로 행 버전이 생성되면 행 버전이로 나타납니다.“과거”다음 20 억 건의 거래의 경우 어떤 정상적인 XID에 관계없이. 20 억 건 이상의 거래 후에 행 버전이 여전히 존재하면 갑자기 앞으로 나올 것입니다. 이를 방지하려면PostgreSQL특별 XID를 보유합니다.FozentRansactionID
, 이것은 정상적인 XID 비교 규칙을 따르지 않으며 항상 모든 정상 XID보다 오래된 것으로 간주됩니다. 냉동 행 버전은 삽입 XID가 인 것처럼 취급됩니다.FozentRansactionID
“과거”31340_31484
inPostgreSQL9.4 이전의 버전, 실제로 행의 삽입 xid를 대체하여 냉동을 구현했습니다.FozentRansactionID
, 행에서 볼 수있는xmin
시스템 열. 최신 버전은 플래그 비트를 설정하여 행의 원본을 보존합니다xmin
가능한 법의학 사용. 그러나xmin
동일FozentRansactionID
(2) 여전히 데이터베이스에서 찾을 수 있습니다pg_upgrade'D Pre-9.4 버전에서..
또한 시스템 카탈로그에는 행이 포함될 수 있습니다xmin
동일bootstraptransactionID
(1), 첫 번째 단계에서 삽입되었음을 나타냅니다.initdb. 좋다frozentRansactionID
32492_32555
VACUUM_FREEZE_MIN_AGEXID가 얼어 붙을 행 전에 XID 값이 얼마나 오래되어야하는지 제어합니다. 이 설정을 늘리면 얼어 붙을 행이 곧 다시 수정 될 경우 불필요한 작업을 피할 수 있지만,이 설정을 줄이면 테이블을 다시 청소하기 전에 경과 할 수있는 트랜잭션의 수가 증가합니다..
스포츠 토토
사용토토 사이트 추천 : 문서 : 12 : 69.4. 가시성 맵테이블의 어떤 페이지를 스캔 해야하는지 결정하려면. 일반적으로 해당 페이지에 오래된 XID 값이있는 행 버전이있을 경우에도 Dead Row 버전이없는 페이지를 건너 뜁니다. 따라서 정상스포츠 토토
s는 항상 테이블의 모든 오래된 행 버전을 얼지 않습니다. 주기적으로스포츠 토토
수행 할 것입니다공격적인 스포츠 토토, 죽은 행이나 고정되지 않은 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은 구성 매개 변수로 지정된 연령보다 오래된 XID가있는 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_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
지평. 커밋 상태는 거래 당 두 비트를 사용하므로 ifautovacuum_freeze_max_age
최대 허용 된 값으로 설정되어 있습니다.PG_XACT
약 절반의 기가 바이트와까지 자랄 수 있습니다.PG_COMMIT_TS
약 20GB. 이것이 총 데이터베이스 크기에 비해 사소한 경우autovacuum_freeze_max_age
최대 허용 값까지 권장됩니다. 그렇지 않으면 기꺼이 허용하는 것에 따라 설정PG_XACT
andPG_COMMIT_TS
스토리지. (기본값, 2 억 건의 거래는 약 50MB의로 변환됩니다.PG_XACT
스토리지 및 약 2GBPG_COMMIT_TS
스토리지.)
감소의 한 가지 단점VACUUM_FREEZE_MIN_AGE
원인이 될 수 있다는 것입니다스포츠 토토
쓸모없는 작업을 수행하려면 : 행 버전을 동결시키는 것은 곧 행이 수정되면 시간 낭비입니다 (새 XID를 얻게됩니다). 따라서 설정은 더 이상 변경 될 가능성이 높아질 때까지 행이 얼어 붙지 않을 정도로 커야합니다.
데이터베이스에서 가장 오래된 XID의 나이를 추적하려면스포츠 토토
시스템 테이블에 XID 통계를 저장PG_CLASS
및pg_database
. 특히relfrozenxid
테이블의 열PG_CLASS
행 마지막 공격에 의해 사용 된 Freeze Cutoff XID가 포함되어 있습니다스포츠 토토
해당 테이블의 경우. 이 컷오프 XID보다 오래된 XID와의 트랜잭션에 의해 삽입 된 모든 행은 동결 된 것으로 보장됩니다. 마찬가지로datfrozenxid
데이터베이스 열pg_database
행은 해당 데이터베이스에 나타나는 XID가 표시되지 않은 XID의 하한입니다. 테이블 당 최소의 최소입니다relfrozenxid
데이터베이스 내의 값. 이 정보를 조사하는 편리한 방법은 다음과 같은 쿼리를 실행하는 것입니다.
c.oid :: regclass as table_name을 선택하십시오. 연령으로 가장 큰 (연령 (C.Relfrozenxid), 연령 (T.Relfrozenxid)) pg_class에서 c C.ReltoastRelid = T.Oid에서 PG_CLASS T를 왼쪽으로 결합하십시오 여기서 c.relkind에서 ( 'r', 'm'); pg_database에서 datname, age (datfrozenxid)를 선택하십시오.
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여러 거래로 행 잠금을 지원하는 데 사용됩니다. 잠금 정보를 저장하기 위해 튜플 헤더에 공간이 제한되어 있으므로 해당 정보는 A로 인코딩됩니다.“다중 거래 ID”또는 짧은 경우, 한 번 이상의 트랜잭션이 동시에 행을 잠그는 경우가 있습니다. 특정 다중 공장 ID에 포함 된 트랜잭션 ID에 대한 정보는에 별도로 저장됩니다.PG_MULTIXACT
하위 디렉토리, 그리고 다중 공장 ID 만에 나타납니다.xmax
튜플 헤더의 필드. 트랜잭션 ID와 마찬가지로 다중 공장 ID는 32 비트 카운터 및 해당 스토리지로 구현되며, 모두 신중한 노화 관리, 스토리지 정리 및 랩 어라운드 처리가 필요합니다. 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%를 초과하는 경우, 가장 오래된 다중 행위를 가진 사람들부터 시작하여 모든 테이블에 대해 공격적인 스포츠 토토 스캔도 점차적으로 발생합니다. Autovacuum이 명목상으로 장애가있는 경우에도 이러한 종류의 공격적인 스캔이 모두 발생합니다.
PostgreSQL선택 사항이 있지만 적극 권장되는 기능이 있습니다.autovacuum.스포츠 토토
and분석
명령. 활성화되면 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
. 쓸모없는 튜플의 수는 통계 수집가로부터 얻어진다; 각에 의해 업데이트 된 반 유치 카운트입니다.업데이트
및삭제
작동. (일부 정보가 무거운 짐으로 손실 될 수 있기 때문에 반 정확도입니다.) 인 경우relfrozenxid
테이블의 가치는 이상입니다.VACUUM_FREEZE_TABLE_AGE
트랜잭션 오래된 트랜잭션, 오래된 튜플을 얼리기 위해 공격적인 스포츠 토토이 수행됩니다relfrozenxid
; 그렇지 않으면 마지막 스포츠 토토 이후 수정 된 페이지 만 스캔됩니다.
분석의 경우 유사한 조건이 사용됩니다. 임계 값은 다음과 같습니다.
임계 값 분석 = 기본 임계 값 분석 + 스케일 팩터 분석 * 튜플 수
마지막 이후 삽입, 업데이트 또는 삭제 된 총 튜플 수와 비교됩니다분석
.
파티션 된 테이블은 튜플을 직접 저장하지 않으므로 결과적으로 Autovacuum에 의해 처리되지 않습니다. (Autovacuum은 다른 테이블과 마찬가지로 테이블 파티션을 처리합니다.) 불행히도 이것은 Autovacuum이 실행되지 않음을 의미합니다.분석
분할 된 테이블에서, 이로 인해 파티션 된 테이블 통계를 참조하는 쿼리에 대한 차선 계획이 발생할 수 있습니다. 수동으로 실행 하여이 문제를 해결할 수 있습니다분석
처음 인구가 채워질 때 파티션 된 테이블에서, 그리고 파티션에서 데이터의 분포가 크게 변경 될 때마다
Autovacuum은 임시 테이블에 액세스 할 수 없습니다. 따라서 세션 SQL 명령을 통해 적절한 스포츠 토토 및 분석 작업을 수행해야합니다.
기본 임계 값 및 스케일 요인은에서 가져옵니다.postgresql.conf
, 그러나 테이블 별 기준으로 그것들 (및 기타 많은 Autovacuum 제어 매개 변수)을 무시할 수 있습니다. 보다스토리지 매개 변수자세한 내용. 테이블의 스토리지 매개 변수를 통해 설정이 변경된 경우 해당 테이블을 처리 할 때 해당 값이 사용됩니다. 그렇지 않으면 전역 설정이 사용됩니다. 보다스포츠 토토 사이트 : 문서 : 12 : 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독점 업데이트 공유
잠금 (예 : 분석)