Endeks eklemenin maliyet / faydası nasıl belirlenir?


10

Craig Ringer'e göre :

Referans tarafındaki yabancı anahtar sütunlarınızda (veya dahil) bir dizin oluşturmak genellikle iyi bir fikir olsa da, gerekli değildir. Her endeks Eğer her bir performans maliyeti ödersiniz bir yavaşlatır aşağı hafifçe işlemleri DML eklemek INSERT, UPDATEya da DELETE. Endeks nadiren kullanılırsa, sahip olmaya değmeyebilir.

Endeks eklemenin yararının maliyetini aşıp aşmadığını nasıl belirlersiniz?

Bir endeks eklemeden önce / sonra birim testlerini profillendiriyor musunuz ve genel bir performans kazancı mı kontrol ediyorsunuz? Yoksa daha iyi bir yol var mı?


pg_stat_user_indexesdizin kullanımı hakkında bilgi göstererek bu konuda size rehberlik eder. Bakım maliyetlerini tahmin etmek için tablo yazma etkinliğinize bakabilirsiniz, pg_stat_user_tablesancak SICAK nedeniyle, tüm güncellemelerin dizine dokunması gerekmez, böylece biraz fazla tahmin edebilirsiniz.
Craig Ringer

@CraigRinger, bu çok yardımcı oldu. Teşekkür ederim!
Gili

Neredeyse tamamen pgBadger'a güveniyorum. Ve bağırsaklarım.
Colin 't Hart

Yanıtlar:


4

Dizin kullanımı verilerinizin yapısına ve verilerinizin seçiciliğine bağlıdır. Bunları kullanmadığınız sorgular yaparsanız bunlar pahalıdır. Onları etkili bir şekilde kullanırsanız harika bir araçtır. EXPLAINSadece komutların planlanması veya planlanması ve yürütülmesi ( ) için bir sorgu planlayıcısı ve sorgu planlayıcısı analizi ( EXPLAIN ANALYZE) vardır.

Ve harika bir çevrimiçi kitap var: önerilen dizin kullanımı hakkında dizin luke kullanın


4
Başparmak kuralı güzel, ancak bu durumda çok genel. Uygulamamın gerçek çalışma zamanı davranışına dayalı dizin ekleme / kaldırma önerecek somut bir araç / ölçüm arıyorum.
Gili


1

Temel kuralları seçin ve uygulayın. Örneğin, her zaman bir yabancı anahtarın başvuru tarafında bir dizin oluştururum.

Performansınızı, ürünün gereksinimlerine göre performans kriterlerine göre test ettiğinizden emin olun. Örneğin, sistemin dakikada 100 POST istek türü X için gelen bir yükü işlemesi gerekir.

Performans gereksinimlerinizi karşılayamıyorsanız, modelinizi hassaslaştırın, muhtemelen bu süreçte temel kurallarınızı ihlal edin.

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.