我想知道在使用光滑的 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 集成导致了这种情况。
对此有什么建议吗?