postgresql's메이저 토토 사이트명령필수정기적으로 실행하십시오 몇 가지 이유 :
업데이트 된 디스크 공간을 복구하거나 재사용하려면 삭제 된 행.
PostgreSQL쿼리 플래너.
|트랜잭션 ID 랩 어라운드.
의 주파수와 범위107PostgreSQL : 문서 : 8.2 : 일상 메이저 토토 사이트 청소기51이러한 각 이유에 대해 수행 된 작업은 다릅니다 각 사이트의 요구에 따라 따라서 데이터베이스 관리자는 이러한 문제를 이해하고 개발해야합니다 적절한 유지 보수 전략. 이 섹션은 집중합니다 높은 수준의 문제를 설명합니다. 명령에 대한 자세한 내용 구문 등, 참조메이저 토토 사이트참조 페이지.
표준 형태메이저 토토 사이트실행할 수 있습니다 생산 데이터베이스 작업과 병행하여. 와 같은 명령select, 삽입, 업데이트및삭제는 계속 정상적으로 작동합니다 테이블의 정의를 수정할 수 없습니다. 와 같은 명령ALTER 테이블 추가 열메이저 토토 사이트 청소기 중. 또한,메이저 토토 사이트상당한 양의 I/O 트래픽이 필요하므로 다른 활성 세션의 성능 저하. 거기 있습니다 구성 매개 변수를 줄이기 위해 조정할 수 있습니다 배경 메이저 토토 사이트 청소기의 성능 영향 - 참조섹션 17.4.4.
필요한 것을 수행하기위한 자동화 된 메커니즘메이저 토토 사이트운영이 추가되었습니다PostgreSQL8.1. 보다섹션 22.1.4.
정상PostgreSQL작동, an업데이트또는삭제의 행은 즉시 제거되지 않습니다 행의 오래된 버전. 이 접근법은 Multiversion 동시성 제어의 이점 (참조12 장) : 행 버전은 아니어야합니다 여전히 다른 사람에게는 잠재적으로 볼 수있는 동안 삭제됩니다 업무. 그러나 결국 구식 또는 삭제 된 행입니다 버전은 더 이상 거래에 관심이 없습니다. 공간 차를 피하기 위해 새로운 행으로 재사용하기 위해 점유해야합니다. 디스크 공간 요구 사항의 무한한 성장. 이것은 이에 의해 수행됩니다 달리기메이저 토토 사이트.
명확하게, 자주 업데이트 또는 삭제를받는 테이블 거의없는 테이블보다 더 자주 메이저 토토 사이트 청소기를 청소해야합니다. 업데이트. 정기적 인 설정에 유용 할 수 있습니다Cron작업메이저 토토 사이트테이블을 건너 뛰는 선택된 테이블 만 있습니다 그것은 자주 변하지 않는 것으로 알려져 있습니다. 이것은 아마도 가능할 것입니다 크게 무겁고 업데이트 된 테이블과 큰 경우 도움이됩니다. 거의 업데이트 된 테이블-작은 메이저 토토 사이트 청소기의 추가 비용 테이블은 걱정할 가치가 없습니다.
두 가지 변형이 있습니다메이저 토토 사이트명령. 로 알려진 첫 번째 형태"게으른 메이저 토토 사이트"또는 Just메이저 토토 사이트, 표 및 색인의 마크가 만료 된 데이터 미래의 재사용을 위해;아님공간을 되 찾으려고 시도합니다 공간이 끝나지 않는 한이 만료 된 데이터로 사용 테이블 및 독점 테이블 잠금을 쉽게 얻을 수 있습니다. 파일의 시작 또는 중간에 사용되지 않은 공간이 발생하지 않습니다. 파일이 단축되고 공간이 작동으로 돌아 왔습니다. 체계. 이 변형메이저 토토 사이트할 수 있습니다 일반 데이터베이스 작업과 동시에 실행하십시오.
두 번째 양식은입니다.메이저 토토 사이트 Full명령. 이것은 재생하기 위해보다 공격적인 알고리즘을 사용합니다 만료 된 행 버전으로 소비되는 공간. 모든 공간 해방메이저 토토 사이트 Full즉시입니다 운영 체제로 돌아 왔습니다. 불행히도,이 변형 의메이저 토토 사이트명령을 얻습니다 각 테이블의 독점 잠금메이저 토토 사이트 가득한처리 중입니다. 따라서 자주 사용메이저 토토 사이트 Full극도로 가질 수 있습니다 동시 데이터베이스의 성능에 대한 부정적인 영향 쿼리.
표준 형태메이저 토토 사이트최고입니다 상당한 수준의 정상 상태를 유지한다는 목표와 함께 사용 디스크 공간 사용. 디스크 공간을 반환 해야하는 경우 사용할 수있는 운영 체제메이저 토토 사이트 가득한- 그러나 디스크 공간을 공개하는 지점은 무엇입니까? 곧 다시 할당 되나요? 적당히 빈번합니다 기준메이저 토토 사이트달리기가 더 좋습니다 드물게 접근메이저 토토 사이트 Full심하게 업데이트 된 테이블을 유지하기 위해 실행됩니다.
대부분의 사이트에 대한 권장 실습은 a를 예약하는 것입니다 데이터베이스 전체메이저 토토 사이트하루에 한 번 a 낮은 사용 시간은 더 자주 메이저 토토 사이트 청소기로 보충됩니다 필요한 경우 무겁게 업데이트 된 테이블. (일부 설치 매우 높은 업데이트 속도로 가장 바쁜 테이블은 몇 분마다 종종.) 여러 사람이있는 경우 클러스터의 데이터베이스, 잊지 마십시오메이저 토토 사이트각각; 프로그램Vacuumdb도움이 될 수 있습니다.
메이저 토토 사이트 Full권장됩니다 당신이 당신이 당신이 테이블의 정상 상태 크기가 줄어들 수 있도록 테이블 실질적으로메이저 토토 사이트 Full더 공격적인 접근. 평원 사용메이저 토토 사이트, 아니다메이저 토토 사이트 Full, 일상적인 메이저 토토 사이트 청소기 우주 복구를 위해.
전체 내용이 삭제되는 테이블이있는 경우 정기적 인 기준,로하는 것을 고려하십시오.Truncate사용하는 대신삭제이후메이저 토토 사이트. Truncate표의 전체 내용을 즉시 제거합니다 후속 요구메이저 토토 사이트또는메이저 토토 사이트 Full현재 금지 된 사람을 되 찾으려면 디스크 공간.
thePostgreSQL쿼리 플래너는 내용에 대한 통계 정보에 의존합니다 쿼리에 대한 좋은 계획을 생성하기 위해 테이블. 이것들 통계는에 의해 수집됩니다.분석명령, 자체적으로 또는 선택적 단계로 호출 할 수 있습니다. 안에메이저 토토 사이트. 가지고있는 것이 중요합니다 합리적으로 정확한 통계, 그렇지 않으면 계획 선택이 열악합니다 데이터베이스 성능 저하를 저하시킬 수 있습니다.
공간 복구를위한 메이저 토토 사이트 청소기와 마찬가지로 빈번한 업데이트 통계는 업데이트 된 테이블보다 더 유용합니다 거의 업데이트 된 것들. 그러나 심하게 업데이트 된 테이블의 경우에도 통계적 인 경우 통계 업데이트가 필요하지 않을 수 있습니다. 데이터 분포는 크게 변하지 않습니다. 간단한 규칙 엄지는 최소 및 최대 값에 대해 생각하는 것입니다. 테이블의 열이 변경됩니다. 예를 들어, A타임 스탬프행의 시간이 포함 된 열 업데이트는 최대 최대 값이 행으로 지속적으로 증가합니다 추가 및 업데이트됩니다. 그러한 칼럼은 아마도 더 필요할 것입니다 URL이 포함 된 열보다 빈번한 통계가 업데이트됩니다 웹 사이트에서 액세스 한 페이지의 경우. URL 열이 수신 될 수 있습니다 마찬가지로 자주 변경되지만 통계적 분포 값은 아마도 비교적 느리게 변할 것입니다.
실행할 수 있습니다분석on 특정 테이블 및 테이블의 특정 열만 있으므로 일부 통계를 더 업데이트하기 위해 유연성이 존재합니다 응용 프로그램에 필요한 경우 다른 사람보다 자주 다른 사람보다 자주. ~ 안에 그러나 연습은 일반적으로 분석하는 것이 가장 좋습니다. 빠른 작업이기 때문에 전체 데이터베이스. a 테이블 행의 통계 랜덤 샘플링이 아닙니다. 모든 줄 읽기.
팁 :콜럼 당 조정이지만분석주파수는 그리되지 않을 수 있습니다 생산적, 당신은 그것이 가치가 있다는 것을 알 수 있습니다 세부의 세부 수준의 컬럼 당 조정 에 의해 수집 된 통계분석. 크게 사용되는 열여기서조항은 불규칙한 데이터를 가지고 있습니다 분포는보다 미세한 곡물 데이터 히스토그램이 필요할 수 있습니다 다른 열. 보다ALTER 테이블 세트 통계.
대부분의 사이트에 대한 권장 실습은 a를 예약하는 것입니다 데이터베이스 전체분석하루에 한 번 a 낮은 시간의 시간; 이것은 유용하게 결합 될 수 있습니다 야간메이저 토토 사이트. 그러나 사이트와 함께 비교적 느리게 변화하는 테이블 통계는이를 발견 할 수 있습니다 과잉이며 덜 주파수분석달리기가 충분합니다.
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그럴 때 사용되었습니다 마지막으로 메이저 토토 사이트 청소기. 만약 그것이 바로 오랫동안 바로 가면서 즉, 데이터 손실이 발생할 수 있습니다. 이것이 그렇지 않은지 확인합니다 일어난다,autovacuum시설 설명섹션 22.1.4is 나이보다 오래된 XID를 포함 할 수있는 모든 테이블에서 호출 구성 매개 변수로 지정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_age그게PG_CLOG데이터베이스 클러스터의 하위 디렉토리 커밋 상태를 저장해야하기 때문에 더 많은 공간을 차지합니다. 모든 거래에 대해autovacuum_freeze_max_ageHorizon. 커밋 상태는 거래 당 두 비트를 사용하므로 ifautovacuum_freeze_max_age최대 값이 있습니다 20 억 미만의 허용 가치PG_CLOG약 절반으로 성장할 수 있습니다 기가 바이트. 이것이 총 데이터베이스에 비해 사소한 경우 크기, 설정autovacuum_freeze_max_age최대 허용 가치를 권장합니다. 그렇지 않으면, 당신의 것에 따라 설정하십시오 기꺼이 허용PG_CLOG스토리지. (기본값, 2 천만 건의 거래는 다음과 같습니다 약 50MBPG_CLOG스토리지.)
감소의 한 가지 단점VACUUM_FREEZE_MIN_AGE원인이 될 수 있다는 것입니다메이저 토토 사이트쓸모없는 작업을 수행하려면 : a 테이블 행의 xid tofrozenxidis 그 후 곧 행이 수정 된 경우 시간 낭비 (원인 새로운 XID를 획득하기 위해). 따라서 설정은 충분히 커야합니다 그 행은 변경할 가능성이 없을 때까지 동결되지 않습니다. 더. 이 설정을 줄이는 또 다른 단점은 그 것입니다 정확히 삽입 또는 수정 된 트랜잭션에 대한 세부 사항 a 행은 더 빨리 손실됩니다. 이 정보는 때때로 들어옵니다 특히 무엇이 잘못되었는지 분석하려고 할 때 편리합니다 데이터베이스 실패 후. 이 두 가지 이유로 감소합니다 이 설정은 완전히 정적을 제외하고는 권장되지 않습니다 테이블.
데이터베이스에서 가장 오래된 XID의 나이를 추적하려면메이저 토토 사이트XID 통계를 저장합니다 시스템 테이블pg_class및pg_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이 a wald xids를 청소하지 못하는 경우 테이블, 시스템은 이와 같은 경고 메시지를 방출하기 시작합니다. 데이터베이스의 가장 오래된 XID가 1 백만 건의 트랜잭션에 도달하면 랩 어라운드 지점에서 :
경고 : 데이터베이스 "MyDB"는 177009986 트랜잭션 내에 청소해야합니다 힌트 : 데이터베이스 종료를 피하려면 "MyDB"에서 전체-다이버스 메이저 토토 사이트을 실행하십시오..
이러한 경고가 무시되면 시스템이 종료되고 더 적은 경우 새로운 거래 실행을 거부합니다. 랩 어라운드까지 1 백만 건의 거래가 남았습니다 :
오류 : 데이터베이스 "mydb"의 랩 어라운드 데이터 손실을 피하기 위해 데이터베이스가 종료되었습니다. 힌트 : 우체국 장을 중지하고 "MyDB"에서 메이저 토토 사이트 상태로 독립형 백엔드를 사용하십시오.
1 백만 번의 이동 안전 마진은 관리자는 수동으로 실행하여 데이터 손실없이 복구됩니다 필수메이저 토토 사이트명령. 하지만, 시스템이 사라진 후에는 명령을 실행하지 않기 때문에 안전 차단 모드로,이를 수행하는 유일한 방법은 서버를 중지하고 단일 사용자 백엔드를 사용하여 실행메이저 토토 사이트. 셧다운 모드는 아닙니다 단일 사용자 백엔드에 의해 시행됩니다. 참조Postgres자세한 내용은 참조 페이지입니다 단일 사용자 백엔드 사용에 대해.
시작PostgreSQL8.1,이라는 별도의 선택 서버 프로세스가 있습니다.autovacuum daemon의 실행 자동화메이저 토토 사이트및분석명령. 활성화되면 Autovacuum 데몬은 주기적으로 실행되며 테이블을 확인합니다 많은 수의 삽입, 업데이트 또는 삭제 된 튜플이 있습니다. 이 수표는로드 레벨 통계 수집 시설을 사용합니다. 따라서 Autovacuum 데몬은를 사용할 수 없습니다stats_start_collectorandstats_row_leveltrue. 또한 중요합니다 선택할 때 Autovacuum 프로세스에 대한 슬롯을 허용합니다. 의 가치SuperUser_Reserved_Connections.
Autovacuum 데몬은 활성화되면 모든 실행autovacuum_naptime초. 각 실행마다 처리 할 데이터베이스 하나를 선택하고 해당 데이터베이스 내의 각 테이블을 확인합니다.메이저 토토 사이트또는분석필요에 따라 명령이 발행됩니다.
테이블의relfrozenxid값 이상autovacuum_freeze_max_age오래된 거래는 항상 청소됩니다. 그렇지 않으면 두 가지 조건 적용 할 작업을 결정하는 데 사용됩니다. 만약 마지막 이후 쓸모없는 튜플 수메이저 토토 사이트초과"메이저 토토 사이트 한계점", 테이블은 메이저 토토 사이트 청소기입니다. 메이저 토토 사이트 임계 값 다음과 같이 정의됩니다.
메이저 토토 사이트 임계 값 = 메이저 토토 사이트베이스 임계 값 + 메이저 토토 사이트 스케일 팩터 * 튜플 수
메이저 토토 사이트베이스 임계 값이있는 곳autovacuum_vacuum_threshold, 메이저 토토 사이트 스케일 계수는autovacuum_vacuum_scale_factor, 그리고 튜플 수는PG_CLASS.Reltuples. 쓸모없는 튜플의 수는입니다 통계 수집가로부터 얻은; 그것은 반 유감입니다 각에 의해 업데이트 됨업데이트및삭제작동. (그것은 단지입니다 일부 정보는 무거운 상태에서 손실 될 수 있기 때문에 반당합니다 로드.) 분석의 경우 비슷한 조건이 사용됩니다 : 임계 값, 정의
임계 값 분석 = 기본 임계 값 분석 + 스케일 팩터 분석 * 튜플 수
삽입 된 총 튜플 수와 비교됩니다. 또는 마지막 이후 삭제분석.
기본 임계 값 및 스케일 요인은에서 가져옵니다.postgresql.conf이지만 가능합니다 항목을 만들어 테이블별로 테이블별로 무시합니다. 시스템 카탈로그pg_autovacuum. apg_autovacuum특정 경우 행이 있습니다 표, 지정된 설정이 적용됩니다. 그렇지 않으면 글로벌 설정이 사용됩니다. 보다섹션 17.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_AGEandautovacuum_freeze_max_age각각.
값 중 값 중 하나 인 경우pg_autovacuum음수로 설정되어 있습니다. 또는 행이 전혀 없으면pg_autovacuum특정 테이블의 경우 해당 값postgresql.conf사용됩니다.
현재 제작에 대한 지원은 없습니다pg_autovacuum매뉴얼을 제외하고는 항목삽입카탈로그에 들어갑니다. 이 기능 향후 릴리스에서 개선 될 것이며 카탈로그 정의가 변경됩니다.
주의 |
의 내용pg_autovacuum시스템 카탈로그는입니다 현재는 데이터베이스 덤프에 저장되지 않았습니다 도구pg_dump및pg_dumpall. 당신이 그들을 보존하고 싶다면 덤프/재 장전 사이클에서 덤프를 덤프해야합니다 수동으로 카탈로그. |