PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quelle est la bonne façon de travailler avec les résultats de streaming 3.0.0 de Slick et Postgresql ?

La "bonne façon" de faire du streaming avec Slick et Postgres comprend trois choses :

  1. Doit utiliser db.stream()

  2. Doit désactiver autoCommit dans le pilote JDBC. Une façon consiste à exécuter la requête dans une transaction en suffixant .transactionally .

  3. Doit définir fetchSize être autre chose que 0, sinon postgres poussera tout le resultSet vers le client en une seule fois.

Ex :

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

Liens utiles :

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

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