Estamos teniendo un problema en nuestros entornos de prueba y desarrollo con una función que funciona muy lentamente cuando se llama desde una aplicación .Net. Cuando llamamos a esta función directamente desde el estudio de gestión, funciona bien.¿Por qué hay diferencias de rendimiento cuando se llama a una función SQL desde la aplicación .Net cuando se hace la misma llamada en Management Studio
Aquí están las diferencias cuando se perfilan: de la aplicación:
CPU: 906
Lecturas: 61853
escribe: 0
Duración: 926
De SSMS:
CPU: 15
Lecturas: 11243
Escribe: 0
Duración: 31
Ahora hemos determinado que cuando volvamos a compilar la función, el rendimiento vuelve a ser lo que esperamos y el perfil de rendimiento cuando se ejecuta desde la aplicación coincide con el de lo que obtenemos cuando lo ejecutamos desde SSMS. Empezará a ralentizarse de nuevo a lo que parecen intervalos aleatorios.
No hemos visto esto en prod, pero pueden ser en parte porque todo se recompila allí semanalmente.
Entonces, ¿qué podría causar este tipo de comportamiento?
Editar -
Finalmente fueron capaces de hacer frente a este y la reestructuración de las varables para hacer frente a la inhalación de parámetro parece haber hecho el truco ... un fragmento de lo que hicimos aquí: Gracias por su ayuda.
-- 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
fija por favor el código real ... – gbn
Vamos a ver la solución de detección de parámetros. Este artículo dio una explicación bastante buena y cómo resolverlo. http://elegantcode.com/2008/05/17/sql-parameter-sniffing-and-what-to-do-about-it/ –