0Pricing
SQL Academy · Ders

VACUUM, autovacuum, vacuum_cost_delay

Büyük tablolar için autovacuum eşiklerini, vacuum_cost_delay'i ve paralel VACUUM'u ayarlayın.

VACUUM, autovacuum, vacuum_cost_delay, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Üç VACUUM Modu

  • VACUUM (tembel) — ölü satırları geri kazandırır, boş alan haritasını günceller, özel kilit almaz
  • VACUUM FULL — tabloyu yeniden yazar; özel kilit alır; diski OS'ye geri verir
  • VACUUM ANALYZE — VACUUM işlemini ve planlayıcı istatistiklerinin yenilenmesini tek seferde gerçekleştirir

VACUUM'u Manuel Çalıştırma

Otomatik VACUUM etkin olsa bile bazen yararlıdır:

VACUUM (VERBOSE) orders;
VACUUM (VERBOSE, ANALYZE) orders;
VACUUM (PARALLEL 4) orders;       -- parallel index cleanup (PG 13+)

Otomatik VACUUM Süreci

Bir arka plan başlatıcısı, eşikleri aşan tabloları VACUUM yapan çalışan süreçleri başlatır. Varsayılan olarak birkaç çalışan tüm kümeyi işler.

Tablo Bazında Ayarlama

Yoğun kullanılan tablolar agresif otomatik VACUUM'dan yararlanır:

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

VACUUM G/Ç'sini sınırlar; böylece ön plan sorgularını olumsuz etkilemez. PG 12+ varsayılanı 2 ms'dir — genellikle yeterlidir. SSD'ler için bunu düşürebilirsiniz:

autovacuum_vacuum_cost_delay = 2ms
-- Lower delay = faster vacuum, more I/O usage.
-- Set per-table for hot tables that need faster cleanup.

Paralel VACUUM

VACUUM, PG 13'ten beri dizin temizliğini paralelleştirir:

VACUUM (PARALLEL 4) big_table;
-- Each index cleaned by a parallel worker (up to max_parallel_maintenance_workers).

VACUUM FULL: Ne Zaman ve Neden

Tabloyu sıfırdan yeniden yazar — alanı OS'ye geri verir. ACCESS EXCLUSIVE alır. Yalnızca son çare olarak veya bunun yerine pg_repack ile kullanın.

VACUUM FULL orders;
-- Locks orders; rewrites; on huge tables this is hours of downtime.

pg_repack: Çevrimiçi Alternatif

Tabloyu çevrimiçi olarak yeniden yazar — tam kilit almaz. VACUUM FULL ile aynı etkiyi yaratır ancak üretim ortamına daha uygundur:

pg_repack -d mydb -t orders
-- Builds a shadow table, sync, swaps in.

Otomatik VACUUM'u İzleme

Son VACUUM/ANALYZE zamanlarını ve ölü satır sayılarını görün:

SELECT relname,
       n_live_tup, n_dead_tup,
       last_autovacuum, last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;

Otomatik VACUUM Geride Kaldığında

Belirtiler:

  • Şişme artar
  • pg_stat_user_tables içindeki n_dead_tup değeri yüksektir
  • Sorgu planları kötüleşir

Çözümler: autovacuum_max_workers değerini artırın, tablo başına ölçekleme katsayısını düşürün, VACUUM'u engelleyen uzun işlemleri düzeltin.

VACUUM Günlük Kaydı

Ayarlama için yavaş VACUUM işlemlerini günlük kaydına yazın:

log_autovacuum_min_duration = '500ms'
-- Logs every autovacuum action that took longer than 500ms.

FREEZE

VACUUM, xid taşmasını önlemek için eski kayıtları arada bir "dondurur". Agresif otomatik VACUUM, dondurma yaşlarını düşük tutar ve acil taşma olaylarını önler.

Özet

Otomatik VACUUM zorunludur; iş yüküne göre ayarlayın.

  • Yoğun kullanılan tablolar için tablo bazında otomatik VACUUM ayarları
  • VACUUM FULL son çaredir — pg_repack'i tercih edin
  • n_dead_tup ve last_autovacuum değerlerini izleyin
  • Temizlemeyi engelleyen uzun işlemleri düzeltin

Kısa Kontrol

Uzun süreli engelleyici kilit almadan yoğun kullanılan bir üretim tablosunda disk alanını geri kazanmanın en güvenli yolu nedir?

Sıkça Sorulan Sorular

“VACUUM, autovacuum, vacuum_cost_delay” dersi ücretsiz mi?

Evet — “VACUUM, autovacuum, vacuum_cost_delay” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“VACUUM, autovacuum, vacuum_cost_delay” dersinde ne öğreneceğim?

Büyük tablolar için autovacuum eşiklerini, vacuum_cost_delay'i ve paralel VACUUM'u ayarlayın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“VACUUM, autovacuum, vacuum_cost_delay” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. MVCC ve Şişkinliğin Nedenleri
  2. VACUUM, autovacuum, vacuum_cost_delay
  3. ANALYZE ve pg_statistic
  4. Yalnızca INDEX Taramaları ve Görünürlük Haritası
← SQL Academy Sayfasına Dön