我需要从我的一个api方法对我的数据库执行小的(但频繁的)操作。当我每次尝试将它们包装成"withSession“时,我得到了糟糕的性能。
db withSession {
SomeTable.insert(a,b)
}运行上面的示例100次需要22秒。在一个单独的会话中运行它们是瞬间的。
有没有办法在后续的函数调用中重用会话?
发布于 2012-04-30 14:08:12
您是否有某种类型的连接池(请参阅JDBC Connection Pooling: Connection Reuse?)?否则,您将为每个withSession(...)使用一个新连接这是一种非常缓慢的方法。有关如何将C3PO与ScalaQuery一起使用的说明,请参阅http://groups.google.com/group/scalaquery/browse_thread/thread/9c32a2211aa8cea9。
如果您使用来自应用程序服务器的托管资源,您通常会“免费”获得此资源,但在独立服务器(例如jetty)中,您必须自己配置此资源。
发布于 2012-04-30 13:58:41
我可能说得太明显了,但您可以在withSession块中放入更多调用,如下所示:
db withSession {
SomeTable.insert(a,b)
SomeOtherTable.insert(a,b)
} 或者,您可以创建一个隐式会话,执行您的业务,然后在完成后关闭它:
implicit val session = db.createSession
SomeTable.insert(a,b)
SomeOtherTable.insert(a,b)
session.closehttps://stackoverflow.com/questions/10378849
复制相似问题