プライマリ・コンテンツに移動
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
B71291-10
目次へ移動
目次
索引へ移動
索引

前
次

動的パフォーマンス・ビューを使用したパラレル実行パフォーマンスの監視

Oracle Databaseのリアルタイム監視機能を使用すると、SQL文の実行中にパフォーマンスを監視することができます。SQLの監視が自動的に開始するのは、SQL文がパラレルで実行されたとき、または1回の実行でCPUまたはI/O時間を5秒以上消費したときです。詳細は、Oracle Database SQLチューニング・ガイドを参照してください。

システムが数日間稼働した後に、パラレル実行パフォーマンスの統計を監視して、並列処理が最適かどうかを判別する必要があります。これには、ここで説明するいずれかのビューを使用します。

Oracle Real Application Clustersでは、ここで説明するビューのグローバル・バージョンによって、複数インスタンスの統計が集計されます。グローバル・ビューの名前はGで開始します。たとえば、V$FILESTATに対してはGV$FILESTATとなります。

V$PX_BUFFER_ADVICE

V$PX_BUFFER_ADVICEビューは、すべてのパラレル問合せによる最大バッファ使用量の履歴と見積りに関する統計を示します。このビューを調べて、パラレル問合せのメモリー不足の問題に応じてSGAサイズを再構成できます。

V$PX_SESSION

V$PX_SESSIONビューは、問合せサーバーのセッション、グループ、セットおよびサーバー数のデータを示します。パラレル実行のために稼働しているプロセスのリアルタイム・データも示します。この表には、リクエストされた並列度(DOP)と操作に与えられた実際のDOPの情報も含まれます。

V$PX_SESSTAT

V$PX_SESSTATビューは、V$PX_SESSION表とV$SESSTAT表のセッション情報を結合したものです。つまり、通常のセッションで得られるすべてのセッション統計は、パラレル実行を使用して実行されるすべてのセッションでも利用できます。

V$PX_PROCESS

V$PX_PROCESSビューには、パラレル・プロセスの情報が含まれます。ステータス、セッションID、プロセスID、その他の情報があります。

V$PX_PROCESS_SYSSTAT

V$PX_PROCESS_SYSSTATビューは、問合せサーバーのステータスとバッファ割当て統計を示します。

V$PQ_SESSTAT

V$PQ_SESSTATビューは、システムの現在のサーバー・グループすべてのステータスを示します。問合せによってどのようにプロセスが割り当てられたか、またマルチユーザー問合せ調整アルゴリズムやロード・バランシング・アルゴリズムにより、デフォルト値やヒント指定された値がどのように影響されたかといったデータが含まれます。

場合によっては、これらのビューのデータを確認した後で、パフォーマンスを改善するために一部のパラメータの設定を調整する必要があります。その場合は、「パラレル実行のための一般的なパラメータのチューニング」の説明を参照してください。実行時間の長いパラレル操作の進捗を監視するには、これらのビューを定期的に問い合せます。

多くの動的パフォーマンス・ビューでは、Oracle Databaseが各ビューの統計を収集するためには、パラメータTIMED_STATISTICSTRUEに設定する必要があります。ALTER SYSTEMまたはALTER SESSION文を使用して、TIMED_STATISTICSの設定を切り替えることができます。

V$PQ_TQSTAT

単純な例として、固有値が2種類のみの1つの列の結合による、2つの表のハッシュ結合について考えます。このハッシュ関数は、最大でも、パラレル実行サーバーAに対して1つのハッシュ値、パラレル実行サーバーBに対してもう1つのハッシュ値を生成します。DOPは2で問題ありません。4とすると少なくとも2つのパラレル実行サーバーの作業がなくなります。このような偏りを検出するには、次の例のような問合せを使用します。

SELECT dfo_number, tq_id, server_type, process, num_rows
FROM V$PQ_TQSTAT ORDER BY dfo_number DESC, tq_id, server_type, process;

この問題を解決する最適な方法は、別の結合方法の選択です。ネステッド・ループ結合が最適であると予想されます。または、結合表の一方が他方よりも小さい場合は、PQ_DISTRIBUTEヒントを使用してBROADCAST分散方法を指定できます。オプティマイザによってBROADCAST分散方法が考慮されるためには、OPTIMIZER_FEATURES_ENABLEを9.0.2以上に設定する必要があります。

ここで、カーディナリティの高い結合キーがあるが、値の1つにほとんどのデータが含まれると仮定します。このような例としては、ラーバ・ランプの年次売上があります。大きな売上があったのは1968年のみで、1968年のレコードに対応するパラレル実行サーバーの負荷が高くなります。前述したものと同じ修正処理を使用する必要があります。

V$PQ_TQSTATビューは、表キュー・レベルのメッセージ・トラフィックの詳細なレポートを示します。V$PQ_TQSTATデータが有効なのは、パラレルSQL文を実行しているセッションから問い合せた場合のみです。 表キューは、問合せサーバー・グループ間、パラレル実行コーディネータと問合せサーバー・グループ間、または問合せサーバー・グループとコーディネータ間のパイプラインです。表キューは、PX SEND <partitioning type> (たとえば、PX SEND HASH)およびPX RECEIVEによって操作列に明示的に示されます。

V$PQ_TQSTATには、各表キューに対して読取りまたは書込みを行う問合せサーバー・プロセスごとに1行があります。10のコンシューマ・プロセスと10のプロデューサ・プロセスを接続する表キューの場合、このビューに20の行があります。バイト列を合計し、TQ_ID (表キュー識別子)によってグループ化すると、各表キューを介して送信された合計バイト数を求めることができます。この値をオプティマイザの見積りと比較します。差が大きいときは、より大きなサンプルを使用したデータの分析が必要な可能性があります。

TQ_IDでグループ化したバイト数の平方偏差を計算します。平方偏差が大きい場合はワークロードの不均衡を意味します。大きな平方偏差について調べて、プロデューサの起動時にデータ分散が不均等だったのか、分散そのものに偏りがあるのかを判別する必要があります。データそのものに偏りがある場合は、カーディナリティが低い、あるいは固有値が少ないことを意味します。

V$RSRC_CONS_GROUP_HISTORY

V$RSRC_CONS_GROUP_HISTORYビューは、非NULLプランのあるV$RSRC_PLAN_HISTORYに、パラレル文のキューイングの情報など、各エントリに対するコンシューマ・グループ統計の履歴を表示します。

V$RSRC_CONSUMER_GROUP

V$RSRC_CONSUMER_GROUPビューは、パラレル文の情報など、現在アクティブなリソース・コンシューマ・グループに関連するデータを表示します。

V$RSRC_PLAN

V$RSRC_PLANビューは、パラレル文のキューイングの状態など、現在アクティブなリソース・プランすべての名前を表示します。

V$RSRC_PLAN_HISTORY

V$RSRC_PLAN_HISTORYは、リソース・プランがインスタンスで有効化、無効化または変更された場合の履歴を表示します。履歴にはパラレル文のキューイングの状態を含みます。

V$RSRC_SESSION_INFO

V$RSRC_SESSION_INFOビューは、パラレル文のキュー統計など、リソース・マネージャ統計をセッション単位で表示します。列には、PQ_SERVERSおよびPQ_STATUSが含まれます。

セッションがアクティブでパラレル問合せを実行している場合、V$RSRC_SESSION_INFOビューのPQ_SERVERS列には、アクティブなパラレル・サーバーの数が含まれます。問合せがキューに入れられると、この問合せで実行するパラレル・サーバーの数が表示されます。

PQ_STATUS列は、パラレル文がキューに入れられる理由を保持します。

関連項目:

V$RSRC_SESSION_INFOビューの詳細は、『Oracle Databaseリファレンス』を参照してください

V$RSRCMGRMETRIC

V$RSRCMGRMETRICビューは、パラレル文のキューイングに関連する統計を表示します。

パラレル文のキューイングに関連する統計は、指定された1分間の統計を取得して約1時間保持するリソース・マネージャ・メトリックに追加されます。

列には、AVG_ACTIVE_PARALLEL_STMTSAVG_QUEUED_PARALLEL_STMTSAVG_ACTIVE_PARALLEL_SERVERSAVG_QUEUED_PARALLEL_SERVERSおよびPARALLEL_SERVERS_LIMITが含まれます。

関連項目:

V$RSRCMGRMETRICビューの詳細は、『Oracle Databaseリファレンス』を参照してください