SORU
17 EKİM 2008, Cuma


Parametresi Algılaması (veya) Sızdırma SQL Server

Bir süre önce kullanıcılar için oldukça çok koştum bir sorgu vardı. Hala evrim ve geçmesi oldu ama sonunda ve oldukça hızlı bir şekilde stablised koştu, bir saklı yordam oluşturdu.

Şimdiye kadar her şey normal.

Saklı yordam, ama köpek yavaştı. Sorgu ve proc, ama hız değişimi arasında malzeme farkı çok büyük.

[SQL Server yapıyoruz arka plan, 2005.]

Dostu yerel bir DBA artık burada çalışan bir saklı yordam bir baktı ve "parametre sızdırma!" dedi (Düzenleme:belki de'', onu arayıp bulmak için çalıştı. Google vurur yetersizliği açıklıyor) koklama parametre olarak bilindiği gibi gözükse

Biz soyutlanmış bazı saklı yordam için bir tane, kaydırılan arama için bu yeni iç proc içine önceden varolan bir dış denilen dış ve, hey presto, olduğu gibi hızlı olarak özgün sorgu.

Peki, ne yapıyorsun? Biri parametre sızdırma açıklayabilir mi?

Bonus Kredi için

  • bunu önlemek için nasıl vurgulayarak
  • Olası neden tanımak için nasıl düşündüren
  • durumu hafifletmek için alternatif stratejiler, örneğin istatistikler, indeksler, anahtarlar, tartışın

CEVAP
19 EKİM 2008, Pazar


BİLGİNİZE - SQL 2005 ve parametreleri ile saklı procs ile çalışırken başka bir şeyin farkında olmak gerekir.

SQL Server kullanılan ilk parametre saklı yordam yürütme planı derlenir. Eğer öyleyse bu çalıştırın:

usp_QueryMyDataByState 'Rhode Island'

Yürütme planı en küçük bir devletin verileri ile çalışır. Ama birisi dönüp çalışır:

usp_QueryMyDataByState 'Texas'

Yürütme planı Rhode-Island boy için tasarlanmış veri Teksas büyüklüğünde olduğu gibi verimli veri olmayabilir. Bu sunucuda yeni oluşturulan yürütme planı ilk kullanılan her ne ise hedef olacaktır çünkü yeniden başlatıldığında şaşırtıcı sonuçlar üretebilir - mutlaka iyi değil. Plan eğer istatistikleri yeniden yapmak büyük bir sebebi vardır kadar çekirdekler, olmayacak.

Bu sorgu planları devreye giriyor ve SQL Server 2008 bu DBA belirli bir sorgu planı pimi yerine uzun vadeli parametreleri ilk adı ne olursa olsun yardım yeni özellikleri bir sürü sunuyor.

Benim endişem, saklı yordam yeniden ne zaman, yürütme planı yeniden derlemek için zorladın. En sevdiğiniz parametre ile aradın, ve tabii ki hızlı oldu ama sorun saklı proc olmayabilir. Saklı yordam parametreleri alışılmadık bir set ve böylece, verimsiz bir sorgu planı konusunda bazı çekirdekler olduğunu olabilir. Sabit bir şey olmayabilir ve bir sunucu yeniden aynı sorunla karşı karşıya olabilir veya sorgu planı çekirdekler alır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008
  • Watcher3223

    Watcher3223

    15 Kasım 2007