PostgreSQL's토토 꽁 머니명령은 정기적으로 실행해야합니다 몇 가지 이유 :
업데이트되거나 삭제 된 디스크 공간을 복구하려면 줄.
|PostgreSQL쿼리 플래너.
|트랜잭션 ID 랩 어라운드.
의 주파수와 범위토토 꽁 머니s 이러한 각 이유에 대해 수행 된 각 설치의 요구. 따라서 데이터베이스 관리자 이러한 문제를 이해하고 적절한 것을 개발해야합니다 유지 보수 전략. 이 섹션은 설명에 중점을 둡니다 높은 수준의 문제; 명령 구문 등에 대한 자세한 내용은 참조토토 꽁 머니명령 참조 페이지.
시작PostgreSQL7.2, 표준 형태의토토 꽁 머니일반 데이터베이스 작업 (SELECTS, Inserts, 업데이트, 삭제이지만 테이블 스키마의 변경되지는 않습니다). 루틴 따라서 토토 꽁 머니 청소기는 이전과 마찬가지로 거의 방해가되지 않습니다. 출시되며 일정을 잡는 것이 중요하지 않습니다. 낮은 날 시간.
정상PostgreSQL작동, an업데이트또는삭제의 행은 즉시 제거하지 않습니다 오래된튜플(행의 버전). 이것 다중 요소의 이점을 얻으려면 접근이 필요합니다 동시성 제어 (참조사용자 가이드) : 튜플은 여전히 삭제되지 않아야합니다. 다른 거래에 잠재적으로 볼 수 있습니다. 그러나 결국, an 구식 또는 삭제 된 튜플 거래. 재사용을 위해 차지 해야하는 공간은 재사용해야합니다 새로운 튜플로 디스크 공간의 무한한 성장을 피하기 위해 요구 사항. 이것은 실행하여 이루어집니다토토 꽁 머니.
명확하게, 자주 업데이트 또는 삭제를받는 테이블 거의없는 테이블보다 더 자주 토토 꽁 머니 청소기를 청소해야합니다. 업데이트. 정기적 인 설정에 유용 할 수 있습니다Cron토토 꽁 머니 청소기 만 선택한 작업 테이블, 자주 바뀌지 않는 것으로 알려진 테이블을 건너 뛰는 테이블. 둘 다 큰 경우에만 도움이 될 것입니다. 무겁게 업데이트 된 테이블과 큰 드물게 업데이트 된 테이블 --- 작은 테이블을 토토 꽁 머니 청소기에 청소하는 데 드는 추가 비용은 가치가 없습니다. 걱정.
표준 형태토토 꽁 머니최고입니다 상당한 수준의 정상 상태를 유지한다는 목표와 함께 사용 디스크 공간 사용. 표준 형태는 오래된 튜플을 찾습니다 테이블 내에서 재사용 할 수있는 공간을 사용할 수 있지만 테이블 파일을 단축하고 반환하기 위해 매우 열심히 노력하지 않습니다. 운영 체제에 대한 디스크 공간. 디스크를 반환 해야하는 경우 사용할 수있는 운영 체제의 공간토토 꽁 머니 Full--- 그러나 릴리스의 요점은 무엇입니까? 곧 다시 할당 해야하는 디스크 공간? 적당히 빈번한 표준토토 꽁 머니s입니다 드물게 더 나은 접근토토 꽁 머니 가득한심하게 업데이트 된 테이블을 유지하기위한 것입니다.
대부분의 사이트에 대한 권장 실습은 예약입니다 데이터베이스 전체토토 꽁 머니하루에 한 번 a 낮은 사용 시간은 더 자주 토토 꽁 머니 청소기로 보충됩니다 필요한 경우 무겁게 업데이트 된 테이블. (여러 사람이있는 경우 설치의 데이터베이스는 각각 토토 꽁 머니 청소기를 청소하는 것을 잊지 마십시오. 그만큼VACUUMDB스크립트가 도움이 될 수 있습니다.) 평원 사용토토 꽁 머니, 아님토토 꽁 머니 Full, 공간에 대한 일상적인 토토 꽁 머니 청소기 회복.
토토 꽁 머니 Full사례에 권장됩니다 당신이 아는 곳에서 대부분의 튜플을 삭제했습니다. 테이블의 정상 상태 크기가 줄어들 수 있도록 테이블 실질적으로토토 꽁 머니 Full더 공격적인 접근.
내용물이 완전히 삭제되는 테이블이있는 경우 너무 자주,Truncate사용하는 대신삭제그 뒤에토토 꽁 머니.
thePostgreSQL쿼리 플래너는 내용에 대한 통계 정보에 의존합니다 쿼리에 대한 좋은 계획을 생성하기 위해 테이블. 이것들 통계는에 의해 수집됩니다.분석명령, 자체적으로 또는 선택적 단계로 호출 할 수 있습니다. 안에토토 꽁 머니. 가지고있는 것이 중요합니다 합리적으로 정확한 통계, 그렇지 않으면 계획 선택이 열악합니다 데이터베이스 성능 저하를 저하시킬 수 있습니다.
공간 복구를위한 토토 꽁 머니 청소기와 마찬가지로 빈번한 업데이트 통계는 업데이트 된 테이블보다 더 유용합니다 거의 업데이트 된 것들. 그러나 심하게 업데이트 된 테이블의 경우에도 통계적 인 경우 통계 업데이트가 필요하지 않을 수 있습니다. 데이터 분포는 크게 변하지 않습니다. 간단한 규칙 엄지는 최소 및 최대 값에 대해 생각하는 것입니다. 테이블의 열이 변경됩니다. 예를 들어, A타임 스탬프행의 시간이 포함 된 열 업데이트는 최대 최대 값이 행으로 지속적으로 증가합니다 추가 및 업데이트됩니다. 그러한 칼럼은 아마도 더 필요할 것입니다 URL이 포함 된 열보다 빈번한 통계가 업데이트됩니다 웹 사이트에서 액세스 한 페이지의 경우. URL 열이 수신 될 수 있습니다 마찬가지로 자주 변경되지만 통계적 분포 값은 아마도 비교적 느리게 변할 것입니다.
실행할 수 있습니다분석on 특정 테이블 및 테이블의 특정 열만 있으므로 일부 통계를 더 업데이트하기 위해 유연성이 존재합니다 응용 프로그램에 필요한 경우 다른 사람보다 자주 다른 사람보다 자주. ~ 안에 그러나 연습을하면이 기능의 유용성은 의심 스럽다. 시작PostgreSQL 7.2, 분석는 상당히 빠른 작업입니다 큰 테이블에서 통계 랜덤 샘플링을 사용하기 때문에 모든 단일 행을 읽지 않고 테이블 행의 행. 그래서 전체적으로 실행하는 것이 훨씬 간단 할 것입니다. 자주 데이터베이스.
팁 :콜럼 당 조정이지만분석주파수는 생산적이지 않을 수 있습니다. 당신은 당신은 컬럼 당 조정을하는 것이 가치가 있다는 것을 알 수 있습니다. 에 의해 수집 된 통계의 세부 수준분석. 무거운 열 조항이있는 곳에서 사용되며 불규칙한 데이터가 있습니다 분포는보다 미세한 곡물 데이터 히스토그램이 필요할 수 있습니다 다른 열. 보다ALTER 테이블 세트 통계.
대부분의 사이트에 대한 권장 실습은 예약입니다 데이터베이스 전체분석하루에 한 번 a 낮은 시간의 시간; 이것은 유용하게 결합 될 수 있습니다 야간토토 꽁 머니. 그러나 사이트와 함께 비교적 느리게 변화하는 테이블 통계는이를 발견 할 수 있습니다 과잉이며 덜 주파수분석달리기가 충분합니다.
PostgreSQL'S MVCC 거래 시맨틱은 비교할 수있는 것에 달려 있습니다 트랜잭션 ID (xid) 숫자 : 튜플 현재 트랜잭션의 XID보다 새로 삽입 XID를 사용하여 이다"미래의"현재 거래에 표시됩니다. 그러나 트랜잭션 ID 이후 크기가 제한되어 있습니다 (이 글에서 32 비트) 설치 그것은 오랫동안 실행됩니다 (40 억 이상의 거래) 고통받을트랜잭션 ID 랩 어라운드: XID 카운터는 0으로 감싸고 갑자기 과거에 있었던 거래는 미래에있는 것으로 보입니다. --- 즉, 출력이 보이지 않게됩니다. 요컨대, 치명적인 데이터 손실. (실제로 데이터는 여전히 존재하지만 당신이 그것을 얻을 수 없다면 그것은 차갑습니다.)
이전PostgreSQL7.2, XID 랩 어라운드에 대한 유일한 방어는 re였습니다.initdb적어도 40 억 건의 거래. 물론 이것은 교통량이 많은 것에 대해 만족스럽지 않았습니다 사이트이므로 더 나은 솔루션이 고안되었습니다. 새로운 접근법 설치가 무기한 상태로 유지 될 수 있습니다.initdb또는 모든 종류의 재시작. 가격 이 유지 보수 요구 사항은 다음과 같습니다.데이터베이스의 모든 테이블은 있어야합니다 적어도 10 억 건의 거래마다 토토 꽁 머니 청소기.
실제로 이것은 번거로운 요구 사항이 아니지만 충족에 실패한 결과 완전한 데이터 손실이 될 수 있습니다. (낭비 된 디스크 공간이나 느린 성능이 아니라), 일부 특별 데이터베이스 관리자가 유지하는 데 도움이되는 조항이 이루어졌습니다 마지막 이후의 시간 추적토토 꽁 머니. 이 섹션의 나머지 부분은 세부 사항을 제공합니다.
XID 비교에 대한 새로운 접근법은 두 가지 특별한 것을 구별합니다 xids, 숫자 1 및 2 (bootstrapxidandfrozenxid). 이 두 xid는입니다 항상 모든 정상 XID보다 오래된 것으로 간주됩니다. 정상적인 xids (2보다 큰 것) Modulo-2를 사용하여 비교됩니다31산술. 이것은 모든 정상 XID에 대해 두 가지가 있음을 의미합니다. 10 억 xids"구형"및 20 억"최신"; 말하는 또 다른 방법은 일반 XID 공간이 원형이라는 것입니다. 엔드 포인트가 없습니다. 따라서 일단 튜플이 만들어졌습니다 특정 정상적인 xid, 튜플은"과거"다음 두 가지 우리가 말하는 일반적인 xid에 상관없이 10 억 트랜잭션 에 대한. 튜플이 20 억 이상 이후에도 존재한다면 거래는 갑자기 미래에있는 것처럼 보일 것입니다. 에게 데이터 손실 방지, 오래된 튜플이 XID를 재 할당해야합니다frozenxid그들이 도달하기 전에 언젠가 20 억 트랜잭션 오래된 마크. 일단 그들이 할당되면 이 특별한 xid, 그들은"과거"모든 정상 거래 랩 어라운드 문제에 관계없이 그러한 튜플은 아무리 길든 삭제 될 때까지 좋습니다. 이것 XID의 재 할당은에 의해 처리됩니다.토토 꽁 머니.
토토 꽁 머니의 정상 정책은 재 할당하는 것입니다frozenxid정상적인 튜플 과거에 10 억 명 이상의 거래. 이 정책 원래 삽입 XID가 가능하지 않을 때까지 보존합니다. 더 이상 관심이 있습니다 (실제로 대부분의 튜플은 아마도 살 것입니다 그리고 그대로 죽지 않고 죽어라"Frozen"). 이 정책을 사용하면 최대 금고입니다 간격토토 꽁 머니어떤 테이블이든 정확히 10 억 건의 거래 : 더 오래 기다리면 그것은입니다 충분히 나이가 들지 않은 튜플이 지난번에 재 할당 된 것은 이제 20 억 명이 넘는 거래입니다. 오래되고 미래에 싸여 있습니다 --- 즉 너. (물론, 20 억 명의 후에 다시 나타날 것입니다 거래이지만 도움이되지 않습니다.)
정기 이후토토 꽁 머니s가 필요합니다 어쨌든 앞에서 설명한 이유 때문에 그럴 가능성은 거의 없습니다 모든 테이블은 10 억 명 정도 오랫동안 토토 꽁 머니 청소기를 청소하지 않습니다. 업무. 그러나 관리자가 이러한 제약을 보장 할 수 있도록 도와줍니다 만났다,토토 꽁 머니저장 거래 ID 시스템 테이블의 통계pg_database. 특히datfrozenxid데이터베이스 필드pg_databaseROW가 완료되면 업데이트됩니다 모든 데이터베이스 전체 토토 꽁 머니 작업 (예 :토토 꽁 머니특정 테이블의 이름을 지정하지 않음). 그만큼 이 필드에 저장된 가치는 Freeze Cutoff XID입니다. 그것에 의해 사용토토 꽁 머니명령. 모든 정상 이 컷오프 xid보다 오래된 xid는 대체frozenxid그 안에 데이터 베이스. 이 정보를 조사하는 편리한 방법은 다음과 같습니다 쿼리 실행
theage열 측정 컷오프 XID에서 현재로의 트랜잭션 수 거래의 xid.표준 동결 정책을 사용하여Age열은 10 억에서 시작됩니다 신선하게 바신 데이터베이스. 때AGE20 억에 접근하면 데이터베이스가 있어야합니다 랩 어라운드 실패의 위험을 피하기 위해 다시 토토 꽁 머니 청소기. 권장 관행은 각 데이터베이스를 최소 한 번은 토토 꽁 머니 청소기입니다 마다 5 억 (5 억)의 거래 안전 마진을 충분히 제공하십시오. 이 규칙을 충족시키기 위해 각각 데이터베이스 전체토토 꽁 머니자동으로 어떤 경우 경고를 전달합니다pg_databaseage예:
play =# 토토 꽁 머니; 주목 : 일부 데이터베이스는 1613770184 거래에서 청소되지 않았습니다. 533713463 트랜잭션 내에서 더 나은 토토 꽁 머니 청소기, 또는 랩 어라운드 실패가있을 수 있습니다. 토토 꽁 머니
토토 꽁 머니withFreeze옵션은보다 공격적인 동결을 사용합니다 정책 : 튜플이 충분히 나이가 들면 얼어 붙습니다. 모든 공개 거래에서 좋은 것으로 간주됩니다. 특히, a토토 꽁 머니 동결에서 수행됩니다 그렇지 않으면 단일 데이터베이스, 보장됩니다.all해당 데이터베이스의 튜플 얼어 붙어야합니다. 따라서 데이터베이스가 수정되지 않는 한 어쨌든 피하기 위해 후속 토토 꽁 머니 청소기가 필요하지 않습니다. 트랜잭션 ID 랩 어라운드 문제. 이 기술은에 의해 사용됩니다.initdb준비하려면Template0데이터베이스. 또한 익숙해 져야합니다 표시 할 사용자가 만든 데이터베이스 준비datallowconn=거짓inpg_database, 데이터베이스를 청소하는 편리한 방법이 없기 때문에 연결할 수 없습니다. 참고토토 꽁 머니's 비 바 검사 데이터베이스에 대한 자동 경고 메시지는 할 것입니다 무시하다pg_database출품작datallowconn=false, 허위 경고를 피하기 위해 이 데이터베이스에 대해; 그러므로 그것을 보장하는 것은 당신에게 달려 있습니다 이러한 데이터베이스는 올바르게 동결됩니다.