Java 存储过程是不是比 Oracle 中的 PL/SQL 慢?

Posted

技术标签:

【中文标题】Java 存储过程是不是比 Oracle 中的 PL/SQL 慢?【英文标题】:Are Java stored procedures slower than PL/SQL in Oracle?Java 存储过程是否比 Oracle 中的 PL/SQL 慢? 【发布时间】:2012-01-19 11:54:06 【问题描述】:

这是一个直截了当的问题:您知道 Java 存储过程在 Oracle 数据库中是否比 PL/SQL 慢?

我们已将存储过程从 PL/SQL 迁移到 Java 只是为了对其进行基准测试,它所花费的时间大约是 PL/SQL 的两倍。这也是你的经历吗?

谢谢。

【问题讨论】:

在这里查看我的答案:***.com/questions/6821841/… 您将代码迁移到 Java 的原因是什么? (我假设您并没有为此进行基准测试) @Juan 这也是我的经验。我已经尝试过几次使用 Java 存储过程,但从未看到任何性能提升。 【参考方案1】:

每当您在语言之间切换时,都会产生开销,称为上下文切换。

(http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:60122715103602)

在 SQL 和 PL/SQL 之间移动甚至会产生开销,并且它们非常紧密地集成在一起。因此,在 Java 和 PL/SQL 之间切换总是比纯 PL/SQL 效率低。

Java Stored Procedure Vs PL/SQL Stored Procedure

至于发生上下文切换后的性能,您的基准测试将为您提供最佳答案,但 FWIW,因为 PL/SQL 与 Oracle 数据库紧密集成,如果您是,它应该比存储的 Java 代码执行得更好获取数据或与数据库交互,如果你纯粹是在操作已经获取的数据,这将取决于你对数据所做的事情,你的基准测试会告诉你答案。

【讨论】:

【参考方案2】:

是的。 Java 一直是最胖、最慢的孩子。

没有理由将 99% 的事情从 pl/sql 切换到 java。

我将 java 用于我需要的几个实例。

【讨论】:

以上是关于Java 存储过程是不是比 Oracle 中的 PL/SQL 慢?的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中调用包含用户定义类型的oracle存储过程?

为啥 oracle 存储 java 过程中的相同代码可能比普通 java 慢?

java调用Oracle中的存储过程与存储函数

怎么知道 oracle存储过程是不是执行完

oracle 执行有返回值的存储过程报错

我们如何将数组从java传递到oracle中的存储过程