Akka中的数据库会话,效率和线程

时间:2013-07-06 03:22:45

标签: scala akka slick

我目前正在使用一个非常大的数据库(> 50GB),并尝试了解最有效,最实用的方法,该方法与Akka固有的线程配合良好。

关于“将所有内容包含在withSession {}”方法中,虽然这将是一个更容易修复,但我担心这会限制Akka在actor之间的线程。我对Akka的线程如何工作知之甚少,以及如何在withSession中包装整个actor系统会影响它。

另一种方法是每当访问数据库时调用withSession,效率太低。 “withSession {”代码段需要大约6ms才能执行,我们正在进行数百万次查询。

基本上:在没有破坏线程的情况下,使用Slick和Akka快速访问数据库的最佳方法是什么?

我听说过使用隐式会话和事务的方法,但我很难找到其中任何一个的文档。

1 个答案:

答案 0 :(得分:4)

迟到总比没有好:

推荐的方法是使用jdbc连接池(例如c3p0)。您需要确保在同一个线程上保存并从中恢复会话。 withSession懒惰地从池中获取连接并在范围的末尾返回它。在需要时快速获取连接并在之后立即将它们返回池中。

相关问题