• ベストアンサー

オラクルのPGAメモリに関して

PGAメモリに関してですが 1.あるSQLがあるとして、そのSQLでどの程度PGAメモリを消費するかを   確認する事は出来るのでしょうか? 2.PGAメモリを消費しやすいSQLとはどのようなSQLなのでしょうか?   簡単なSQLより複雑なSQLの方が消費しやすいと思ってます。   その中で特に何か消費しやすいSQLの特徴はあるのでしょうか?   (例)大量データへのアクセス     INDEXを利用しないFULL ACCESS     副問い合わせ     多数のテーブル結合     関数などの利用     order by、group by     (etc)

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ > そのSQLでどの程度PGAメモリを消費するか・・・ http://docs.oracle.com/cd/E16338_01/server.112/b56301/memory004.htm#BGBICAGE 上記、管理者ガイド (11.2) のメモリ管理に以下のように記載されています。 > PGAメモリーの使用統計を提供する動的なパフォーマンス・ビューが > 用意されています。これらの統計のほとんどは、PGA_AGGREGATE_TARGETが > 設定されると使用可能になります。 > 作業領域メモリーの割当ておよび使用に関する統計は、次の動的 > パフォーマンス・ビューで表示できます。 > V$SYSSTAT > V$SESSTAT > V$PGASTAT > V$SQL_WORKAREA > V$SQL_WORKAREA_ACTIVE > V$PROCESSビューの次の3つの列では、Oracle Databaseプロセスによって > 割り当てられ使用されているPGAメモリーがレポートされます。 > PGA_USED_MEM > PGA_ALLOCATED_MEM > PGA_MAX_MEM SQL と紐付けるなら、V$SQL_WORKAREA かV$SQL_WORKAREA_ACTIVE を使用 する事となります。 ※ V$SQL_WORKAREA_ACTIVE の場合、現在アクティブなものしか出力   されませんが。 現在のPGA の使用量であれば、V$PROCESS かV$SESSTAT を集計するのが 簡単だと思います。 ※ V$SESSTAT で、統計名 "session pga memory" と "session pga memory max"   でセッション毎のPGA メモリ量が確認できます。   こちらは、PGA_AGGREGATE_TARGET とは関係なく取得できます。 > PGAメモリを消費しやすいSQLとは・・・ http://docs.oracle.com/cd/E16338_01/server.112/b56312/memory.htm#i49320 上記チューニングガイドには、以下のように記載されています。 > 複雑な問合せ(たとえば、意思決定支援の問合せ)の場合、ランタイム領域の > 大部分が、次のようなメモリー集約型演算子で割り当てられた作業領域に > 使用されます。 > ・ソート・ベース演算子(たとえば、ORDER BY、GROUP BY、ROLLUP > およびウィンドウ・ファンクション) > ・ハッシュ結合 > ・ビットマップ・マージ > ・ビットマップ作成 > ・一括ロード操作で使用される書込みバッファ それと、In-Memory Parallel Query を使っていなければ Parallel Query の場合もPGA に直接読込みます。

evaag777
質問者

お礼

お返事が遅くなりました。 大変、親切に回等して頂いて、どうもありがとうございました。

関連するQ&A