包装加载开销

时间:2009-09-02 10:48:01

标签: plsql

我有大约30个proc / functions的包。这是从servel地方调用的。在一个地方,它只使用30个中的2个函数。当调用包时,它将加载内存中的所有proc /函数。但是,在这种情况下,这是一个开销。有什么方法可以避免这种情况吗?

注意: - 我无法再次创建这两个proc /函数。

3 个答案:

答案 0 :(得分:1)

我想你在这里已经回答了你自己的问题。包作为单个单元加载到内存中。如果你不能将函数/过程从那个包中分离到另一个包以节省“开销”,那么你已经取消了所有选项。

关注点是什么?内存开销?引用来自Don Burleson,不是我最喜欢的来源但是很方便,除非被分页,否则将包加载到共享池内存中。可能被视为开销的不是每个会话,它是每个实例

答案 1 :(得分:0)

唯一真正需要考虑的真正开销是通过包中全局声明的变量来使用会话的PGA分配。

答案 2 :(得分:0)

从包中调用过程后,整个包将被加载到数据库内存空间。您不应该为了组织代码而创建用于保存常规过程的包。如果程序和函数是相关的,则将它们组合成一个包。如果不是,则应为每个创建新包。