PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was ist der richtige Weg, um mit den Streaming-Ergebnissen von Slick 3.0.0 und Postgresql zu arbeiten?

Der "richtige Weg" zum Streamen mit Slick und Postgres umfasst drei Dinge:

  1. Muss db.stream()

    verwenden
  2. Muss autoCommit deaktivieren im JDBC-Treiber. Eine Möglichkeit besteht darin, die Abfrage in einer Transaktion auszuführen, indem .transactionally angehängt wird .

  3. Muss fetchSize setzen etwas anderes als 0 sein, sonst wird postgres das gesamte resultSet auf einmal an den Client senden.

Beispiel:

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

Nützliche Links:

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

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