Otomatik vakum sunucusu parametrelerini yapılandırma

Tamamlandı

Vakum işlemi, iş yükünüz için vakum işlemini iyileştirmenizi sağlayan otomatik vakum sunucusu parametreleri kullanılarak yapılandırılır. Azure portalında PostgreSQL için Azure Veritabanı sunucunuzu seçin ve sol menüden Sunucu Parametreleri'ni seçin. Arama çubuğuna autovacuum girin. Alternatif olarak, aşağıdaki sorguyu kullanarak otomatik vakumun geçerli yapılandırmasını bulmak üzere sistem kataloğu görünümlerini sorgulamak için SQL'i kullanabiliriz.

SELECT *
FROM pg_settings 
WHERE "name" LIKE '%autovacuum%';
Parametre adı Varsayılan Açıklama
autovacuum AÇIK Otomatik vakum sunucusu işlemini etkinleştirir veya devre dışı bırakır. Otomatik vakum her zaman etkinleştirilmelidir.
autovacuum_analyze_scale_factor 0,1 Vakum işlemini tetikleyip tetiklemeyeceğini belirlerken autovacuum_vacuum_threshold eklenecek tablonun bir bölümünü belirtir. Örneğin, 0,2 tablo boyutunun yüzde 20'sidir.
autovacuum_analyze_threshold 50 Herhangi bir tablo için analiz işlemini tetikleme için gereken eklenen, güncelleştirilen veya silinen satır sayısı.
autovacuum_freeze_max_age 200000000 İşlem kimliği kaydırmasını önlemek için tabloda otomatik vakum tetiklemeden önce en büyük yaş (işlemlerde).
autovacuum_max_workers 3 Otomatik vakum başlatıcısı dışında herhangi bir anda çalışan en fazla otomatik vakum işlemi sayısı.
autovacuum_multixact_freeze_max_age 400000000 Çok faktörlü kaydırmayı önlemek için bir tabloda otomatik vakum tetiklemeden önce en büyük yaş (multixact cinsinden).
autovacuum_naptime 60 sn Veritabanındaki otomatik vakum işlemleri arasındaki gecikme. Her turda, daemon veritabanını inceler ve bu veritabanındaki tablolar için gereken VACUUM ve ANALYZE komutlarını düzenler.
autovacuum_vacuum_cost_limit -1 Otomatik vakum işlemleri için maksimum maliyet. Varsayılan değer olan -1 belirtilirse, normal vacuum_cost_limit değeri kullanılır. Birden fazla çalışan olduğunda, değer çalışan otomatik vakum çalışanları arasında orantılı olarak dağıtılır. Her çalışanın toplamı bu değişkenin değerini aşamaz.
autovacuum_vacuum_insert_threshold 1000 Herhangi bir tablo için vakumu tetikleyen eklenen satır sayısı.
autovacuum_vacuum_scale_factor 0,2 autovacuum_vacuum_threshold ile kullanılır. Vakumun tetiklenip tetiklenmeyeceğine karar vermek için kullanılan tablonun bölümü.
autovacuum_vacuum_threshold 50 Bir tablo için vakumu tetikleyen güncelleştirilmiş, eklenen veya silinen satırların en az sayısı.
autovacuum_vacuum_insert_scale_factor 0,2 Vakum işlemini tetikleme amacıyla autovacuum_vacuum_insert_threshold eklenecek tablo boyutunun bir bölümünü belirtir.
autovacuum_work_mem -1 KB Her otomatik vakum işleminin kullanabileceği maksimum bellek.
log_autovacuum_min_duration -1 Otomatik vakum eylemleri tarafından günlüğe kaydedilen milisaniye cinsinden süre.

Vakum işlemi çok sık veya çok seyrek çalıştırılmamalıdır. En uygun sıklık iş yüküne bağlıdır. İş yükünüz için en uygun olanı bulmak için otomatik vakum parametrelerinin her birini test edin. Vakumlama işleminin maliyeti şunları içerir:

  • Vakum çalıştırıldığında veri sayfaları kilitlenir.
  • Vakum işlemi işlem süresini ve belleği tüketir.

Vakumu tablo düzeyinde iyileştirme

PostgreSQL için Azure Veritabanı'de, otomatik vakum parametreleri tablo düzeyinde ayarlanabilir. Bazı tablolar diğerlerinden daha fazla güncelleştirildiğinde performansı artırabilir. Tablo düzeyinde otomatik vakum ayarlama örneği:

ALTER TABLE mytable SET (autovacuum_vacuum_threshold = 1000);
​ALTER TABLE mytable SET (autovacuum_vacuum_scale_factor = 0.1);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_limit = 1000);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_delay = 10);

Tablo düzeyinde, otomatik vakum zaman uyumlu bir işlemdir. Bir tablonun sahip olduğu ölü tanımlama grubu yüzdesi ne kadar büyükse, otomatik vakum işlemi tarafından tahakkuk eden "maliyet" de o kadar fazla olur.

Yüksek güncelleştirme oranına sahip tablolar için tabloyu birden çok tabloya bölmeyi göz önünde bulundurun. Bu bölme, otomatik vakumu paralelleştirmeye ve herhangi bir tablonun "maliyetini" azaltmaya yardımcı olur. Paralel otomatik vakum çalışanlarının sayısını da artırabilirsiniz.