GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

ハードパースとソフトパース

概要

ハードパースとソフトパースについての解説

ハードパース

様々な実行計画を生成し、最適な実行計画を選択

  • 統計情報が収集済みのとき(ソフトパース)

      * 統計情報を利用   
      * 統計情報:表、列、索引、システム  
    
  • 統計がない時or古い時(ハードパース)

      * 動的サンプリングで収集した統計情報を利用  
    

f:id:undercovergeek:20201219103118p:plain

optimizer_dynamic_sampling

統計が不足している際、SQL実行時に自動的統計をサンプリング
サンプリングレベルを0-10で指定(0はOFF)

親カーソルと子カーソル

実行計画生成時、1つの親カーソルに対し、1つ以上の子カーソルが生成
f:id:undercovergeek:20201219103149p:plain

ハードパースの流れ

以前に実行されていない場合⇒ハードパース(実行計画を生成)
ディクショナリ・キャッシュを利用し、SQL文の構文や権限をチェック

共有プールの共有SQL領域を確保⇒実行計画を生成
f:id:undercovergeek:20201219103216p:plain

ソフトパース

共有SQL領域にキャッシュされている実行計画を利用
- オプティマイザや行ソースジェネレータによる処理が不要⇒CPU負荷の軽減
- 新たな共有SQL領域の確保が不要⇒メモリ使用量の低減
f:id:undercovergeek:20201219103307p:plain

ソフトパースの流れ

以前に実行されている場合⇒ソフトパース(実行計画を再利用)

共有SQL領域上にある以前の実行計画を再利用
f:id:undercovergeek:20201219103441p:plain

スポンサーリンク