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 DELETE
cá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 VACUUM
phải chạy.
Tôi đã truy vấn pg_stat_user_tables
và VACUUM
dườ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
FULL
và 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 VACUUM
sau mỗi DELETE
trong 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_tables
bảng này (sử dụng\x
trong psql cho đầu ra được định dạng độc đáo)