Vakum ve otovakuumun amacını açıklama

Tamamlandı

Bir satır güncelleştirildiğinde, her güncelleştirme bir ekleme ve silmeden oluşur. Değiştirilen veriler eklenir ve eski satır silinir. PostgreSQL'de, bir sorun olduğunda işlemin geri alınabilmesi için özgün satır korunur. Özgün satırı silmek yerine, daha sonra silinmek üzere işaretlenir ve sonuçta hala diskte olan ancak artık gerekli olmayan "geçersiz" satırlar (veya tanımlama kümeleri) elde edilir.

Aptly adlandırılmış vakum işlemi bu satırları kalıcı olarak kaldırır, aksi takdirde kaybolabilecek alanı geri alır ve istatistikleri güncelleştirir.

Ölü satırları temizleme işlemine vakum işlemi denir. Bu satırlar diskte bırakılırsa, veritabanı gereken daha fazla disk alanı kaplar ve veritabanı "bloat" olarak bilinir. VACUUM işlemi aşağıdaki nedenlerle önemlidir:

  • Silinmek üzere işaretlenmiş satırların kapladığı disk alanını kurtarmak için.
  • Sorgu planlayıcısı tarafından kullanılmak üzere veri istatistiklerini güncelleştirmek için.
  • Yalnızca dizin taramalarını hızlandıran görünürlük haritasını güncelleştirmek için.
  • İşlem kimliği kaydırması nedeniyle eski verilerin kaybına karşı koruma sağlamak.

PostgreSQL, satırları kalıcı olarak silmek ve alanı geri kazanmak için vacuum adlı bir işlem kullanır. Alanı geri kazanmanın yanı sıra dizinlerin etkili olmasını da sağlar.

Vakum işlemi otomatik olarak tetiklendiğinde, işlem otomatik vakum olarak bilinir. İşlemin çalıştırılması gereken sıklık, güncelleştirme ve silme işlemlerinin miktarına bağlıdır. Ayrıca, silinmek üzere işaretlenmiş satır sayısını da izleyebilirsiniz.

Vakum işlemini düzenli aralıklarla çalıştırmak aşağıdakileri yapmamanızı sağlar:

  • Gerekli veritabanlarından ve tablolardan daha büyük olan "şişkinlik" deneyimini yaşayın.
  • Büyük, en iyi olmayan dizinlere sahip olun.
  • Artan G/Ç deneyimi.

Bir tablodaki "ölü" satır sayısını izlemek için SELECT sorgusu çalıştırabilirsiniz:

SELECT relname, n_dead_tup, n_live_tup
FROM pg_catalog.pg_stat_all_tables
ORDER BY n_dead_tup DESC;

Vakum işlemini el ile çalıştırmak için şunu yazın:

vacuum