다양한 역할을 가진 테이블을 포함하는 큰 데이터베이스 (수백 개의 기가)를 관리하고 일부는 수백만 개의 레코드를 보유합니다. 일부 테이블은 많은 수의 삽입 및 삭제, 다른 일부는 삽입 및 업데이트 만받습니다.
데이터베이스는 16 기가 바이트의 RAM이있는 Debian 6.0 amd64 시스템의 PostgreSQL 8.4에서 실행됩니다.
문제는 때때로 테이블의 자동 진공 프로세스이므로 완료하는 데 시간이 오래 걸립니다 (일). 특정 진공 명령에 소요되는 시간을 대략적으로 알려주고 취소 여부를 결정할 수 있기를 원합니다. 또한 postgres 진공 작업에 대한 진행률 표시기가 있으면 실제로 도움이 될 것입니다.
편집하다:
방탄 솔루션을 찾고 있지 않습니다. 데드 튜플 수 또는 필요한 I / O 바이트 수에 대한 대략적인 힌트만으로도 충분합니다. 언제 끝날지 전혀 알지 못하는 것은 정말 성가신 VACUUM
일입니다.
나는 pg_catalog.pg_stat_all_tables
죽은 튜플의 수에 대한 열 이 있음을 보았습니다 . 따라서 ANALYZE
이전에 테이블에 있어야한다는 것을 의미하더라도 추정값을 가질 수 있습니다 . 반면에, autovacuum_vacuum_threshold
및 autovacuum_vacuum_scale_factor
설정을 혼자 자체가 포스트 그레스 증명 알고 테이블에 변화의 양에 대해 뭔가를 아마 너무 DBA의 손에 넣습니다.
실행할 때 쿼리를 확실하지 않습니다. 왜냐하면을 실행할 때 VACUUM VERBOSE
테이블뿐만 아니라 테이블의 인덱스도 처리되고 있기 때문입니다.