因此,我正在阅读Ian Abramson的Oracle数据库10g入门指南(来自使用mysql),它提到PL/SQL并给出了使用它的所有这些很好的理由,然而,我这样做是为了准备重写我的公司使用的几个应用程序。
我的首席程序员认为,如果PL/SQL在数据库访问方面效率不高,那么所有的解析和查询都应该在客户端程序上进行,以分散Oracle服务器的负载。我认为我们应该划分代码并尝试避免代码重复,PL/SQL可能会帮助我们做到这一点。
问题是,我们实际上不知道(这本书没有告诉我们),在PL/SQL中,在运行在不同机器上的应用程序中,数据库访问的效率有多高,每次操作都会产生3-5 (较大的)查询。我认为它更有可能运行得更快,因为(据我所知) pl/sql函数存储和保存它们的执行计划,而传统的网络开销将减少3-5倍(取决于查询的数量)。
发布于 2014-09-04 14:22:41
这是一个非常重要的问题,而且很可能会受到应用程序设计的影响。通常,如果可以在SQL中执行,则在SQL中执行。如果不能在SQL中执行,请在PL/SQL中进行。如果不能在PL/SQL中完成,请使用Java (在数据库中)。如果这不起作用,请在外部客户端代码中执行。
现在,这不是普遍现象。如果您不执行与数据库相关的操作,那么在客户端执行此操作是有意义的。如果它是高度CPU密集型的,并且在客户机中这样做是有意义的,那么就很好了。原因是,你花了很多钱来授权Oracle,而且你(很可能)每个CPU都要付费。因此,如果您在Oracle许可的CPU上做了许多与数据库无关的工作,这是非常昂贵的。
总之,如果它是与数据库相关的实际代码(insert/update/delete/select),即使它周围有一些重要的逻辑,将它放在数据库中也是有意义的。如果它实际上没有与数据库交互,那么它可能不属于数据库。
最后,您对PL/SQL代码效率的评论是正确的。PL/SQL在解析和存储执行计划方面有效率。此外,PL/SQL将自动预取数据。
关于PL/SQL优势的更多信息可以在这里找到:http://docs.oracle.com/database/121/LNPLS/overview.htm#LNPLS00101
https://stackoverflow.com/questions/25667531
复制相似问题