2011-07-14 5 views
6

Oracle 10gの使用。このプロジェクトのオリジナルのOracleデザイナーは動いており、残りの人はOracleにとって合理的な開発者ですが、チューニングと計画の支援が必要です。Oracle 10gでのパフォーマンスへのパッケージサイズの影響

私たちは '好き'のパッケージをコンパートメント化していますが、そのうちのいくつか(多くのもの)は複雑さが変化する多くの(50 ish)手続きを含むようにサイズが大きくなっています。

この時点で、これらのより大きなパッケージでは、いくつかの小規模なプロシージャ(ContractのItem = 'xyz'からIDを選択します)は、TOAD、SQL Developer、または。 NETオラクルプロバイダー)を使用することができます。 (テーブルがインデックス化されている)

は、比較的単純な個々のプロシージャを呼び出すか、我々が探してしなければならないいくつかの「その他」要因がある場合でも、このような大きなパッケージを使用するためのパフォーマンスコストがあるはず?

(注:Oracleの11にアップグレードする計画はなく、「差し迫った」される)パッケージのいずれかのメソッドが呼び出される

+0

@OMGのように、パッケージサイズが_Sould_-であるという信念に基づいてOracleパッケージを構築しましたが、プロシージャのパフォーマンスには影響しませんが、カウンタインジケータが表示され、この可能性が調査されています。 –

答えて

7

初めて、パッケージ全体をメモリに読み込まれる必要があります。一般に、それは、パッケージ内で1つのメソッドを呼び出す場合、呼び出された1つのプロシージャーによって、または後続のアプリケーション呼び出しによって、多くの関連メソッドが呼び出されるという前提で利点になると考えられます。しかし、最初の実行が潜在的に遅くなるということは、シンプルな関数には厳密に多くのコードをロードする必要があるかもしれないことを意味します。しかし、一度パッケージがメモリにロードされると、そのペナルティは消えるべきです。しかし、プロシージャの最初の呼び出しのパフォーマンスに関する問題について話しているようには聞こえませんが、これはこれを排除する傾向があります。

小さなプロシージャが実行される前に実行される、結果を歪めるコードがパッケージの初期化ブロックにありますか?

これらの小さな手順を呼び出すのにどれくらいの時間がかかるか、「ずっと長い」とはどういう意味ですか?あなたはそれらを数回呼んで、経過したミリ秒数を測定し、実行時間が30%増加すると見ていますか?それとも何千回も呼び出して、実行時間が1000%増えるのを見ていますか?

+0

これはロードと初期化を超えて起こっているので、この場合問題はありません。現在、実行時間がベンチマークされていない時間を「観察」しています。 Toadからスクリプトウィンドウで実行する場合、または「小さい」(このアイテムのみ)パッケージの一部として応答が「瞬時に」(2秒未満)、大きなパッケージでは3〜5秒です。 (完全に較正された_ "1-Mississippi"メソッドを使用します。 –

関連する問題