SlickとPostgresでストリーミングを行う「正しい方法」には、次の3つが含まれます。
-
db.stream()
を使用する必要があります -
autoCommit
を無効にする必要があります JDBCドライバーで。 1つの方法は、.transactionally
の接尾辞を付けて、トランザクションでクエリを実行することです。 。 -
fetchSize
を設定する必要があります 0以外の値にすると、postgresはresultSet全体を一度にクライアントにプッシュします。
例:
DB.stream(
find(0L, 0L)
.transactionally
.withStatementParameters(fetchSize = 1000)
).foreach(println)
便利なリンク:
https://github.com/slick/slick/issues/1038
https://github.com/slick/slick/issues/809