概要
ハードパースとソフトパースについての解説
ハードパース
様々な実行計画を生成し、最適な実行計画を選択
統計情報が収集済みのとき(ソフトパース)
* 統計情報を利用 * 統計情報:表、列、索引、システム
統計がない時or古い時(ハードパース)
* 動的サンプリングで収集した統計情報を利用
optimizer_dynamic_sampling
統計が不足している際、SQL実行時に自動的統計をサンプリング
サンプリングレベルを0-10で指定(0はOFF)
親カーソルと子カーソル
実行計画生成時、1つの親カーソルに対し、1つ以上の子カーソルが生成
ハードパースの流れ
以前に実行されていない場合⇒ハードパース(実行計画を生成)
ディクショナリ・キャッシュを利用し、SQL文の構文や権限をチェック
共有プールの共有SQL領域を確保⇒実行計画を生成
ソフトパース
共有SQL領域にキャッシュされている実行計画を利用
- オプティマイザや行ソースジェネレータによる処理が不要⇒CPU負荷の軽減
- 新たな共有SQL領域の確保が不要⇒メモリ使用量の低減
ソフトパースの流れ
以前に実行されている場合⇒ソフトパース(実行計画を再利用)
共有SQL領域上にある以前の実行計画を再利用