プロが教えるわが家の防犯対策術!

PGAメモリに関してですが

1.あるSQLがあるとして、そのSQLでどの程度PGAメモリを消費するかを
  確認する事は出来るのでしょうか?

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

A 回答 (1件)

こんにちわ



> そのSQLでどの程度PGAメモリを消費するか・・・

http://docs.oracle.com/cd/E16338_01/server.112/b …
上記、管理者ガイド (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/b …
上記チューニングガイドには、以下のように記載されています。

> 複雑な問合せ(たとえば、意思決定支援の問合せ)の場合、ランタイム領域の
> 大部分が、次のようなメモリー集約型演算子で割り当てられた作業領域に
> 使用されます。

> ・ソート・ベース演算子(たとえば、ORDER BY、GROUP BY、ROLLUP
> およびウィンドウ・ファンクション)
> ・ハッシュ結合
> ・ビットマップ・マージ
> ・ビットマップ作成
> ・一括ロード操作で使用される書込みバッファ

それと、In-Memory Parallel Query を使っていなければ
Parallel Query の場合もPGA に直接読込みます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/16 09:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す