PostgreSQL'sPostgreSQL : 문서 : 8.3 : 토토 사이트명령은 정기적으로 실행해야합니다 몇 가지 이유의 기초 :
업데이트 된 디스크 공간을 복구하거나 재사용하려면 삭제 된 행.
postgresql쿼리 플래너.
|트랜잭션 ID 랩 어라운드.
표준 형태스포츠 토토실행할 수 있습니다 생산 스포츠 토토베이스 작업과 병행하여. 와 같은 명령select, 삽입, 업데이트및삭제는 계속 정상적으로 작동합니다 테이블의 정의를 수정할 수 없습니다. 와 같은 명령ALTER 테이블 추가 열스포츠 토토 청소기 중. 또한,스포츠 토토상당한 양의 I/O 트래픽이 필요하므로 다른 활성 세션의 성능 저하. 거기 있습니다 구성 매개 변수를 줄이기 위해 조정할 수 있습니다 배경 스포츠 토토 청소기의 성능 영향 - 참조섹션 18.4.4.
다행스럽게도Auto-Vacuum 데몬테이블 활동을 모니터링하고 수행스포츠 토토필요한 경우. Autovacuum은 작동합니다 동적으로 따라서 종종 투여 예약이 더 나은 경우가 많습니다 스포츠 토토 청소기.
정상PostgreSQL작동, an업데이트또는삭제의 행은 즉시 제거하지 않습니다 행의 오래된 버전. 이 접근법은 Multiversion 동시성 제어의 이점 (참조13 장) : 행 버전은 아니어야합니다 여전히 다른 사람에게는 잠재적으로 볼 수있는 동안 삭제됩니다 업무. 그러나 결국 구식 또는 삭제 된 행입니다 버전은 더 이상 거래에 관심이 없습니다. 공간 차를 피하기 위해 새로운 행으로 재사용하기 위해 점유해야합니다. 디스크 공간 요구 사항의 무한한 성장. 이것은 이에 의해 수행됩니다 달리기스포츠 토토.
두 가지 변형이 있습니다스포츠 토토명령. 로 알려진 첫 번째 형태"게으른 스포츠 토토"또는 Just스포츠 토토, 테이블 및 인덱스에 죽은 스포츠 토토를 표시합니다 미래의 재사용을 위해;not공간을 되 찾으려고 시도합니다 공간이 끝나지 않는 한이 죽은 데이터에 의해 사용 테이블 및 독점 테이블 잠금을 쉽게 얻을 수 있습니다. 파일의 시작 또는 중간에 사용되지 않은 공간이 발생하지 않습니다. 파일이 단축되고 공간이 작동으로 돌아 왔습니다. 체계. 이 변형스포츠 토토할 수 있습니다 일반 스포츠 토토베이스 작업과 동시에 실행하십시오.
두 번째 양식은입니다.스포츠 토토 Full명령. 이것은 재생하기 위해보다 공격적인 알고리즘을 사용합니다 Dead Row 버전으로 소비되는 공간. 모든 공간 해방스포츠 토토 Full즉시입니다 운영 체제로 반환되었으며 테이블 스포츠 토토는 디스크에 물리적으로 압축. 불행히도,이 변형 의스포츠 토토명령을 얻습니다 각 테이블의 독점 잠금스포츠 토토 가득한처리 중입니다. 따라서 자주 사용스포츠 토토 Full극도로 가질 수 있습니다 동시 스포츠 토토베이스의 성능에 대한 부정적인 영향 쿼리.
다행스럽게도Auto-Vacuum 데몬테이블 활동을 모니터링하고 수행스포츠 토토필요한 경우. 이것은 필요를 제거합니다 관리자가 디스크 공간 복구에 대해 걱정할 수 있도록 그러나 가장 특이한 경우.
통제하려는 관리자스포츠 토토자체, 표준 형태스포츠 토토a 디스크 공간의 정상 사용. 디스크를 반환 해야하는 경우 운영 체제의 공간, 사용할 수 있습니다스포츠 토토 Full, 그러나 테이블이라면 이것은 현명하지 않습니다 앞으로 다시 성장할 것입니다. 적당히 주입합니다 기준스포츠 토토실행이 더 좋습니다 드물게 접근스포츠 토토 Full심하게 업데이트 된 테이블을 유지하기 위해 실행됩니다. 그러나 일부 경우 무겁게 업데이트 된 테이블이 드물게 너무 오래 진행되었습니다스포츠 토토, 당신은 사용할 수 있습니다스포츠 토토 Full또는클러스터성능을 되 찾으려면 (테이블을 스캔하는 것이 훨씬 느립니다. 거의 죽은 줄만 포함).
15473_15555스포츠 토토하루에 한 번 저조 기간 동안 더 자주 보충됩니다 필요한 경우 무거운 업데이트 된 테이블의 스포츠 토토 청소기. (일부 매우 높은 업데이트 속도를 가진 설치는 스포츠 토토 청소기 스포츠 토토 청소기입니다 몇 분마다 가장 바쁜 테이블.) 클러스터의 여러 데이터베이스, 잊지 마십시오스포츠 토토각각; 프로그램VACUUMDB도움이 될 수 있습니다.
스포츠 토토 Full권장됩니다 당신이 당신이 당신이 테이블의 정상 상태 크기가 줄어들 수 있도록 테이블 실질적으로스포츠 토토 Full더 공격적인 접근. 평원 사용스포츠 토토, 아니다스포츠 토토 Full, 일상적인 스포츠 토토 청소기 우주 복구를 위해.
전체 내용물이 정기적 인 기준,로하는 것을 고려하십시오.Truncate사용하지 않고삭제이후스포츠 토토. Truncate표의 전체 내용을 즉시 제거합니다 후속 요구스포츠 토토또는스포츠 토토 Full현재 금지 된 사람을 되 찾으려면 디스크 공간.
thePostgreSQL쿼리 플래너는 내용에 대한 통계 정보에 의존합니다 쿼리에 대한 좋은 계획을 생성하기 위해 테이블. 이것들 통계는에 의해 수집됩니다.분석명령 그 자체 또는 선택적 단계스포츠 토토. 합리적으로하는 것이 중요합니다 정확한 통계, 그렇지 않으면 계획 선택이 열악 할 수도 있습니다 스포츠 토토베이스 성능 저하.
공간 복구를위한 스포츠 토토 청소기와 마찬가지로 빈번한 업데이트 통계는 업데이트 된 테이블보다 더 유용합니다 거의 업데이트 된 것들. 그러나 심하게 업데이트 된 테이블의 경우에도 통계 업데이트가 필요하지 않을 수 있습니다. 데이터의 통계 분포는 크게 변하지 않습니다. 에이 간단한 규칙은 최소값과 테이블에서 열의 최대 값이 변경됩니다. 예를 들어, 에이타임 스탬프시간이 포함 된 열 행 업데이트의 최대 값은 지속적으로 증가합니다 행이 추가되고 업데이트됨에 따라; 그러한 칼럼은 아마도 필요할 것입니다 더 빈번한 통계가 포함 된 열보다 업데이트됩니다 웹 사이트에서 액세스 한 페이지의 URL. URL 열이있을 수 있습니다 변경 사항을 자주 받지만 통계 분포를받습니다 그 가치는 아마도 비교적 느리게 변할 것입니다.
실행할 수 있습니다분석on 특정 테이블 및 테이블의 특정 열만 있으므로 일부 통계를 더 업데이트하기 위해 유연성이 존재합니다 응용 프로그램에 필요한 경우 다른 사람보다 자주 다른 사람보다 자주. ~ 안에 그러나 연습은 일반적으로 분석하는 것이 가장 좋습니다. 빠른 작업이기 때문에 전체 데이터베이스. a 테이블 행의 통계 랜덤 샘플링이 아닙니다. 모든 줄 읽기.
팁 :콜럼 당 조정이지만Analyze주파수는 그리되지 않을 수 있습니다 생산적, 당신은 할 가치가 있다는 것을 알 수 있습니다 세부의 세부 수준의 컬럼 당 조정 에 의해 수집 된 통계Analyze. 크게 사용되는 열여기서조항은 불규칙한 스포츠 토토를 가지고 있습니다 분포에는 더 미세한 스포츠 토토 히스토그램이 필요할 수 있습니다 다른 열보다. 보다ALTER 테이블 세트 통계.
다행스럽게도Auto-Vacuum 데몬테이블 활동을 모니터링하고 수행분석필요한 경우. 이것은 그것을 제거합니다 관리자가 수동으로 예약해야 할 필요Analyze.
autovacuum을 사용하지 않는 사람들의 경우 한 가지 방법은 일정을 잡는 것입니다. 스포츠 토토베이스 전체분석하루에 한 번 낮은 시간의 시간; 이것은 유용하게 결합 될 수 있습니다 야간스포츠 토토. 그러나 사이트와 함께 비교적 느리게 변화하는 테이블 통계는이를 발견 할 수 있습니다 이것은 과잉이며 덜 주파수분석달리기가 충분합니다.
PostgreSQL'S MVCC 거래 시맨틱은 비교할 수있는 것에 달려 있습니다 트랜잭션 ID (xid) 숫자 : 삽입 xid가 현재 트랜잭션의 XID는"에서 미래"전류에 보이지 않아야합니다 거래. 그러나 트랜잭션 ID는 크기가 제한되어 있기 때문에 (32 이 글을 쓰는 데 비트) 오랫동안 실행되는 클러스터 (더보기 40 억 대의 거래)가 어려움을 겪을 것입니다트랜잭션 ID 랩 어라운드: XID 카운터 주위를 0으로 감싸고 갑자기 갑자기 거래 과거에 미래에있는 것처럼 보였습니다. 이는 출력은 보이지 않습니다. 요컨대, 치명적인 데이터 손실. (실제로 데이터는 여전히 존재하지만 냉담한 편안함입니다. 당신은 그것을 얻을 수 없습니다.) 이것을 피하려면 스포츠 토토 청소기가 필요합니다. 모든 데이터베이스의 모든 테이블은 최소한 20 억마다 한 번 업무.
주기적 스포츠 토토 청소기가 문제를 해결하는 이유 저것PostgreSQL구별 특별한 xidfrozenxid. 이 xid입니다 항상 모든 정상 XID보다 오래된 것으로 간주됩니다. 정상적인 xids입니다 Modulo-2 사용 비교31산술. 이것은 의미합니다 정상적인 xid마다 20 억 개의 XID가 있습니다."구형""최신"; 또 다른 방법입니다 정상적인 XID 공간은 엔드 포인트가없는 원형입니다. 따라서 일단 행 버전이 생성되면 특정 일반 XID, 행 버전이로 보입니다."과거"다음 두 가지 우리가 말하는 일반적인 xid에 상관없이 10 억 트랜잭션 에 대한. 행 버전이 2 개 이상 이후에도 존재하는 경우 10 억 건의 거래, 갑자기 미래. 데이터 손실을 방지하려면 오래된 행 버전이 있어야합니다 XID를 재 할당frozenxid언젠가 그들이 20 억 트랜잭션에 도달하기 전에. 한 번 그들은이 특별한 xid로 할당되며"과거"모든 정상 랩 어라운드 문제 및 그러한 행에 관계없이 거래 아무리 오래 삭제 될 때까지 버전이 좋을 것입니다. 이다. 오래된 XIDS 의이 재 할당은에 의해 처리됩니다.스포츠 토토.
스포츠 토토의 동작은 통제됩니다 구성 매개 변수VACUUM_FREEZE_MIN_AGE: 나이가 많은 xidVACUUM_FREEZE_MIN_AGE트랜잭션이 대체됩니다 에 의해frozenxid. 더 큰 값VACUUM_FREEZE_MIN_AGE보존 트랜잭션 정보는 더 길고 작은 값은 증가합니다 테이블 전에 경과 할 수있는 거래 수 다시 스포츠 토토 청소기를 청소해야합니다.
테이블이 바이러스되지 않은 최대 시간은 2입니다. 10 억 거래 뺀VACUUM_FREEZE_MIN_AGE그럴 때 사용되었습니다 마지막으로 스포츠 토토 청소기. 만약 그것이 바로 오랫동안 바로 가면서 즉, 데이터 손실이 발생할 수 있습니다. 이것이 그렇지 않은지 확인합니다 일어나다,Auto-Vacuum 데몬구성 매개 변수로 지정된 연령autovacuum_freeze_max_age. (이것은 Autovacuum이 그렇지 않으면 발생합니다 장애가 있는.)
이것은 테이블이 스포츠 토토 청소기가 아닌 경우, Autovacuum은 약 1 회마다 호출됩니다autovacuum_freeze_max_age마이너스VACUUM_FREEZE_MIN_AGE거래. 우주 교정을 위해 정기적으로 스포츠 토토 청소기의 테이블 목적은 거의 중요하지 않습니다. 그러나 정적 인 경우 테이블 (인서트를받는 테이블 포함이지만 업데이트는 없습니다 또는 삭제), 우주에 대한 스포츠 토토 청소기가 필요하지 않습니다. 교정, 따라서 최대화를 시도하는 것이 유용 할 수 있습니다. 매우 큰 정적에서 강제 autovacuum 사이의 간격 테이블. 분명히 하나는 증가함으로써 이것을 할 수 있습니다autovacuum_freeze_max_age또는 BY 감소VACUUM_FREEZE_MIN_AGE.
증가하는 유일한 단점autovacuum_freeze_max_agePG_CLOG데이터베이스 클러스터의 하위 디렉토리 커밋 상태를 저장해야하기 때문에 더 많은 공간을 차지합니다. 모든 거래에 대해autovacuum_freeze_max_ageHorizon. 커밋 상태는 거래 당 두 비트를 사용하므로 ifautovacuum_freeze_max_age최대 값이 있습니다 허용 된 가치 20 억,PG_CLOG약 절반의 기가 바이트로 자랄 수 있습니다. 이것이 있다면 총 스포츠 토토베이스 크기에 비해 사소한 설정autovacuum_freeze_max_age최대 허용 값이 권장됩니다. 그렇지 않으면 설정하십시오 당신이 기꺼이 허용하는 것에 따라PG_CLOG스토리지. (기본값, 2 억 거래는 약 50MB의로 변환됩니다.PG_CLOG스토리지.)
감소의 한 가지 단점VACUUM_FREEZE_MIN_AGE원인이 될 수 있다는 것입니다스포츠 토토쓸모없는 작업을 수행하려면 : a 테이블 행의 xid tofrozenxidis 그 후 곧 행이 수정 된 경우 시간 낭비 (원인 새로운 XID를 획득하기 위해). 따라서 설정은 충분히 커야합니다 그 행은 변경할 가능성이 없을 때까지 동결되지 않습니다. 더. 이 설정을 줄이는 또 다른 단점은 그 것입니다 정확히 삽입 또는 수정 된 트랜잭션에 대한 세부 사항 a 행은 더 빨리 손실됩니다. 이 정보는 때때로 들어옵니다 특히 무엇이 잘못되었는지 분석하려고 할 때 편리합니다 데이터베이스 실패 후. 이 두 가지 이유로 감소합니다 이 설정은 완전히 정적을 제외하고는 권장되지 않습니다 테이블.
스포츠 토토베이스에서 가장 오래된 XID의 나이를 추적하려면스포츠 토토XID 통계를 저장합니다 시스템 테이블pg_classandPG_DATABASE. 특히relfrozenxid테이블의 열pg_class행에는 동결이 포함되어 있습니다 마지막으로 사용한 컷오프 XID스포츠 토토해당 테이블의 경우. 모든 정상 XID가 오래되었습니다 이 컷오프보다 xid가 대체 된 것보다frozenxid테이블 내. 비슷하게, 그만큼datfrozenxida 스포츠 토토베이스pg_database행은 a 해당 스포츠 토토베이스에 나타나는 일반 XID의 하한 - IT 테이블 당 최소입니다relfrozenxid데이터베이스 내의 값. 에이 이 정보를 조사하는 편리한 방법은 실행하는 것입니다 다음과 같은 쿼리
pg_class에서 relname, age (relfrozenxid)를 선택하여 relkind = 'r'; pg_database에서 datname, age (datfrozenxid)를 선택하십시오.
theAge열은 숫자를 측정합니다 컷오프 XID에서 현재까지의 거래 거래의 XID. A 직후스포츠 토토, Age (RelfrozenxID)는 조금 이상이어야합니다 그만큼VACUUM_FREEZE_MIN_AGE그것을 설정합니다 사용되었습니다 ( 이후 시작된 트랜잭션 수에 따라스포츠 토토시작). 만약에Age (RelfrozenxID)초과autovacuum_freeze_max_age, autovacuum은 곧 테이블에 강요당했습니다.
어떤 이유로 든 Autovacuum이 오래된 XID를 스포츠 토토하지 못하는 경우 테이블, 시스템은 이와 같은 경고 메시지를 방출하기 시작합니다. 데이터베이스의 가장 오래된 XID가 1 백만 건의 트랜잭션에 도달하면 랩 어라운드 지점에서 :
경고 : 데이터베이스 "MyDB"는 177009986 트랜잭션 내에 청소해야합니다 힌트 : 데이터베이스 종료를 피하려면 "MyDB"에서 전체-다이버스 스포츠 토토을 실행하십시오..
이러한 경고가 무시되면 시스템이 종료되고 더 적은 경우 새로운 거래 실행을 거부합니다. 랩 어라운드까지 1 백만 건의 거래가 남았습니다 :
오류 : 데이터베이스는 데이터베이스 "mydb"의 랩 어라운드 데이터 손실을 피하기 위해 명령을 수락하지 않습니다. 힌트 : 우체국 장을 중지하고 "MyDB"에서 스포츠 토토 상태로 독립형 백엔드를 사용하십시오.
1 백만 번의 이동 안전 마진은 관리자는 수동으로 실행하여 스포츠 토토 손실없이 복구됩니다 필수스포츠 토토명령. 하지만, 시스템이 사라진 후에는 명령을 실행하지 않기 때문에 안전 차단 모드로,이를 수행하는 유일한 방법은 서버를 중지하고 단일 사용자 백엔드를 사용하여 실행스포츠 토토. 셧다운 모드는 아닙니다 단일 사용자 백엔드에 의해 시행됩니다. 참조Postgres자세한 내용은 참조 페이지입니다 단일 사용자 백엔드 사용에 대해.
시작PostgreSQL8.1, 선택적 기능이 있습니다.autovacuum실행스포츠 토토and분석명령. 활성화되면 Autovacuum 많은 수의 삽입 된 테이블을 확인하고 튜플을 업데이트하거나 삭제했습니다. 이 수표는 통계를 사용합니다 수집 시설; 따라서 Autovacuum을 사용할 수 없습니다 하지 않는 한track_countstrue. 기본값에서 구성,자가 동작이 활성화되고 관련되어 있습니다 구성 매개 변수는 적절하게 설정됩니다.
시작PostgreSQL8.3, Autovacuum은 다중 프로세스 아키텍처를 가지고 있습니다 데몬 프로세스,autovacuum 발사통, 시작을 담당하는Autovacuum Worker모든 데이터베이스의 프로세스. 런처는 시간이 지남에 따라 작업을 배포하지만 시도합니다. 각 데이터베이스에서 한 명의 작업자를 시작하려면autovacuum_naptime초. 각 스포츠 토토베이스에 대해 한 명의 작업자가 출시되며 최대autovacuum_max_workers동시에 실행되는 프로세스. 이상이있는 경우autovacuum_max_workers처리 할 데이터베이스, 다음 데이터베이스가 처리됩니다. 첫 번째 작업자가 끝나 자마자. 근로자 과정이 가능합니다 데이터베이스 내의 각 테이블을 확인하고 실행스포츠 토토및/또는분석필요에 따라.
theautovacuum_max_workers설정 설정은 언제든지 운영 될 수있는 근로자 수를 제한합니다. 만약에 여러 개의 큰 테이블이 모두 짧은 시간, 모든 Autovacuum 근로자는 결국 끝날 수 있습니다. 이 테이블을 오랫동안 스포츠 토토 청소기로 청소하십시오. 결과가 발생합니다 다른 테이블 및 데이터베이스에서 작업자가 발생할 때까지 스포츠 토토 청소기가 청소되지 않습니다. 사용 가능하게되었습니다. 근로자 수에는 제한이 없습니다 단일 데이터베이스에있을 수 있지만 근로자는 피하려고합니다. 다른 노동자들이 이미 수행 한 반복 작업. 달리는 근로자의 수는 그만큼max_connections또는SuperUser_Reserved_Connections한계.
테이블의relfrozenxid값 이상autovacuum_freeze_max_age오래된 거래는 항상 청소됩니다. 그렇지 않으면 두 가지 조건 적용 할 작업을 결정하는 데 사용됩니다. 만약 마지막 이후 쓸모없는 튜플 수스포츠 토토초과"스포츠 토토 한계점", 테이블은 스포츠 토토 청소기입니다. 스포츠 토토 임계 값 다음과 같이 정의됩니다.
스포츠 토토 임계 값 = 스포츠 토토베이스 임계 값 + 스포츠 토토 스케일 팩터 * 튜플 수
스포츠 토토베이스 임계 값이있는 곳autovacuum_vacuum_threshold, 스포츠 토토 스케일 계수는autovacuum_vacuum_scale_factor그리고 튜플 수는PG_CLASS.Reltuples. 쓸모없는 튜플의 수는입니다 통계 수집가로부터 얻은; 그것은 반 유감입니다 각에 의해 업데이트 됨업데이트및삭제작동. (그것은 단지입니다 일부 정보가 손실 될 수 있으므로 반 정확도 무거운 하중.) 분석의 경우 비슷한 조건이 사용됩니다. 다음으로 정의 된 임계 값 :
임계 값 분석 = 기본 임계 값 분석 + 스케일 요인 분석 * 튜플 수
삽입 된 총 튜플 수와 비교됩니다. 마지막 이후로 업데이트분석.
기본 임계 값 및 스케일 요인은에서 가져옵니다.postgresql.conf이지만 가능합니다 항목을 만들어 테이블별로 테이블별로 무시합니다. 시스템 카탈로그pg_autovacuum. apg_autovacuum특정에 대한 행이 있습니다 표, 지정된 설정이 적용됩니다. 그렇지 않으면 글로벌 설정이 사용됩니다. 보다섹션 18.9더 많은 것 글로벌 설정에 대한 자세한 내용.
기본 임계 값 및 스케일 요인 외에 각 테이블에 대해 설정할 수있는 5 개의 매개 변수가 더 있습니다pg_autovacuum. 첫 번째,pg_autovacuum.활성화,를 설정할 수 있습니다거짓Autovacuum 데몬에 건너 뛰도록 지시합니다 그 특정 테이블 전적으로. 이 경우 autovacuum은 할 것입니다 거래 ID를 방지하기 위해 테이블 만 터치하십시오. 랩 어라운드. 다음 두 매개 변수, 스포츠 토토 비용 지연 (pg_autovacuum.vac_cost_delay) 및 스포츠 토토 비용 제한 (pg_autovacuum.vac_cost_limit)는 설정하는 데 사용됩니다 에 대한 테이블 별 값비용 기반 스포츠 토토 지연기능. 마지막 두 매개 변수, (pg_autovacuum.freeze_min_age) 및 (pg_autovacuum.freeze_max_age)는 설정하는 데 사용됩니다 에 대한 테이블 별 값VACUUM_FREEZE_MIN_AGE및autovacuum_freeze_max_age각각.
pg_autovacuum음수로 설정되어 있습니다. 또는 행이 전혀 없으면pg_autovacuum특정 테이블의 경우 해당 값postgresql.conf사용됩니다.
현재 제작에 대한 지원은 없습니다pg_autovacuum매뉴얼을 제외하고는 항목삽입카탈로그에 들어갑니다. 이 기능 향후 릴리스에서 개선 될 것이며 카탈로그 정의가 변경됩니다.
주의 |
의 내용pg_autovacuum시스템 카탈로그는입니다 현재는 스포츠 토토베이스 덤프에 저장되지 않았습니다 도구pg_dumpandpg_dumpall. 당신이 덤프/재 장전 사이클에 걸쳐 보존하고 싶습니다 카탈로그를 수동으로 버려야합니다. |
여러 근로자가 달리면 비용 제한이"밸런스"모든 달리기 중 작업자, 시스템에 대한 총 영향이 동일합니다. 실제로 달리는 근로자의 수에 관계없이.