Kötü sorgu performansı


10

Çalışması gereken veri miktarına bağlı olarak genellikle 0.5-6.0 saniyede çalışan büyük (10.000+ satır) bir prosedürümüz var. Geçen ay içinde FULLSCAN ile bir istatistik güncellemesi yaptıktan sonra 30+ saniye sürdü. Yavaşladığında, bir sp_recompile, gece istatistikleri işi tekrar çalışana kadar sorunu "düzeltir".

Yavaş ve hızlı yürütme planlarını karşılaştırarak, onu belirli bir tabloya / dizine daralttım. Yavaş çalıştığında belirli bir dizinden ~ 300 satır döndürüleceğini tahmin eder, hızlı çalıştığında 1 satır tahmin eder. Yavaş çalıştığında, dizin üzerinde bir arama yaptıktan sonra bir Tablo Biriktirme kullanır, hızlı çalıştığında Tablo Biriktirme yapmaz.

DBSS SHOW_STATISTICS kullanarak, excel dizin histogramı grafik. Normalde grafiğin daha "tepeler" olmasını beklerdim, ama bunun yerine, bir dağa benziyor, en yüksek nokta grafikteki diğer değerlerden 2x-3x daha yüksek.

Endeks Histogramı

İstatistikleri FULLSCAN olmadan güncellersem daha normal görünür. Daha sonra FULLSCAN ile tekrar çalıştırırsam, yukarıda tarif ettiğim gibi görünüyor.

Bu bir parametre koklama sorunu gibi hissettiriyor ve özellikle yukarıdaki (görünüşte) garip dizin dağılımı ile ilgili.

Proc tablo değerli bir parametreyi alır, tablo değerli bir parametrede parametre koklaması meydana gelebilir mi?

DÜZENLEME: Proc ayrıca ikisi isteğe bağlı olan, ikisi başlangıç ​​ve bitiş tarihi olan 12 parametre daha alır.

Histogram garip mi, yoksa yanlış ağacı havlıyor muyum?

Kesinlikle sorguyu ayarlamak ve / veya benim dizinleme ayarlamaya çalışıyorum rahat. Bu harika bir çözümse, o zaman sorum daha çok çarpık histogram hakkında.

Bunun bir PK IDENTITY kümelenmiş endeksi olduğunu belirtmeliyim. Birbirimizle konuşan iki sistemimiz var, biri eski bir sistem, diğeri yeni bir ev sistemi. Her iki sistem de benzer verileri depolar. Eski sisteme işler eklendiğinde, veriler gelmese bile (bir RESEED yapılır), yeni sistemdeki bu tabloda PK'nın senkronize olmasını sağlamak için artırılır. Dolayısıyla bu sütundaki numaralandırmada bazı boşluklar olabilir. Kayıtlar nadiren silinir.

Herhangi bir düşünce büyük mutluluk duyacağız. Daha fazla bilgi topladığım / eklediğim için çok mutluyum.


sadece prosedüre parametre TVP yoksa başka parametreler de vardır?
Martin Smith

1
Yavaş ve hızlı plan XML'e bakarsanız, fark ParameterCompiledValuebu diğer parametreler için farklı olarak açıklanabilir mi?
Martin Smith

1
Derlediği tarih aralığı önemli ölçüde daha dardır (31 yerine 5 gün). Çağrıların çoğunluğu için bu süreç bir ay sürecek. Bu ifadeye yeniden derleme ipucu eklemeyi deneyebilirim.
Mark Wilkinson

1
Bu kesinlikle bir kimlik sütunu için garip bir dağılım gibi görünüyor. Ben sadece bu makaleyi okuyordum ve bu iki plan üzerinde tahmin edilen ve gerçek için ne gördüklerini ayrıntılı bir şekilde inceleyebilir misiniz? > blogs.technet.com/b/mspfe/archive/2013/04/18/…
Richard Schweiger

1
Açık olmak gerekirse: Grafiği tam olarak nedir? RANGE_HI_KEYx ekseni üzerinde, ama y ekseninde ne var? EQ_ROWS? RANGE_ROWS? Bunların toplamı?
Paul White 9

Yanıtlar:


3

Bu, parametre koklamasıyla ilişkilendirildi. Bu sorgunun bazı garip biçimli sürümleri, istatistikler yeniden oluşturulduktan SONRA yürütüldü. Bu nedenle önbelleğe alınan plan, çağrıların çoğunu temsil etmiyordu. Tarih parametrelerini yerel değişkenlere kopyalama hilesini kullandım ve bu iyi çalışıyor, performans üzerinde çok az veya hiç etkisi yok. Bu, histogramın neden bu kadar "kapalı" göründüğüne cevap vermiyor, ancak performans sorunlarımı açıklıyor.

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.