Saya menjalankan database PostgreSQL yang memiliki beberapa tabel yang menyimpan informasi logging. Informasi ini hanya untuk tujuan pelaporan dan akan dibuang ke file dan dihapus dari database jika lebih dari 30 hari.
Mungkin ada jutaan baris yang dihapus, dan kami telah menjalankan REINDEX setiap kali setelah penghapusan.
Apakah ini cukup, atau haruskah kita juga menjalankan VACUUM atau VACUUM ANALYZE? Atau mengindeks kembali tidak perlu dan kita harus bukan hanya menjalankan VACUUM atau VACUUM ANALYZE?
Kami menggunakan PostgreSQL 8.2.3, yang saya yakini tidak memungkinkan penyedotan otomatis.
Jawaban:
Anda harus melakukan VACUUM ANALYZE karena VACUUM akan memungkinkan ruang yang digunakan oleh data yang dihapus untuk digunakan kembali dan mencegah pembungkusan transaksi, dan ANALYZE akan memperbarui statistik perencana yang akan mengarah pada rencana kueri yang lebih baik untuk permintaan pelaporan Anda.
REINDEX tidak diperlukan secara teoritis, tetapi Anda mungkin menemukan bahwa itu menghasilkan kinerja yang lebih baik karena indeks berdekatan.
Halaman dokumentasi yang relevan untuk 8.2 ada di sini (indeks ulang rutin) dan di sini (penyedotan rutin) .
sumber