dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Script #4
postgresql
Performanceread-onlyMin Version: 9.2

PostgreSQL'de Kullanılmayan İndeksleri Bulma

Hiç taranmamış, unique veya primary key olmayan indeksleri boyutlarıyla listeler. Gereksiz yazma maliyetini ve disk alanını geri kazanmak için temizlik adayı çıkarır.

#index#unused-index#pg_stat_user_indexes#cleanup
postgresql · sql
SELECT s.schemaname, s.relname AS table_name, s.indexrelname AS index_name,
       s.idx_scan,
       pg_size_pretty(pg_relation_size(s.indexrelid)) AS index_size
FROM pg_stat_user_indexes s
JOIN pg_index i ON i.indexrelid = s.indexrelid
WHERE s.idx_scan = 0
  AND NOT i.indisunique
  AND NOT i.indisprimary
ORDER BY pg_relation_size(s.indexrelid) DESC
LIMIT 30;
Operasyonel Notlar & İyileştirme Aksiyonu

İstatistikler son sıfırlamadan beri geçerlidir (`pg_stat_database.stats_reset`). Replica'larda kullanılan indeksleri de kontrol edin. Silmeden önce `DROP INDEX CONCURRENTLY` kullanın.

Üretim Güvenliği & Çalıştırma Standartları
  • Bu script salt okunur (read-only) teşhis için tasarlanmıştır; doğrudan veri veya şema değişikliği yapmaz.
  • Ağır yük altındaki üretim sunucularında çalıştırmadan önce hedef veritabanı sürümünü (Min. Sürüm: 9.2) doğrulayın.
  • İlişkili oturumu sonlandırma veya indeks silme gibi yazma etkili aksiyonlar için notlar bölümündeki komutları temkinli uygulayın.