[英]Wrap Slick queries in Futures
我正在嘗試使用Slick異步查詢MySQL數據庫。 下面的代碼模板(最初用於查詢我的90k行中的內容)似乎在工作,但該程序消耗了數GB的RAM,並且在大約200次查詢后失敗而沒有警告。
import scala.slick.jdbc.{StaticQuery => Q}
def doQuery(): Future[List[String]] = future {
val q = "select name from person"
db withSession {
Q.query[String](q).list
}
}
我嘗試使用fromURL
方法和c3p0連接池來建立連接。 我的問題是:這是對數據庫進行異步調用的方法嗎?
您可以嘗試使用Iterables並流式傳輸數據,而不是使用類似於以下的解決方案將其存儲在內存中: 將SQL ResultSet像Scala流一樣對待
盡管請最后省略.toStream調用。 它將數據緩存在內存中,而Iterable不會。
如果您想要異步的iterable版本,可以查看Observables 。
Slick 3(Reactive Slick)似乎可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.