PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Qual è il modo giusto per lavorare con i risultati di streaming 3.0.0 di slick e Postgresql?

Il "modo giusto" per fare streaming con Slick e Postgres include tre cose:

  1. Deve utilizzare db.stream()

  2. Devi disabilitare autoCommit nel driver JDBC. Un modo è fare in modo che la query venga eseguita in una transazione inserendo il suffisso .transactionally .

  3. Devi impostare fetchSize essere qualcosa di diverso da 0, altrimenti postgres invierà l'intero resultSet al client in una volta sola.

Es:

DB.stream(
  find(0L, 0L)
    .transactionally
    .withStatementParameters(fetchSize = 1000)
).foreach(println)

Link utili:

https://github.com/slick/slick/issues/1038

https://github.com/slick/slick/issues/809