2016-03-02 33 views
0

我们需要从Oracle数据库中运行Java程序,因此我们正在考虑使用Java Stored Procedure。问题是在可扩展性方面会发生什么,因为我们将有许多并发执行。 (1)它会为每次调用该过程时创建一个新的“java”进程,这意味着它将启动一个新的JVM实例吗?或者(2)Oracle DB会管理代码并使用共享的JVM来运行该程序吗?Oracle:Java存储过程和过程

我相信并希望选项2可能是正确的选项,但我无法找到任何可以回答此问题的文档,因此我们可以安全地继续。

+0

据我所知,它使用共享虚拟机。我也在寻找规范来支持我的陈述 –

+0

它的价值经历了这个https://docs.oracle.com/database/121/JJDEV/chnine.htm#JJDEV13324 –

回答

0

经过一番谷歌后,我发现实际上Java存储过程已经过优化和互操作,可以在数据库附带的同一个Oracle JVM中执行。

从11.1开始,使用Just-in-Time Compiler (JIT)来集成代码。有关非功能性要求的详细信息可以在Developing Java Stored Procedures指南中找到。

与封装器不同,它增加了另一层执行,调用 规范公布了Java方法的存在。因此,当您通过其调用规范调用方法时,运行时间为 的系统将以最小的开销调度该调用。

而且FAQ

Java存储过程是通过在数据库 内存空间数据库JVM中执行。