ablog

不器用で落着きのない技術者のメモ

Oracle DBA & Developer Day 2016 で発表しました

2016/10/27(木)に開催された Oracle DBA & Developer Day 2016 で、
「オラクル・コンサルが語る! SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ 新機能活用と統計情報運用の戦略」
というお題で柴田歩さんと発表しました。

サマリ*1


  • フィルタ条件・結合条件が多い集計クエリなど統計から正確なカーディナリティ見積が困難なケースに対応するためコストベースオプティマイザは継続的に進化してきた。
    • ヒストグラムや拡張統計(列グループ統計・式統計)、ダイナミックサンプリングによる見積精度向上。
    • カーディナリティフィードバックによる見積誤差補正。

  • 12.1 では適応計画で実行中に実行計画補正、SQL計画ディレクティブでフィードバックが永続化されるようになった。


  • これにより、カーディナリティフィードバックだけでは欠けていた(1回目は救えない、キャッシュアウトする)ミッシングピースが埋まった。


  • 12.2 での変更点(適応計画のみデフォルトで有効)

  • 12.1 では適応計画とSQL計画ディレクティブはデフォルトで有効。

  • 12.2 ではデフォルトで OPTIMIZER_ADAPTIVE_PLANS のみ有効。

  • 12.1 はデフォルトで最適化機能全開だったが、

  • 12.2 では世の中でもっとも多い(だろう)タイプのシステムにデフォルトを合わせた。

  • 12.2 では適したシステムは有効化して使ってくださいという方針になっている。

  • 12.1 でもパッチ(Patch:22652097、Patch:21171382)で 12.2 の動作に変更することが可能。

私的備忘録


2016/10/24 AYU(柴田歩)さんと表参道の夜景をバックに最近オラクル青山センターにできた初カフェテリアで打合せ。DBのプロダクトマネジャーのMariaとディスカッションできて有意義だった。自分達の考えてた方向性と同じだった。
複雑なクエリで統計からのカーディナリティ見積が困難なケースに対応してきた適応計画、ディレクティブ(動的統計、統計フィードバック、拡張統計)。12.2 でデフォルト false になった心。統計固定時のLOW_VALUE、HIGH_VALUE はデータ型の最小、最大に。など考えてた通りだった。ディレクティブからの拡張統計は単表のみという指摘は助かった。

*1:以下で紹介しているスライドは公開版資料に含まれないものがあります