SQL Server 2000 ile yaşadığımız bir sorunu anlamaya çalışıyorum. Biz orta derecede işlem yapan bir web sitesiyiz sp_GetCurrentTransactions
ve bir customerID ve iki tarih kabul eden adlı bir saklı proc var .
Artık tarihlere ve müşteriye bağlı olarak, bu sorgu sıfırdan 1000 saniyeye kadar olan satırları döndürebilir.
Sorun: Yaşadığımız şey, birden bire Execution Timeout Expired
belirli bir istemci için depolanan proc'u yürütmeye çalışırken bir takım hatalar (tipik olarak veya benzer) alacağımızdır . Bu yüzden sorguyu inceliyoruz, SSMS'de çalıştırıyoruz ve 30 saniye sürdüğünü buluyoruz. Bu yüzden depolanan proc'u yeniden derliyoruz ve -bang- şimdi 300ms'de çalışıyor.
Bu konuda DBA'mızla konuştum. Saklı işlemi yarattığımızda veritabanının bir sorgu planı oluşturduğunu söyledi. Bu parametre kümesi için iyi bir plan olduğunu söyledi, ancak belirli bir parametre kümesini atarsanız, plan bu veriler için en iyi plan olmayacaktır ve bu yüzden yavaş çalıştığını göreceksiniz.
Bana sunulan seçenekler, bu sorgu sorgusu depolanan bir proc ve geri her çalıştırmada oluşturulan yürütme planı olan dinamik SQL içine taşımadır.
Bu bana geri adım gibi geliyor ve bunun etrafında bir yol olması gerektiğini hissediyorum. Bu sorunla başa çıkmanın başka bir yolu var mı?
Her türlü yanıt takdir edilmektedir.