2009-09-02 6 views
0

私は約30のproc/functionsパッケージを持っています。これはservelの場所から呼び出されます。 1つの場所では、30のうち2つの関数しか使用していません。パッケージが呼び出されると、メモリ内のすべてのproc /関数をロードします。ただし、この場合はオーバーヘッドです。これを避ける方法はありますか?パッケージのロードオーバーヘッド

注:これらの2つのproc /関数を再度作成することはできません。

答えて

1

ここであなた自身の質問に答えたと思います。パッケージは、1つのユニットとしてメモリにロードされます。 "オーバーヘッド"を節約するために、そのパッケージから関数/プロシージャを別のパッケージに分離できない場合は、すべてのオプションを削除しました。

何が心配ですか?メモリオーバーヘッド?私のお気に入りのソースではないが便利なDon Burlesonから引用すると、ページアウトされない限り、パッケージは共有プールメモリに一度ロードされます。オーバーヘッドとして表示されるものはセッションではなく、のインスタンスになります。

+0

合意。オーバーヘッドはありますが最小限です。新しいシステムを設計する際、共有プールにパッケージをロードする際のオーバーヘッドは、アーキテクチャーの中で最も懸念されるものでなければなりません。 – darreljnz

0

実際のオーバーヘッドは、パッケージ内でグローバルに宣言された変数によるセッションのPGA割り当ての使用のみです。

0

パッケージからプロシージャをコールすると、パッケージ全体がデータベースのメモリ空間にロードされます。コードを整理するための一般的な手順を保持するためのパッケージは作成しないでください。プロシージャと関数は、相関関係がある場合はパッケージとして結合されます。そうでない場合は、それぞれに新しいパッケージを作成する必要があります。

関連する問題