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存储过程?