PostgreSQL'in agresif bir şekilde veritabanımı otomatik olarak süpürmesini sağlamaya çalışıyorum. Şu anda otomatik vakumu şu şekilde yapılandırdım:
- autovacuum_vacuum_cost_delay = 0 # Maliyete dayalı vakumu kapat
- autovacuum_vacuum_cost_limit = 10000 #Maks değeri
- autovacuum_vacuum_threshold = 50 #Default değeri
- autovacuum_vacuum_scale_factor = 0.2 #Default değeri
Otomatik boşluğun sadece veri tabanı yüklenmediğinde devreye girdiğini fark ettim, bu yüzden canlı kayıtlardan çok daha fazla ölü delik olduğu durumlara giriyorum. Örnek için ekteki ekran görüntüsüne bakın. Masalardan birinde 23 canlı tup var, ancak 16845 ölü tup boşluk bekliyor. Delilik bu!
Test işlemi bittiğinde ve veritabanı sunucusu boşta kaldığında otomatik vakum devreye giriyor; bu, ölü tuple sayısı% 20'lik canlı tuples + 50'yi aştığında otomatik vakumun tekmelemesini istediğim gibi değil. yapılandırdı. Sunucu boştayken otomatik vakum yapma bana, üretim sunucusunun sürekli bir süre boyunca 1000 saniyelik güncelleme / sn'ye ulaşması bekleniyor, bu yüzden sunucu yüklenirken bile otomatik vakum kullanmam gerekiyor.
Kaybettiğim bir şey var mı? Sunucu ağır yük altındayken otomatik vakum çalışmasını nasıl zorlarım?
Güncelleme
Bu kilitleme sorunu olabilir mi? Söz konusu tablolar, bir son ekleme tetiği ile doldurulmuş özet tablolardır. Bu tablolar, aynı satıra eşzamanlı yazmaları önlemek için PAYLAŞMA REKLAMI ÖZEL modunda kilitlenir.