問題と目的:
Oracle開発者はときどき、PL / SQLコードでパフォーマンスの問題に直面します。 問題が発生するコードの場所pl / sqlを見つけるのに問題があります。
通常、プロファイリングpl / sqlコードは、非常に大規模なメソッドでパフォーマンスの問題を判断する必要がある場合、またはメソッドに多くのロジックを持つ多くの内部依存関係があり、メソッドがコードの速度を低下させる場所がわからない場合に使用されます。
問題を解決する方法:
Oracleデータベースのパフォーマンスの問題を解決するには、次の方法が役立ちます。
- PL / SQL Developer-Oracle開発者に人気のあるIDE。
- DBMS_PROFILE-プロファイリング用のOracleパッケージ(インターネット上に十分な情報があるため、この記事のフレームワークでは考慮されません)。
プロファイリングの方法(手順):
この記事のフレームワークでは、プロファイリングへのアプローチのみを示します。そのため、プロファイルする方法は適切ではありません。
プロファイリング用のメソッドを作成します。
create or replace procedure check_cycle_performance(p_cycle_size in number) is c_method_error constant number := -20000; c_method_error_message constant varchar2(4000) := 'Cycle size should be > 0'; l_power_value number; l_dual_value number; begin if p_cycle_size > 0 then --Cycle with power calculation for i in 1 .. p_cycle_size loop l_power_value := power(i, 2); end loop; --Cycle with switching context(sql-pl/sql) for i in 1 .. p_cycle_size loop select i into l_dual_value from dual; end loop; else raise_application_error(c_method_error, c_method_error_message); end if; end check_cycle_performance;
PL / SQL Developer IDEを介したプロファイリング:
pl / sql Developerで、テストウィンドウを実行します。
図1-テストウィンドウの起動
テストウィンドウで、 check_cycle_performanceメソッドを実行するコードを入力し、入力変数l_cycle_sizeを入力し、ボタンをクリックしてプロファイリングを開始します。
図2-PL / SQL Developerでのプロファイリングの開始
開始後、プロファイラーのテーブルを作成することを提案するダイアログボックスが表示されます。
次に、メソッドでF8を実行し、実行後、[プロファイラー]タブに移動します。
図3-PL / SQLのプロファイラーウィンドウ
図3は、主なパフォーマンス問題が16行目であることを示しています。
主なパフォーマンスの問題は、SQLコンテキストスイッチPL / SQLにあることを理解するのは難しくありません 。
同時に、べき乗:11行目は、はるかに短い時間で済みます。
コンテキストの切り替えを防ぐ対策については、別の記事を見てみましょう。