Bazı kullanıcılar için sorgu yavaş


11

Benim için her zaman hızlı (SQL Server yerel bir yöneticiyim) ama kullanıcı grubu (gerekli izinlere sahip etki alanı grubu) için hızlı bir C # .NET web uygulaması denilen birkaç sorgu var, sorgu inanılmaz derecede yavaş uygulamada zaman aşımına uğrayan nokta.

Aynı sorgunun farklı kullanıcılar için farklı çalışmasına ne sebep olur?

Daha fazla bilgi:

  • Sorgu, saklı yordam değil, C # kodunda satır içi SQL
  • Uygulama etki alanı kimlik doğrulamasını kullanıyor ve hem kullanıcı hem de ben sorguyu uygulama üzerinden çalıştırıyoruz
  • Sorun farklı planlar ve önbelleklenmiş gibi görünüyor, bu yüzden farklı kullanıcılar için farklıydı. Önbellek bir şey etkiliyor çünkü şimdi sorgu uygulaması aracılığıyla benim için yavaş ve SQL Server Management Studio'da hızlı.

2
Aşağıdaki soruları kontrol edin . Aynı durumda olduğunuzu görebilirsiniz. Diyelim ki önce bunu ve diğerini deneyin .
Marian

3
Yavaş sorguda (ses) bekleme türleri (sys.dm_os_waiting_tasks) nedir ve her birinin gerçek yürütme planları nelerdir (hızlı, yavaş)?
Thomas Stringer

2
Önceki yorumlarla anlaşın. İlk düşüncem de parametre koklama olurdu. Planların farklı olup olmadığını kontrol etmek ilk adım olmalıdır.
Martin Smith

4
Parametreler aynı ise (bununla kastedildiğini varsayıyorum exact same query), parametre koklaması olmamalıdır (kullanıcılar yanlış parametreler için kötü bir plan alır), ancak kullanıcılar aynı parametre için farklı planlar alıyor (s). Hızlı kullanıcı ve yavaş kullanıcı için karşılaştırabileceğiniz quoted_identifierve gibi ayarlardan kaynaklanabilir veya şema öneki olmadan farklı varsayılan şemalara ve nesnelere başvurulması olabilir. Parametre koklaması hala söz konusu olabilir (bu nedenle bunlardan birinin neden kötü bir planı vardır). arithabortsys.dm_exec_sessions
Aaron Bertrand

1
RE: Düzenlemeniz diğer kullanıcılarla aynı varsayılan şemaya sahip misiniz? Yavaş ve hızlı koşular için icra planlarını henüz yakalamadınız mı?
Martin Smith

Yanıtlar:


5

Parametreler aynı ise (bununla kastedildiğini varsayıyorum exact same query), parametre koklaması olmamalıdır (kullanıcılar yanlış parametreler için kötü bir plan alır), ancak kullanıcılar aynı parametre için farklı planlar alıyor (s). Hızlı kullanıcı ve yavaş kullanıcı için karşılaştırabileceğiniz quoted_identifierve gibi ayarlardan kaynaklanabilir veya şema öneki olmadan farklı varsayılan şemalara ve nesnelere başvurulması olabilir. Parametre koklaması hala söz konusu olabilir (bu nedenle bunlardan birinin neden kötü bir planı vardır).arithabortsys.dm_exec_sessions


3

Bunun iki nedeni gördüm: 1, parametre koklama 2, bağlantı ayarları farklı. Whoisactive çalıştırırsanız , size farklı bağlantı özelliklerini gösterecektir. Aslında bu konuda bir blog yazısı var, ancak şirkete özel bilgileri ondan temizlemedim. (ne de blogumu henüz etkinleştirmedim);)


0

Deneyin: Her EXEC ve tablo referansında şema belirtin. Örneğin, EXEC dbo.MyProc

Çatışmalar olabilir (Martin Smith'in önerdiği gibi - 'aynı varsayılan şema'?) Veya yeniden derleme


0

Bu SQL Server'da bir hata gibi görünüyor. SQL Server 2008 ile bu hatayı yaşıyorum. Yeni sürümleri test etmedim. Yönetici olarak giriş yapabilir ve bu sorguyu çalıştırabilir ve 0 saniye içinde yanıt alabilirim:

select ROUTINE_NAME from INFORMATION_SCHEMA.ROUTINES ORDER BY ROUTINE_NAME

Sonra daha az izinleri olan bir kullanıcı olarak oturum, aynı sorguyu çalıştırın ve yanıt 45 saniye sürer.

Bu defalarca tutarlıdır. Yönetici ve diğeri yönetici olmayan biri için iki sorgu pencerem arasında ileri geri sıçrarsam, yönetici olmayan her zaman yaklaşık 45 saniye sürer ve yönetici 0 saniye sürer.


Sorunun yorumlarında sorulduğu gibi - her iki kullanıcı da aynı varsayılan veritabanına sahip mi ve sorgular aynı veritabanında mı yürütülüyor? Ve bunun bir hata olduğunu belirten bir belgeye işaret edebilir misiniz, yoksa sizin fikriniz mi? Yanlış olduğunu söylememek, sadece bir fıkra ötesinde bir şey aramak.
RDFozz

Yanıtınızda belirlediğiniz sorun SQL Server 2008'de tekrarlanamıyor gibi görünüyor. select ROUTINE_NAME from INFORMATION_SCHEMA.ROUTINES ORDER BY ROUTINE_NAMEHiçbir açıklık hakkı verilmeyen SA olmayan bir oturum açma için verileri sürekli olarak döndürür.
Max Vernon
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.