2009-09-02 42 views
0

我包提高了约30 PROC /功能。这从servel地方被调用。在一个地方,它只使用了30个函数中的2个。当调用包时,它将加载内存中的所有proc /函数。但是,在这种情况下,这是一个开销。有什么办法可以避免这种情况?封装加载开销

注: - 我不能再创建这两个PROC /功能。

回答

1

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

有什么顾虑?内存开销?从Don Burleson引用,谁不是我最喜欢的源代码,但很方便,软件包加载到共享池内存一次,除非分页。什么可以被看作是开销是不是每个会议,它是每实例

+0

同意。虽然有开销,但是很少。在设计新系统时,在共享池中加载软件包的开销应该是您架构中最少的问题。 – darreljnz 2009-09-02 19:29:45

0

所有关心的唯一实际开销是使用包中全局声明的变量来使用会话的PGA分配。

0

从包中调用过程后,整个包将被加载到数据库内存空间。你不应该创建一个用于保存通用程序的包来组织你的代码。如果相互关联,程序和功能将作为一个整体进行组合。如果不是,你应该为每一个创建新的包。