하나의 읽기 전용 미러 인스턴스를 최신 상태로 유지하는 스트리밍 복제와 함께 PostgreSQL 9.0.1 실행. Auto-vaccuum은 업무 시간 IO를 줄이기 위해 auto-vacuum 데몬에 의해 진공 처리되지 않은 일부 테이블을 제외하고 기본에 있습니다. 이 테이블은 "구체화 된 뷰"입니다.
매일 밤 자정에 자동 진공에서 제외 된 테이블을 정리하기 위해 데이터베이스를 가로 질러 진공 청소기를 실행합니다. 해당 프로세스가 미러로 복제되는지 또는 미러에서 진공을 설정해야하는지 궁금합니다.
1
훌륭한 질문입니다. 스트리밍 복제는 Write-Ahead Log를 사용하므로 VACUUM의 변경 사항이 기록되는지 여부로 요약됩니다.
—
DerfK
흥미롭게도, 나는 읽기 전용 미러에서 자동 진공을 켰지 만 테이블 통계를 보면 실행되지 않은 것으로 보입니다. 모든 테이블에 0 개의 활성 / 죽음 튜플이 나열되어 있으며 진공 또는 분석에 대한 히스토리가 표시되지 않습니다.
—
Scott Herbert
developer.postgresql.org/pgdocs/postgres/hot-standby.html-25.5.2 . 쿼리 충돌 처리- "WAL에서 진공 정리 레코드를 적용하면 제거 할 행을 스냅 샷으로 볼 수있는 대기 트랜잭션과 충돌합니다 ............. VACUUM WAL이 기록되었으므로 제 질문에 "예"입니다. PG 전문가로부터 정보를 더 얻고 싶습니다!
—
Scott Herbert
동적 뷰의 데이터는 기본과 대기에서 다를 것으로 예상됩니다. 이러한 뷰는 시스템 함수를 사용하여 데이터를 수집하고 해당 함수는 실제 테이블이 아닌 메모리 내 데이터 구조에서 데이터를 읽습니다. 예를 들어, 기본에서 ANALYZE를 수행하면 대기에서 옵티 마이저 통계 (쿼리 계획에 사용됨)도 업데이트되지만 테이블에서 ANALYZE가 수행 된 시간은 해당 정보가 트랜잭션에 기록되지 않으므로 pg_stat_user_tables에 반영되지 않습니다. 로그.
—
Gurjeet Singh 22.07에
따라서 마스터에서 발생하는 AUTOVACUUM은 슬레이브에서 실행되는 데 아무런 영향을 미치지 않습니다. 맞습니까? 이것이 사실이라고 가정하면, 업데이트 / 삭제가없는 테이블이 있고 삽입 만하면 마스터에 자동 진공 기능을 비활성화하는 것이 가능할 것입니다.
—
Henley Chiu