포스트그레SQL의토토 꽁 머니명령은 정기적으로 실행되어야 합니다. 몇 가지 이유:
업데이트되거나 삭제된 디스크 공간을 복구하려면 행.
다음에서 사용하는 데이터 통계를 업데이트하려면포스트그레SQL쿼리 플래너.
다음으로 인해 매우 오래된 데이터의 손실을 방지하기 위해거래 ID 랩어라운드.
빈도 및 범위토토 꽁 머니s 이러한 각 이유에 대해 수행되는 작업은 다음에 따라 다릅니다. 각 설치의 요구 사항. 따라서 데이터베이스 관리자는 이러한 문제를 이해하고 적절한 방법을 개발해야 합니다. 유지 관리 전략. 이 섹션에서는 다음 내용을 집중적으로 설명합니다. 높은 수준의 문제; 명령 구문 등에 대한 자세한 내용은 참조하세요토토 꽁 머니명령 참조 페이지.
시작PostgreSQL7.2, 의 표준형토토 꽁 머니실행 가능 일반적인 데이터베이스 작업(선택, 삽입, 업데이트, 삭제는 가능하지만 테이블 스키마는 변경되지 않습니다). 루틴 따라서 토토 꽁 머니 청소기로 청소하는 것은 이전만큼 방해가 되지 않습니다. 릴리스 일정을 잡는 것은 그다지 중요하지 않습니다. 하루 중 사용량이 적은 시간입니다.
정상적으로포스트그레SQL작업, an업데이트또는삭제행은 즉시 제거되지 않습니다. 오래된튜플(행의 버전). 이 다중 버전의 이점을 얻으려면 접근 방식이 필요합니다. 동시성 제어(참조사용자의 안내): 튜플은 아직 존재하는 동안 삭제하면 안 됩니다. 잠재적으로 다른 트랜잭션에 표시됩니다. 그러나 결국, 오래되었거나 삭제된 튜플은 더 이상 누구에게도 관심이 없습니다. 거래. 그것이 차지하는 공간은 재사용을 위해 회수되어야 합니다 새로운 튜플을 사용하여 디스크 공간의 무한한 증가를 방지합니다. 요구 사항. 이는 다음을 실행하여 수행됩니다.토토 꽁 머니.
분명히 자주 업데이트되거나 삭제되는 테이블입니다 자주 청소하지 않는 테이블보다 더 자주 청소해야 합니다. 업데이트되었습니다. 주기적으로 설정하는 것이 유용할 수 있습니다.크론선택한 토토 꽁 머니청소 작업만 수행 테이블, 자주 변경되지 않는 것으로 알려진 테이블을 건너뜁니다. 이는 두 가지 모두 큰 경우에만 도움이 될 수 있습니다. 자주 업데이트되는 테이블과 거의 업데이트되지 않는 큰 테이블 --- 작은 테이블을 청소하는 데 드는 추가 비용은 가치가 없습니다 걱정된다.
의 표준 형식토토 꽁 머니최고입니다 상당히 수준 높은 정상상태를 유지하려는 목적으로 사용됩니다. 디스크 공간 사용량. 표준 형식은 오래된 튜플을 찾고 테이블 내에서 공간을 재사용할 수 있도록 하지만 테이블 파일을 줄이고 반환하려고 열심히 노력하지 않습니다. 운영 체제에 대한 디스크 공간. 디스크를 반납해야 하는 경우 사용할 수 있는 운영 체제 공간토토 꽁 머니 가득 참--- 그런데 풀어준다는 게 무슨 소용이 있나요? 곧 다시 할당해야 하는 디스크 공간이 있습니까? 보통 빈도 표준토토 꽁 머니은(는) 드물게 사용하는 것보다 더 나은 접근 방식입니다.토토 꽁 머니 전체s는 많이 업데이트된 테이블을 유지하기 위한 것입니다.
대부분의 사이트에서 권장되는 방법은 데이터베이스 전체토토 꽁 머니하루에 한 번 하루 중 사용량이 적은 시간, 더 자주 토토 꽁 머니청소기로 보충 필요한 경우 크게 업데이트된 테이블. (여러개일 경우 설치된 데이터베이스의 경우 각 데이터베이스를 토토 꽁 머니청소하는 것을 잊지 마십시오.vacuumdb스크립트가 도움이 될 수 있습니다.) 일반 사용토토 꽁 머니아님토토 꽁 머니 가득 참, 일상적인 공간 청소용 회복.
토토 꽁 머니이 가득 참케이스에 권장됩니다. 당신이 알고 있는 곳에서는 대부분의 튜플을 삭제했습니다. 테이블의 안정된 상태 크기를 줄일 수 있도록 실질적으로토토 꽁 머니 가득 참더보기 공격적으로 접근합니다.
내용이 완전히 삭제된 테이블이 있는 경우 자주 함께 해보세요.잘라내기사용하는 것보다삭제다음에 이어짐토토 꽁 머니.
그PostgreSQL질의 플래너는 콘텐츠에 대한 통계 정보에 의존합니다. 쿼리에 대한 좋은 계획을 생성하기 위한 테이블입니다. 이것들 통계는 다음에 의해 수집됩니다.분석명령은 단독으로 또는 선택적 단계로 호출할 수 있습니다. 에서토토 꽁 머니. 갖는 것이 중요합니다 합리적으로 정확한 통계, 그렇지 않으면 잘못된 계획 선택 데이터베이스 성능이 저하될 수 있습니다.
공간 복구를 위한 토토 꽁 머니 청소와 마찬가지로 자주 업데이트되는 통계는 테이블보다 자주 업데이트되는 테이블에 더 유용합니다. 거의 업데이트되지 않는 것. 그러나 크게 업데이트된 테이블의 경우에도 통계가 다음과 같은 경우 통계 업데이트가 필요하지 않을 수 있습니다. 데이터 분포는 크게 변하지 않습니다. 간단한 규칙 엄지손가락은 최소값과 최대값이 얼마인지 생각하는 것입니다. 테이블의 열이 변경됩니다. 예를 들어,타임스탬프행의 시간을 포함하는 열 업데이트는 행에 따라 지속적으로 증가하는 최대값을 갖습니다. 추가되고 업데이트됩니다. 그러한 열에는 아마도 더 많은 것이 필요할 것입니다 URL이 포함된 열보다 통계가 자주 업데이트됩니다. 웹사이트에서 액세스한 페이지의 경우. URL 열은 다음을 수신할 수 있습니다. 자주 변경되지만 통계적 분포는 값은 상대적으로 느리게 변경될 수 있습니다.
실행이 가능합니다분석켜짐 특정 테이블, 심지어는 테이블의 특정 열만 일부 통계를 더 많이 업데이트할 수 있는 유연성이 존재합니다. 애플리케이션에 필요한 경우 다른 것보다 자주. 에서 그러나 실제로는 이 기능의 유용성이 의심스럽습니다. 다음에서 시작됨PostgreSQL 7.2, 분석심지어 상당히 빠른 작업입니다. 큰 테이블에서는 통계적 무작위 샘플링을 사용하기 때문입니다. 모든 단일 행을 읽는 대신 테이블의 행을 읽습니다. 그래서 아마도 전체에 걸쳐 실행하는 것이 훨씬 간단할 것입니다. 데이터베이스를 자주 사용하세요.
팁:열별로 조정했지만분석빈도는 그다지 생산적이지 않을 수 있습니다. 열별로 조정하는 것이 좋습니다. 수집된 통계의 세부 수준분석. 비중이 높은 컬럼 WHERE 절에 사용되며 매우 불규칙한 데이터를 가지고 있습니다. 분포에는 보다 세밀한 데이터 히스토그램이 필요할 수 있습니다. 다른 열. 참조테이블 설정 변경 통계.
대부분의 사이트에서 권장되는 방법은 데이터베이스 전체분석하루에 한 번 하루 중 사용량이 적은 시간; 이는 다음과 유용하게 결합될 수 있습니다. 매일 밤토토 꽁 머니. 그러나 다음과 같은 사이트는 상대적으로 느리게 변화하는 테이블 통계는 다음과 같은 사실을 알 수 있습니다. 과잉이며 빈도가 낮습니다.분석실행이면 충분합니다.
포스트그레SQL의 MVCC 트랜잭션 의미론은 비교 능력에 달려 있습니다. 거래 ID(XID) 숫자: 튜플 현재 트랜잭션의 XID보다 새로운 삽입 XID를 사용합니다. 이다"미래에"그러면 안 됩니다. 현재 거래에 표시됩니다. 하지만 거래 ID 이후 설치 크기가 제한되어 있습니다(이 글을 쓰는 시점에서는 32비트). 오랫동안 실행되는 (40억건 이상의 거래) 고통받을 것이다거래 ID 랩어라운드: XID 카운터가 0으로 돌아가고 갑자기 과거에 있었던 거래가 미래에 있는 것처럼 보인다 --- 이는 출력이 보이지 않게 됨을 의미합니다. 즉, 치명적인 데이터 손실. (사실 데이터는 아직 남아있습니다만, 당신이 그것을 얻을 수 없다면 그것은 차갑고 편안함입니다.)
이전포스트그레SQL7.2, XID 랩어라운드에 대한 유일한 방어는 다시-initdb최소 40억 건의 거래마다. 물론 이것은 트래픽이 많은 환경에서는 그다지 만족스럽지 않았습니다. 더 나은 솔루션이 고안되었습니다. 새로운 접근 방식 없이 설치를 무기한으로 유지할 수 있습니다.initdb또는 모든 종류의 재시작. 가격 이 유지 관리 요구 사항은 무엇입니까?데이터베이스의 모든 테이블은 다음과 같아야 합니다. 10억 건의 거래마다 최소 한 번씩 토토 꽁 머니 처리됨.
실제로 이는 부담스러운 요구사항은 아니지만, 이를 충족하지 못하면 완전한 데이터 손실이 발생할 수 있습니다. (디스크 공간 낭비나 성능 저하뿐만 아니라), 일부 특별한 데이터베이스 관리자가 마지막 이후 시간 추적토토 꽁 머니. 이 섹션의 나머지 부분에서 세부정보를 제공합니다.
XID 비교에 대한 새로운 접근 방식은 두 가지 특별한 차이점을 구별합니다. XID, 숫자 1 및 2(부트스트랩XID그리고FrozenXID). 이 두 XID는 항상 모든 일반 XID보다 오래된 것으로 간주됩니다. 일반 XID (2보다 큰 것)은 modulo-2를 사용하여 비교됩니다.31산술. 이는 모든 일반 XID에 대해 두 개의 XID가 있음을 의미합니다. 10억 개의 XID입니다."나이가 많은"그리고 20억이군요"최신"; 다르게 말하면 일반 XID 공간은 원형이라는 것입니다. 끝점이 없습니다. 따라서 일단 튜플이 생성되면 특정 일반 XID인 경우 튜플은 다음과 같이 나타납니다."과거에"다음 2개를 위해 10억 개의 거래, 우리가 말하는 일반 XID에 관계없이 약. 20억이 넘은 후에도 튜플이 여전히 존재하는 경우 거래가 갑자기 미래에 있는 것처럼 보일 것입니다. 받는 사람 데이터 손실을 방지하려면 이전 튜플에 XID를 다시 할당해야 합니다.FrozenXID그들이 도달하기 전에 언젠가 20억 건의 거래가 이루어진 기록입니다. 일단 할당되면 이 특별한 XID는 다음과 같습니다."과거에"모든 일반 거래에 랩어라운드 문제에 관계없이 그러한 튜플은 삭제되기 전까지는 유효합니다. 기간에 관계없이 삭제됩니다. 이 XID 재할당은 다음에서 처리됩니다.토토 꽁 머니.
토토 꽁 머니의 일반적인 정책은 재할당입니다.FrozenXID일반 튜플에 과거에 10억 개가 넘는 거래를 XID합니다. 이 정책 가능성이 없을 때까지 원래 삽입 XID를 유지합니다. 더 이상 관심을 끌 수 있습니다(사실 대부분의 튜플은 아마도 그리고 존재하지도 못한 채 죽는다"냉동"). 이 정책을 통해 최대 안전 간격토토 꽁 머니22124_22502
주기적 이후토토 꽁 머니이 필요합니다 어쨌든 앞에서 설명한 이유로 인해 그럴 가능성은 거의 없습니다. 어떤 테이블도 10억 동안 토토 꽁 머니 청소되지 않을 것입니다. 거래. 하지만 관리자가 이러한 제약을 보장할 수 있도록 돕기 위해 충족되었습니다.토토 꽁 머니트랜잭션 ID를 저장합니다 시스템 테이블의 통계pg_database. 특히,datfrozenxid데이터베이스의 필드pg_database행은 완료 시 업데이트됩니다. 데이터베이스 전체의 토토 꽁 머니 작업(즉,토토 꽁 머니특정 테이블의 이름을 지정하지 않음). 는 이 필드에 저장된 값은 동결 컷오프 XID입니다. 그것에 의해 사용됨토토 꽁 머니명령. 모두 정상 이 컷오프 XID보다 오래된 XID는 보장됩니다. 다음으로 대체됨FrozenXID그 안에 데이터베이스. 이 정보를 조사하는 편리한 방법은 다음과 같습니다. 쿼리를 실행합니다
그나이열은 다음을 측정합니다. 컷오프 XID부터 현재까지의 트랜잭션 수 거래의 XID.표준 동결 정책에 따르면,나이열은 10억부터 시작됩니다. 새로 비워진 데이터베이스. 때나이20억에 가까워지면 데이터베이스는 다음과 같아야 합니다. 랩어라운드 실패의 위험을 피하기 위해 다시 토토 꽁 머니 청소기로 청소합니다. 권장되는 방법은 각 데이터베이스를 한 번 이상 정리하는 것입니다. 5억(5억) 건의 거래마다 충분한 안전 마진을 제공하십시오. 이 규칙을 충족하기 위해 각 데이터베이스 전체토토 꽁 머니자동으로 있는 경우 경고를 전달합니다.pg_database다음을 표시하는 항목나이15억 건 이상의 거래 중, 예:
play=# 토토 꽁 머니;
주의 사항: 일부 데이터베이스는 1613770184 트랜잭션에서 정리되지 않았습니다.
533713463 거래 내에서 토토 꽁 머니 청소기로 청소하는 것이 좋습니다.
또는 랩어라운드 오류가 발생할 수 있습니다.
토토 꽁 머니
토토 꽁 머니와 함께정지옵션은 보다 공격적인 동결을 사용합니다. 정책: 튜플은 충분히 오래되면 동결됩니다. 모든 공개 거래에서 좋은 것으로 간주됩니다. 특히 만약에 a토토 꽁 머니 동결다음에서 수행됩니다. 그렇지 않으면 유휴 데이터베이스인 경우 다음이 보장됩니다.모두해당 데이터베이스의 튜플은 얼어붙다. 따라서 데이터베이스가 수정되지 않는 한 어쨌든, 이를 피하기 위해 후속 토토 꽁 머니 청소가 필요하지 않습니다. 거래 ID 랩어라운드 문제. 이 기술은 다음에서 사용됩니다.initdb준비하기 위해템플릿0데이터베이스. 또한 다음과 같은 용도로 사용되어야 합니다. 표시할 사용자 생성 데이터베이스를 준비합니다.dataallowconn = 거짓에pg_database, 왜냐하면 데이터베이스를 비우기 위한 편리한 방법이 없기 때문입니다. 연결할 수 없습니다. 참고하세요토토 꽁 머니의 토토 꽁 머니화되지 않은 데이터베이스에 대한 자동 경고 메시지는 무시pg_database다음을 포함한 항목dataallowconn = 거짓, 잘못된 경고를 피하기 위해 이러한 데이터베이스에 대해 따라서 이를 보장하는 것은 귀하에게 달려 있습니다 이러한 데이터베이스는 올바르게 고정되어 있습니다.