Saya mengelola database besar (beberapa pertunjukan) yang berisi tabel dengan berbagai peran, beberapa dari mereka memegang jutaan catatan. Beberapa tabel hanya menerima sejumlah besar sisipan dan penghapusan, beberapa sisipan lainnya dan sejumlah besar pembaruan.
Basis data berjalan pada PostgreSQL 8.4 pada sistem Debian 6.0 amd64 dengan RAM 16 gigabytes.
Pertanyaannya adalah kadang-kadang proses autovacuum di atas meja, membutuhkan waktu sangat lama (hari) untuk menyelesaikannya. Saya ingin mengetahui secara kasar berapa banyak waktu yang dibutuhkan oleh perintah vakum tertentu, untuk dapat memutuskan apakah akan membatalkannya atau tidak. Juga jika ada indikator kemajuan untuk operasi vakum postgres, itu akan sangat membantu.
Edit:
Saya tidak mencari solusi anti peluru. Hanya petunjuk kasar tentang jumlah tupel mati atau byte I / O yang diperlukan sudah cukup untuk memutuskan. Sangat menyebalkan tidak memiliki petunjuk kapan VACUUM
akan selesai, apa pun.
Saya telah melihat bahwa pg_catalog.pg_stat_all_tables
memiliki kolom untuk jumlah tupel mati. Jadi adalah mungkin untuk memiliki estimasi, bahkan jika itu berarti kita harus ke ANALYZE
tabel sebelumnya. Di sisi lain, autovacuum_vacuum_threshold
dan autovacuum_vacuum_scale_factor
pengaturan sendiri membuktikan bahwa postgres sendiri tahu sesuatu tentang jumlah perubahan pada tabel dan mungkin menempatkannya di tangan DBA juga.
Saya tidak yakin permintaan apa yang harus dijalankan, karena ketika saya menjalankan VACUUM VERBOSE
, saya melihat bahwa tidak hanya tabel, tetapi indeks juga sedang diproses.