我們在測試和開發環境中遇到了一個問題,該函數在被調用時運行速度相當慢來自.Net應用程序。當我們直接從管理工作室調用這個函數時,它工作正常。當從.Net應用程序調用SQL函數時vs與在Management Studio中調用相同的調用時爲什麼會有性能差異
下面是當他們被異形的差異: 從應用:
CPU:906
閱讀次數:61853
寫入:0
時間:926
從SSMS:
CPU: 15
閱讀次數:11243
寫:0
持續時間:31
現在我們已經確定,當我們從應用程序運行時編譯功能的性能恢復到我們所期望和性能配置相匹配的,當我們從SSMS中運行它,我們得到什麼。它會以隨機間隔再次開始減速。
我們在prod中沒有看到它,但它們可能部分是因爲每週都會重新編譯一次。
那麼,什麼可能導致這樣的行爲?
編輯 -
我們終於能夠解決這個問題,重構變參數來處理參數嗅探似乎已經做了訣竅......我們在這裏所做的一個片段:感謝您的幫助。
-- 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
請張貼實際的代碼... – gbn 2010-05-07 05:11:25
我們將研究參數嗅探解決方案。這篇文章給了它很好的解釋,以及如何解決它。 http://elegantcode.com/2008/05/17/sql-parameter-sniffing-and-what-to-do-about-it/ – 2010-05-07 16:17:01