0

我想知道在使用光滑的 akka-streaming 集成执行 DBAction 时是否有默认的结果集大小。

确实(我正在使用akka-stream slick)。当我编写以下查询时:

Slick.source(sql"""select * FROM DRUG""".as[(Map[String,String])])

如在

val tableRows =
    Slick.source(sql"""select * FROM DRUG""".as[(Map[String,String])])
      .map{e => RawData("DRUG", "/Users/xxxx/xxxx/WSP1WS5-DRUG-auto-model.ttl", "OBJECT", "", e)}
      .mapAsyncUnordered(8){value =>
        Future{
          println(s"Writing {${value.toString}}")
          val kryo = kryoPool.obtain()
          val outStream = new ByteArrayOutputStream()
          val output = new Output(outStream, 4096)
          kryo.writeClassAndObject(output, value)
          output.close()
          kryoPool.free(kryo)
          new ProducerRecord[String, Array[Byte]]("test", outStream.toByteArray)
        }
      }
      .runWith(Producer.plainSink(producerSettings))

我的查询最多返回 400 条记录,然后就挂在那里。我在该表中有大约 5k 条记录。这正常吗?

但是,我已经能够通过使用以下语句来检索它们,尽管我相信它比它应该的要慢:

Slick.source(sql"""select * FROM DRUG Where ROWNUM <= 1000000000""".as[(Map[String,String])])

顺便说一下,我正在使用的数据库是 oracle。因此,我想知道是 oracle、slick 还是 akka-stream 集成导致了这种情况。

对此有什么建议吗?

4

0 回答 0