В наших средах тестирования и разработки возникла проблема с функцией, которая иногда запускается довольно медленно при вызове из приложения .Net.Когда мы вызываем эту функцию прямо из студии управления, она работает нормально.
Вот различия, когда они профилированы: Из приложения:
Процессор: 906
Считывает: 61853
Пишет: 0
Продолжительность: 926
из SSMS:
ЦП: 15
Чтения: 11243
Запись: 0
Продолжительность: 31
Теперь мы определили, что при перекомпиляции функции производительностьвозвращает к тому, что мы ожидаем, и профиль производительности при запуске из приложения совпадает с тем, что мы получаем при запуске из SSMS.Он начнет снова замедляться с тем, что кажется случайным интервалом.
Мы не видели этого в prod, но они могут быть частично, потому что все перекомпилируется там еженедельно.
Так чтоможет вызвать такое поведение?
Edit -
Мы наконец-то смогли справиться с этим, и реструктуризация varables, чтобы справиться с анализом параметров, похоже, сделала свое дело ... фрагмент того, что мы сделали здесьСпасибо за вашу помощь.
-- create set of local variables for input parameters - this is to help performance - vis a vis "parameter sniffing"
declare @dtDate_Local datetime
,@vcPriceType_Local varchar(10)
,@iTradingStrategyID_Local int
,@iAccountID_Local int
,@vcSymbol_Local varchar(10)
,@vcTradeSymbol_Local varchar(10)
,@iDerivativeSymbolID_Local int
,@bExcludeZeroPriceTrades_Local bit
declare @dtMaxAggregatedDate smalldatetime
,@iSymbolID int
,@iDerivativePriceTypeID int
select @dtDate_Local = @dtDate
,@vcPriceType_Local = @vcPriceType
,@iTradingStrategyID_Local = @iTradingStrategyID
,@iAccountID_Local = @iAccountID
,@vcSymbol_Local = @vcSymbol
,@vcTradeSymbol_Local = @vcTradeSymbol
,@iDerivativeSymbolID_Local = @iDerivativeSymbolID
,@bExcludeZeroPriceTrades_Local = @bExcludeZeroPriceTrades