0Pricing
SQL Academy · Pelajaran

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 eksklusif
  • VACUUM FULL — menulis ulang tabel; kunci eksklusif; mengembalikan ruang disk ke OS
  • VACUUM 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

  1. MVCC dan Penyebab Bloat
  2. VACUUM, autovacuum, vacuum_cost_delay
  3. ANALYZE dan pg_statistic
  4. Pemindaian Hanya-Indeks dan Peta Visibilitas
← Kembali ke SQL Academy