【问题标题】:Performance overhead of using java in oracle在 oracle 中使用 java 的性能开销
【发布时间】:2011-10-14 01:28:26
【问题描述】:

大家好,

几天前,我遇到了在 oracle 中使用 java 的特性。自从我想知道 在 java 中编写静态方法替换常规 PL/SQL 逻辑的可能性。

因为我有足够的经验 java 加上它提供的丰富库,我很想编写 java 方法而不是常规的 PL/SQL。这会是 一个好习惯?这样做会有很多性能开销吗?提前致谢。

【问题讨论】:

    标签: java performance oracle plsql


    【解决方案1】:

    在您决定从 PL/SQL 转向 Java 代码时会涉及一些开销。

    虽然我不太相信将业务逻辑放入 PL/SQL 中,但我已经看到太多公司这样做了,包括我自己的公司。

    这样做的“性能考虑”并不是是否使用static 方法。例如,您可能需要声明一个数组列表来对值进行排序,并根据这些值在另一个查询中从数据库中检索更多结果。

    IMO,我会将业务逻辑放在我的应用程序中,而不是投资于 PL/SQL。这也有助于确保 DBMS 的可移植性而不是被接受。

    【讨论】:

    • +2 用于在应用程序中保留逻辑
    • 虽然,一个反驳的观点是,如果你已经购买了 Oracle,你不妨使用它。
    • 这里有一个很好的关于数据库或应用层逻辑的问答(我个人会在数据库和应用层强制执行某些逻辑,即使这意味着重复):stackoverflow.com/questions/119540/…
    • 与 OP 问题无关!您的考虑是应用程序设计考虑。它们是有效的,但它们不回答问题。他想用 Java 重写 pl/sql 过程,在 ORACLE 内!
    【解决方案2】:

    我认为如果您将 CRUD 操作存储为存储过程是可以接受的。如果您使用任何 ORM 框架,那么您可能会映射 SP。更常见的是,数据库是应用程序中更稳定的部分。应用程序可能会被重构或替换,但数据库不会改变(这只是我的经验)。

    【讨论】:

    • 我同意,我已经看到应用程序来来去去(以及各种不同的业务逻辑),但数据库往往会随着时间的推移而增长/发展,而不是被废弃并完全重做。一般来说,将数据相关的构建/维护逻辑放在数据库端(包括视图/垫视图),让应用程序自己关注显示/可用性问题。
    【解决方案3】:

    视情况而定! 它们是用于不同目的的两种语言!

    您想进行哪种操作

    • 每一个涉及数据层的操作(我知道这值得商榷)
    • 海量 Sql 操作和大数据处理(批量操作)
    • 管理任何类型的交易
    • 这项工作可以在 Pl/Sql 中轻松完成
    • 您是否正在编写严格绑定到 Sql 数据类型的代码?
    • 监控代码与依赖db对象的关系

    在这种情况下,我相信Pl/SQL 是性能的最佳选择

    注意,我写的是PL/SQL:

    • PL 作为过程语言(第二选择)
    • SQL 作为数据查询语言(第一选择)

    这两种语言的强大功能与 Oracle 紧密相关,让您编写的应用程序可以比任何其他语言更快更轻松地访问 Oracle 中的数据。


    你需要:

    • 操作系统操作
    • 目录和文件操作
    • 海量邮件操作
    • 网络运营
    • 其他你不能做的事情:
      • SQL(第一选择)
      • PL(第二选择)
    • 编写代码以在 Enterprise Java Beans 等架构中重用
    • 编写代码以重用其他地方

    在这种情况下,我认为 Java 是更好的选择,在 Oracle 中是第三选择。


    但是我并不是在重新发明轮子,这些信息在很大程度上可以由 Oracle 专家(如 Tom Kyte 等)获得和证明。

    只是一些有用的搜索链接:

    【讨论】:

      猜你喜欢
      • 2010-12-14
      • 2011-03-16
      • 2018-07-26
      • 1970-01-01
      • 2016-12-19
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多