2009-09-02 20 views
0

我包提高了約30 PROC /功能。這從servel地方被調用。在一個地方,它只使用了30個函數中的2個。當調用包時,它將加載內存中的所有proc /函數。但是,在這種情況下,這是一個開銷。有什麼辦法可以避免這種情況?封裝加載開銷

注: - 我不能再創建這兩個PROC /功能。

回答

1

我想你已經在這裏回答你自己的問題。一個包作爲一個單元加載到內存中。如果你不能將這個包中的函數/過程分離到另一箇中以節省「開銷」,那麼你已經消除了所有選項。

有什麼顧慮?內存開銷?從Don Burleson引用,誰不是我最喜歡的源代碼,但很方便,軟件包加載到共享池內存一次,除非分頁。什麼可以被看作是開銷是不是每個會議,它是每實例

+0

同意。雖然有開銷,但是很少。在設計新系統時,在共享池中加載軟件包的開銷應該是您架構中最少的問題。 – darreljnz 2009-09-02 19:29:45

0

所有關心的唯一實際開銷是使用包中全局聲明的變量來使用會話的PGA分配。

0

從包中調用過程後,整個包將被加載到數據庫內存空間。你不應該創建一個用於保存通用程序的包來組織你的代碼。如果相互關聯,程序和功能將作爲一個整體進行組合。如果不是,你應該爲每一個創建新的包。