Pl/SQL与Java编写的存储过程的性能比较

Pl/SQL与Java编写的存储过程的性能比较,java,performance,stored-procedures,plsql,java-stored-procedures,Java,Performance,Stored Procedures,Plsql,Java Stored Procedures,经过讨论后,我现在还有一个问题 让我们假设,有一个企业级应用程序,拥有数百万用户群,每天有数百万事务。性能虎钳,哪个更好 或Oracle存储过程(Pl/SQL) 注:当我说企业应用程序开发时,我的意思是从开发人员的角度来看,我们有不同的抽象层。测试框架。部署在多个刀片服务器上的自动化测试和广泛的调试等我怀疑性能问题将归结于您正在执行的数据库操作类型。然而,在处理数据库时,一个非常重要的问题是可测试性。很多时候,我参与的项目都是以数据库为中心的,我们最终会遇到大量的业务逻辑,我无法对这些逻辑进行

经过讨论后,我现在还有一个问题

让我们假设,有一个企业级应用程序,拥有数百万用户群,每天有数百万事务。性能虎钳,哪个更好

  • 或Oracle存储过程(Pl/SQL)

  • 注:当我说企业应用程序开发时,我的意思是从开发人员的角度来看,我们有不同的抽象层。测试框架。部署在多个刀片服务器上的自动化测试和广泛的调试等

    我怀疑性能问题将归结于您正在执行的数据库操作类型。然而,在处理数据库时,一个非常重要的问题是可测试性。很多时候,我参与的项目都是以数据库为中心的,我们最终会遇到大量的业务逻辑,我无法对这些逻辑进行单元测试、验证甚至更改


    我一直支持务实的选择——一切都在正确的位置。对于一些东西,你真的应该把它保存在数据库中。但这是一个值得思考的问题。

    我无法想象对于大多数应用程序,这两者之间会有多大区别,除非您的存储过程计算量很大(请注意,我指的是过程本身中的计算,而不是执行单个SQL语句所涉及的计算)


    现在,至于存储过程与普通应用程序代码之间的区别,那是另一回事。

    较新版本的Oracle可以将PL/SQL编译为本机代码。似乎Java中的混合只是增加了另一个层次的复杂性和抽象性。PL/SQL本身就是一种非常强大的语言,那么单元测试那些PL/SQL过程呢?假设我们有1000个过程?如果Java代码中有任何一个涉及来回执行操作的话——PLSQL将更快。我相信用Java编写存储过程将使我们能够运行JUnit测试。但是,与其他存储过程相比,运行基于java的存储过程会给服务器增加额外的开销吗?为了清楚起见,让应用程序保持一个通用的应用程序,它在任何一方都有平衡的业务逻辑(数据库、java代码)。那么建议是什么呢?我肯定这会增加开销。虚拟机不总是这样吗?但是,计算机速度快,硬件便宜,拥有虚拟机的好处通常大于坏处。因此,问题归结到——我们将要做什么?计算每一个cpu周期,尽可能压缩每一个最后的吞吐量——最明显的不是java。但我并没有接触过很多这样的系统,我投票支持经过单元测试的业务逻辑和java。但我有偏见:)