0

dbms_jobs を使用して、ストアド プロシージャを並行して実行しています。

各プロシージャの実行時間を並列実行と比較する以外に、プロシージャの並列実行が高速/効率的かどうかを知る他の方法はありますか?

オラクルでCPU /使用率を確認する方法はありますか?

4

1 に答える 1

2

ほとんどの分析は、システム上で実行されているジョブとその他すべての正確な性質に関するものであるため、これは簡単な質問ではありません。

主な質問は次のとおりです。

  • システムには、必要なときにジョブを並行して実行するのに十分な空きリソースがありますか?
  • ジョブを同時に実行することで利益が得られる可能性があること、またはその逆であることを示すコードがコードに含まれていますか?

後者の例として、非常に大きなテーブルのフル テーブル スキャンがすべて必要な複数のジョブがある場合、インスタンス バッファーから同じブロックを読み取ることができるため、それらすべてを同時に実行することでメリットが得られます。事実上、1 つのセッションがブロックを読み取り、他のセッションはブロックが読み取られるのを待ちます。それらが異なる時間に実行されると、ディスクからブロックを読み取るためにすべての物理 i/o が発生する必要があります。

表全体のスキャンに関する注意事項: 表全体のスキャンからのブロックは、従来の読取り(10gでシリアル・ダイレクト・パス読取りを有効にすることで特に指定されていない場合)の場合はdbブロック・バッファにロードされるか、パラレル問合せの場合はPGA(CACHEで別の方法で示唆されている場合を除く)またはシリアルにロードされます。ダイレクト パスは 11g で読み込みます。db ブロック バッファにロードされると、個々のブロック読み取りの場合のように MRU としてマークされませんが、11.2 のドキュメントhttp://docs.oracle.com/cd/E11882_01/によると「LRU リストの中央に」マークされます。 server.112/e16508/memory.htm#CNCPT1224

いずれの場合でも、ブロックを読み取ることに関心があることを登録している 1 つ以上のセッションが存在するため、ブロックを非常に長くメモリに保持する必要はまったくありません。多数の「バッファ ビジー待機」は、複数のセッションの兆候です。興味のあるブロックを別の人が読み取るのを待っています。

于 2013-02-15T10:29:29.270 に答える