많은 행을 삭제 한 후 테이블을 REINDEX하고 VACUUM해야합니까?


10

로깅 정보를 저장하는 여러 테이블이있는 PostgreSQL 데이터베이스를 실행 중입니다. 이 정보는보고 목적으로 만 사용되며 파일로 덤프되어 30 일이 지난 경우 데이터베이스에서 삭제됩니다.

수백만 개의 행이 삭제 될 수 있으며 삭제 후마다 REINDEX를 실행하고 있습니다.

이것으로 충분합니까, 아니면 VACUUM 또는 VACUUM ANALYZE도 실행해야합니까? 또는 REINDEX 필요가 없습니다 우리는 대신한다 단지 진공 또는 진공 분석 실행?

우리는 자동 진공 청소기를 허용하지 않는 PostgreSQL 8.2.3을 사용하고 있습니다.


2
파티셔닝을 고려할 수도 있습니다 ( postgresql.org/docs/9.0/static/ddl-partitioning.html 참조) . 그런 다음 파티션을 버리고 진공 청소기로 청소하지 않아도됩니다.
alex

3
버전 8.2.3에는 auto_vacuum이 있습니다. 매뉴얼을 참조하십시오. 그러나 최대한 빨리 업데이트해야합니다. 현재 8.2 버전은 8.2.17입니다. 몇 가지 보안 패치를 포함하여 14 개의 패치가 있습니다. 8.4 또는 9.0으로 업그레이드하는 것이 더 좋습니다. auto_vacuum이 개선되었습니다.
Frank Heikens

답변:


13

VACUUM은 삭제 된 데이터에 사용 된 공간을 재사용하고 트랜잭션 랩 어라운드를 방지 할 수 있으므로 VACUUM ANALYZE를 수행해야하며, ANALYZE는 플래너 통계를 업데이트하여보고 쿼리에 대한 쿼리 계획을 향상시킵니다.

REINDEX는 이론적으로 필요하지는 않지만 인덱스가 연속적이므로 성능이 향상 될 수 있습니다.

8.2 관련 문서 페이지는 여기 (정기 재색 인)여기 (정기 진공) 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.