Chúng tôi đang sử dụng Postgres 9.2 trên Windows để lưu trữ dữ liệu thời gian tần số thấp: chúng tôi đang chèn khoảng 2000 hàng mỗi giây mỗi 24 giờ, 7 ngày một tuần mà không có thời gian chết. Có một DELETEcái chạy trên bàn cứ sau 10 phút hoặc lâu hơn để giữ độ dài của bàn đến một số ngày cố định. Điều này kết thúc là một 900 triệu hàng khá ổn định. (Đối với những người quan tâm, SELECT, INSERT, DELETEđều performant).
Như vậy DELETE, trong khi xóa các hàng không giải phóng không gian đĩa. Cho rằng chúng ta cần VACUUMphải chạy.
Tôi đã truy vấn pg_stat_user_tablesvà VACUUMdường như chưa từng chạy.
Những gì tôi hiểu từ các tài liệu khác nhau ( http://www.postgresql.org/docs/9.2/static/routine-vacuuming.html ):
- chúng tôi dường như có chế độ hút bụi tự động và nó đang chạy trên các bảng khác.
- chân không tự động không chạy
FULLvà không cần khóa độc quyền trên bàn.
Có ai có bất kỳ suy nghĩ tại sao tự động chân không không chạy? Đây có phải là hoàn toàn bởi vì bảng liên tục bận rộn?
Và nó có đáng để chạy VACUUMsau mỗi DELETEtrong trường hợp này (chạy cứ sau 10 phút)?
Biên tập:
Truy vấn bằng SQL từ liên kết SO bên dưới:
-[ 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 | *
và đầu ra thô:
-[ 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_tablesbảng này (sử dụng\xtrong psql cho đầu ra được định dạng độc đáo)