sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cuál es la forma correcta de trabajar con los resultados de transmisión 3.0.0 de Slick y Postgresql?

La "manera correcta" de hacer streaming con Slick y Postgres incluye tres cosas:

  1. Debe usar db.stream()

  2. Debe deshabilitar autoCommit en el controlador JDBC. Una forma es hacer que la consulta se ejecute en una transacción agregando el sufijo .transactionally .

  3. Debe configurar fetchSize ser algo más que 0 o postgres empujará todo el conjunto de resultados al cliente de una sola vez.

Ej:

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

Enlaces útiles:

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

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