Stiamo riscontrando un problema nei nostri ambienti di test e di sviluppo con una funzione che viene eseguita abbastanza lentamente a volte quando viene chiamata da un'applicazione .Net. Quando chiamiamo questa funzione direttamente dallo studio di gestione, funziona bene.Perché ci sono differenze di prestazioni quando viene chiamata una funzione SQL dall'app .Net vs quando viene effettuata la stessa chiamata in Management Studio
Qui ci sono le differenze quando si sono profilate: dall'applicazione:
CPU: 906
legge: 61853
scrive: 0
Durata: 926
Da SSMS:
CPU: 15
Letture: 11243
Scrive: 0
Durata: 31
Ora abbiamo determinato che quando ricompiliamo la funzione, la prestazione ritorna a ciò che ci aspettiamo e il profilo delle prestazioni quando viene eseguito dall'applicazione corrisponde a quello di ciò che otteniamo quando lo eseguiamo da SSMS. Inizierà di nuovo a rallentare in corrispondenza di ciò che appare a intervalli casuali.
Non abbiamo visto questo in prod, ma possono essere in parte perché tutto è ricompilato lì su base settimanale.
Quindi cosa potrebbe causare questo tipo di comportamento?
Edit -
siamo finalmente in grado di affrontare questo e ristrutturare le varables per affrontare con il parametro sniffing sembra aver fatto il trucco ... un frammento di quello che abbiamo fatto qui: Grazie per il vostro aiuto.
-- 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
si prega di inviare il codice vero e proprio ... – gbn
Stiamo esaminando la soluzione di snifing dei parametri. Questo articolo ha dato una buona spiegazione e come risolverlo. http://elegantcode.com/2008/05/17/sql-parameter-sniffing-and-what-to-do-about-it/ –