2017-06-14 124 views
2

我們在一個項目中使用TSQL和Microsoft SQL Server 2016中的R.優化TSQL與R

問題是執行時間,R或連接的使用情況需要200毫秒到600毫秒之間的隨機時間。

我認爲這是一個配置問題,但我從來沒有使用過。的請求

實施例:

EXEC sp_execute_external_script  
     @language = N'R'  
    , @script = N' 
     OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'  
    , @input_data_1 = N' ;'  
     WITH RESULT SETS (([Density] float NOT NULL)); 

執行這個時間取200毫秒至2000ms之間。

如果有人已經使用這種技術,並有一些技巧來優化性能?

N.B:在我們的項目中,我們動態地使用了這種請求,所以有很多請求被執行,我們正在等待所有結果來顯示它們。這需要很長的時間。我希望這是一個ssms問題的配置

回答

0

R腳本的執行時間可能會有所不同,具體取決於R進程是否已經可用於腳本執行。您可以通過使用任務管理器(或Process Explorer)查找運行Rterm.exe進程來驗證這一點。

enter image description here

所以,你會注意到的行爲是第一個請求可能是緩慢的(2000毫秒〜)和後續請求會比較快(200毫秒〜)。

+0

是的,但我們試圖獲得與sql相同的性能,因此〜10-40ms通過請求... – Alexis

+1

如上所示,R腳本在SQL Server進程外運行。由於在進程和附加的R解釋器執行時間之間發送數據的開銷,與原生SQL具有相同的性能是不可行的。 你能簡單地解釋一下你的場景和需求〜10-40ms嗎?你的R腳本是在做預測還是其他類型的數據分析? –

+0

我們只是根據很多參數動態創建R腳本,並使用某些R的本地函數進行一些計算。 顯然,這不是很好的用法,我們期望將它用作api服務,但是perf對於這個太糟糕了 – Alexis