sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad är det rätta sättet att arbeta med slicks 3.0.0 streamingresultat och Postgresql?

Det "rätta sättet" att streama med Slick och Postgres inkluderar tre saker:

  1. Måste använda db.stream()

  2. Måste inaktivera autoCommit i JDBC-drivrutinen. Ett sätt är att få frågan att köras i en transaktion genom att suffixa .transactionally .

  3. Måste ställa in fetchSize att vara något annat än 0, annars skickar postgres hela resultatuppsättningen till klienten på en gång.

Ex:

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

Användbara länkar:

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

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



  1. PDO::FETCH_CLASS med flera klasser

  2. Begränsa SQL med summan av radens värde

  3. MySQL triggers för att inaktivera ett användarkonto

  4. Hur kontrollerar man att det finns två kolumner i två olika tabeller? MySQL