VACUUM, autovacuum, vacuum_cost_delay
Sesuaikan ambang autovacuum, vacuum_cost_delay, dan VACUUM paralel untuk tabel besar
VACUUM, autovacuum, vacuum_cost_delay adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Tiga Mode VACUUM
VACUUM(malas) — mengambil kembali baris mati, memperbarui peta ruang kosong, tanpa kunci eksklusifVACUUM FULL— menulis ulang tabel; kunci eksklusif; mengembalikan ruang disk ke OSVACUUM ANALYZE— melakukan vacuum dan memperbarui statistik perencana sekaligus
Menjalankan VACUUM Secara Manual
Terkadang tetap berguna meskipun pembersihan otomatis aktif:
VACUUM (VERBOSE) orders;
VACUUM (VERBOSE, ANALYZE) orders;
VACUUM (PARALLEL 4) orders; -- parallel index cleanup (PG 13+)Proses Pembersihan Otomatis
Peluncur latar belakang membuat pekerja yang melakukan vacuum pada tabel yang melampaui ambang batas. Secara bawaan, beberapa pekerja menangani seluruh klaster.
Penyetelan per Tabel
Tabel yang sering berubah mendapat manfaat dari pembersihan otomatis yang agresif:
ALTER TABLE busy_table SET (
autovacuum_vacuum_scale_factor = 0.05, -- 5% dead vs default 20%
autovacuum_vacuum_threshold = 1000,
autovacuum_analyze_scale_factor = 0.05
);vacuum_cost_delay
Membatasi I/O VACUUM agar tidak mengganggu kueri latar depan. Nilai bawaan PG 12+ adalah 2 md — biasanya sudah memadai. Untuk SSD, Anda dapat menurunkannya:
autovacuum_vacuum_cost_delay = 2ms
-- Lower delay = faster vacuum, more I/O usage.
-- Set per-table for hot tables that need faster cleanup.Vacuum Paralel
Sejak PG 13, VACUUM melakukan pembersihan indeks secara paralel:
VACUUM (PARALLEL 4) big_table;
-- Each index cleaned by a parallel worker (up to max_parallel_maintenance_workers).VACUUM FULL: Kapan dan Mengapa
Menulis ulang tabel dari awal — mengembalikan ruang ke OS. Memperoleh ACCESS EXCLUSIVE. Gunakan hanya sebagai pilihan terakhir, atau gunakan pg_repack sebagai gantinya.
VACUUM FULL orders;
-- Locks orders; rewrites; on huge tables this is hours of downtime.pg_repack: Alternatif Daring
Menulis ulang tabel secara daring — tanpa kunci penuh. Efeknya sama seperti VACUUM FULL, tetapi lebih sesuai untuk produksi:
pg_repack -d mydb -t orders
-- Builds a shadow table, sync, swaps in.Memantau Pembersihan Otomatis
Lihat waktu vacuum/analyze terakhir dan jumlah tuple mati:
SELECT relname,
n_live_tup, n_dead_tup,
last_autovacuum, last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;Saat Pembersihan Otomatis Tertinggal
Gejala:
- Pembengkakan bertambah
- n_dead_tup tinggi pada pg_stat_user_tables
- Rencana kueri memburuk
Perbaikan: tingkatkan autovacuum_max_workers, turunkan faktor skala per tabel, dan perbaiki transaksi panjang yang menghambat vacuum.
Pencatatan Vacuum
Untuk penyetelan, catat vacuum yang lambat:
log_autovacuum_min_duration = '500ms'
-- Logs every autovacuum action that took longer than 500ms.FREEZE
VACUUM sesekali "membekukan" tuple lama untuk mencegah perputaran xid. Pembersihan otomatis yang agresif menjaga usia freeze tetap rendah dan mencegah kejadian perputaran darurat.
Ringkasan
Pembersihan otomatis sangat penting; sesuaikan berdasarkan beban kerja.
- Pengaturan pembersihan otomatis per tabel untuk tabel yang sering berubah
- VACUUM FULL adalah pilihan terakhir — utamakan pg_repack
- Pantau n_dead_tup dan last_autovacuum
- Perbaiki transaksi panjang yang menghambat pembersihan
Pemeriksaan Singkat
Apa cara paling aman untuk mengambil kembali ruang disk pada tabel produksi yang sering berubah tanpa kunci yang memblokir dalam waktu lama?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “VACUUM, autovacuum, vacuum_cost_delay” gratis?
Ya — teks lengkap “VACUUM, autovacuum, vacuum_cost_delay” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “VACUUM, autovacuum, vacuum_cost_delay”?
Sesuaikan ambang autovacuum, vacuum_cost_delay, dan VACUUM paralel untuk tabel besar Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “VACUUM, autovacuum, vacuum_cost_delay” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- MVCC dan Penyebab Bloat
- VACUUM, autovacuum, vacuum_cost_delay
- ANALYZE dan pg_statistic
- Pemindaian Hanya-Indeks dan Peta Visibilitas