Windows에서 Postgres 9.2를 사용하여 저주파 시계열 데이터를 저장하고 있습니다. 가동 중지 시간없이 연중 무휴 24 시간마다 초당 약 2000 행을 삽입하고 있습니다. 이 DELETE
일의 고정 번호로 테이블의 길이를 유지하기 위해 테이블에 매 10 분 정도를 실행합니다. 결과적으로 9 억 행이 상당히 안정적입니다. (사람들은 관심 들어, SELECT
, INSERT
, DELETE
모든 확대됨에 있습니다).
따라서 DELETE
행을 삭제해도 디스크 공간이 확보되지 않습니다. 이를 위해 우리는 VACUUM
실행 해야 합니다.
나는 묻습니다했습니다 pg_stat_user_tables
및 VACUUM
하지 지금까지 실행 한 것으로 나타납니다.
다양한 문서에서 이해하는 내용 ( http://www.postgresql.org/docs/9.2/static/routine-vacuuming.html ) :
- 자동 진공 기능이 켜져 있고 다른 테이블에서 실행 중입니다.
- auto-vacuum은 실행되지 않으며
FULL
테이블에 대한 독점 잠금이 필요 하지 않습니다 .
auto-vacuum이 왜 실행되지 않는지 아는 사람이 있습니까? 테이블이 계속 바쁘기 때문에 이것이 순수합니까?
그리고 그것은 가치가 실행중인 VACUUM
모든 후, DELETE
이 경우 (이는 매 10 분마다 운행)에서는?
편집하다:
아래 SO 링크에서 SQL을 사용하여 쿼리하십시오.
-[ RECORD 2 ]---+---------------------------
schemaname | stats
relname | statistic_values_by_sec
last_vacuum |
last_autovacuum |
n_tup | 932,315,264
dead_tup | 940,727,818
av_threshold | 186,463,103
expect_av | *
원시 출력 :
-[ RECORD 3 ]-----+---------------------------
relid | 501908
schemaname | stats
relname | statistic_values_by_sec
seq_scan | 12
seq_tup_read | 4526762064
idx_scan | 29643
idx_tup_fetch | 2544206912
n_tup_ins | 1573896877
n_tup_upd | 0
n_tup_del | 941176496
n_tup_hot_upd | 0
n_live_tup | 688858417
n_dead_tup | 940727818
last_vacuum |
last_autovacuum |
last_analyze |
last_autoanalyze | 2014-08-09 01:36:21.703+01
vacuum_count | 0
autovacuum_count | 0
analyze_count | 0
autoanalyze_count | 69
select * from pg_stat_user_tables
이 테이블 을 가지고 있으면 흥미로울 것입니다 (\x
psql에서 형식이 좋은 출력을 위해 사용 )