Çok sayıda satırı sildikten sonra REINDEX ve VACUUM tablolarına ihtiyacım var mı?


10

Günlük bilgilerini depolayan birkaç tablo içeren bir PostgreSQL veritabanı çalıştırıyorum. Bu bilgiler yalnızca raporlama amaçlıdır ve 30 günden daha eski bir dosyaya dökülür ve veritabanından silinir.

Milyonlarca satır silinebilir ve silindikten sonra her defasında bir REINDEX çalıştırıyoruz.

Bu yeterli mi, yoksa ayrıca bir VAKUM veya VAKUM ANALİZİ çalıştırmalı mıyız? Yoksa REINDEX gerekli değildir ve bunun yerine sadece bir VAKUM veya VAKUM ANALİZİ çalıştırmalıyız?

Otomatik vakumlamaya izin vermediğine inandığım PostgreSQL 8.2.3 kullanıyoruz.


2
Bölümlemeyi düşünmek isteyebilirsiniz, bkz. Postgresql.org/docs/9.0/static/ddl-partitioning.html ; o zaman sadece bölümleri düşürebilir ve vakumlamayı önleyebilirsiniz.
alex

3
Sürüm 8.2.3'te auto_vacuum var, kılavuza bakın, ancak en kısa zamanda güncellemelisiniz. Mevcut 8.2 sürümü 8.2.17'dir. Birkaç güvenlik yaması da dahil olmak üzere 14 yaman kaldı. 8.4 veya hatta 9.0'a yükseltme daha iyi bir fikirdir, auto_vacuum geliştirildi.
Frank Heikens

Yanıtlar:


13

VACUUM, silinen verilerin kullandığı alanın yeniden kullanılmasına ve işlem kaydırmasının önlenmesine izin vereceğinden ve ANALYZE, raporlama sorgularınız için daha iyi sorgu planlarına yol açacak planlayıcı istatistiklerini güncelleyeceğinden bir VAKUM ANALİZİ yapmalısınız.

Bir REINDEX teorik olarak gerekli değildir, ancak indeks bitişik olduğundan daha iyi performansla sonuçlanabilir.

8.2 için ilgili dokümantasyon sayfaları burada (rutin yeniden indeksleme) ve burada (rutin vakumlama) .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.