本文介紹了Scala Slick 3高查詢延遲的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用Slick運行一個非常簡單的查詢。根據日志,實際的數據庫調用只需要大約500微秒,但從我的db.run調用到結果之間的時間要長得多(大約200毫秒)
請在下面找到運行該查詢的代碼片段。它非常簡單地在查詢執行之前和之后打印時間戳;)Predictions表是一個映射到CASE類的非常簡單的4列表。
def getPredictionById(predictionId: Int) = {
println(new Date().getTime())
val r = Await.result(db.run(Tables.Predictions.filter(p => p.predictionId === predictionId).result.head), 1 second)
println(new Date().getTime())
r
}
調試模式下的日志非常長,所以我已將它們放在粘貼箱中。
http://pastebin.com/UpuGQJKd
我預計總延遲可能為幾毫秒,但我不確定如何實現它。
我使用的是SQL Server 2016、freeslick和net.Sourceforge.jtds
推薦答案
使用微軟官方驅動程序而不是jtds解決了問題
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
僅供參考,驅動程序類為com.microsoft.sqlserver.jdbc.SQLServerDriver
現在總時間約為20ms。然后,加上C3PO,我的延遲約為4ms,與我預期的差不多。
這篇關于Scala Slick 3高查詢延遲的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,