Jelaskan tujuan vakum dan autovacuum

Selesai

Ketika sebuah baris diperbarui, setiap pembaruan terdiri dari sisipan dan penghapusan. Data yang dimodifikasi dimasukkan, dan baris lama dihapus. Di PostgreSQL, baris asli dipertahankan sehingga transaksi dapat digulung balik jika ada masalah. Daripada menghapus baris asli, itu ditandai untuk dihapus nanti, menghasilkan baris "mati" (atau tuple) yang masih ada di disk tetapi tidak lagi diperlukan.

Proses vakum bernama aptly secara permanen menghapus baris-baris ini, mengklaim kembali ruang yang mungkin hilang, dan memperbarui statistik.

Proses pembersihan baris mati disebut proses vakum. Jika baris ini dibiarkan di disk, database akan mengambil lebih banyak ruang disk yang diperlukan, yang dikenal sebagai database "bloat." Proses VACUUM penting karena alasan berikut:

  • Untuk memulihkan ruang disk yang ditempati oleh baris yang ditandai untuk dihapus.
  • Untuk memperbarui statistik data untuk digunakan oleh perencana kueri.
  • Untuk memperbarui peta visibilitas, yang mempercepat pemindaian khusus indeks.
  • Untuk melindungi dari hilangnya data lama karena id transaksi wraparound.

PostgreSQL menggunakan proses yang disebut vakum untuk menghapus baris secara permanen dan mengklaim kembali ruang. Selain mengklaim kembali ruang, ini juga memastikan indeks efektif.

Saat proses vakum dipicu secara otomatis, proses ini dikenal sebagai autovacuum. Frekuensi yang prosesnya perlu dijalankan tergantung pada jumlah operasi pembaruan dan penghapusan. Anda juga dapat memantau jumlah baris yang ditandai untuk dihapus.

Menjalankan proses vakum secara berkala memastikan Anda tidak:

  • Pengalaman "mengasapi," termasuk database dan tabel yang lebih besar dari yang diperlukan.
  • Memiliki Indeks yang besar dan suboptimal.
  • Pengalaman peningkatan I/O.

Untuk memantau jumlah baris "mati" dalam tabel, Anda dapat menjalankan kueri SELECT:

SELECT relname, n_dead_tup, n_live_tup
FROM pg_catalog.pg_stat_all_tables
ORDER BY n_dead_tup DESC;

Untuk menjalankan proses vakum secara manual, ketik:

vacuum