【问题标题】:Performance Comparison of Stored Procedure written in Pl/SQL vs. Java用 Pl/SQL 与 Java 编写的存储过程的性能比较
【发布时间】:2010-11-29 18:56:02
【问题描述】:

经过here的讨论,我现在还有一个问题。

让我们假设,有一个 企业 级应用程序,拥有数百万用户群,每天有数百万笔交易。性能虎钳,这样会更好。

  1. Java Stored Procedure
  2. 或 Oracle 存储过程 (Pl/SQL)

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

【问题讨论】:

  • 较新版本的 Oracle 可以将 PL/SQL 编译为本机代码。似乎在 Java 中混合只是增加了另一个层次的复杂性和抽象。 PL/SQL 本身就是一种非常强大的语言
  • 对那些 PL/SQL 过程进行单元测试怎么样?假设我们有 1000 个程序?
  • 如果任何 Java 代码涉及往返行程以执行操作 -- PLSQL 会更快。

标签: java performance stored-procedures plsql java-stored-procedures


【解决方案1】:

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

我始终坚持务实的选择 - 一切都在正确的位置。对于某些东西,您确实应该将其保存在数据库中。但这是一个值得思考的问题。

【讨论】:

  • 我相信用 Java 编写存储过程将能够运行 JUnit 测试。但同样,运行基于 java 的存储过程与其他存储过程相比会增加服务器的额外开销吗?为了清楚起见,让应用程序保持一个通用的应用程序,它在任一端(数据库、Java 代码)都具有平衡的业务逻辑。那会有什么建议呢?
  • 我确信它会增加开销。虚拟机不总是吗?但是,计算机速度快,硬件便宜,并且拥有 VM 的好处通常大于负面因素。所以问题归结为 - 将要做什么?计算每个 cpu 周期,尽可能压缩最后一点吞吐量 - 绝对不是 java。但我没有接触过很多这样的系统。
  • 我投票支持单元测试的业务逻辑和 java。但我有偏见:)
【解决方案2】:

对于大多数应用程序,我无法想象两者之间会有很大差异,除非您的存储过程是高度计算密集型的(请注意,我指的是过程本身内的计算,而不是执行单个 SQL 语句所涉及的计算)。

现在,至于一般的存储过程和普通应用程序代码的区别,那就是另外一回事了。

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多