オラクルコンサルが語る新しいチューニング&運用アプローチ日本オラクル株式会社コンサルティングサービス統括 テクノロジーソリューションコンサルティング統括本部アソシエイトコンサルタント 内田慎介
Copyright© 2011, Oracle. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2011, Oracle. All rights reserved.
Agenda
• Introduction
• Cost Base Optimizer
• 今までのチューニング&運用アプローチ
• SQL文はバインド変数化する
• 統計情報を運用管理する
• 今までのチューニング&運用アプローチの課題
• 11gからの新機能• 新機能を理解する
• Cardinality Feedback
• Adaptive Cursor Sharing
• SQL Plan Management
• 新しいチューニング&運用アプローチ
• 統計情報を運用管理する + SPMを利用する
• 新しいチューニング&運用アプローチ
3
Copyright© 2011, Oracle. All rights reserved. 4
Introduction
Cost Base Optimizer
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
実データ
CBOのインプット情報とアウトプット情報
• Cost Base Optimizer (CBO)
• 問い合わせ結果を生成する最も効率的な方法を決定し、実行計画を作成する機能
• 統計情報• CBOのインプット情報の1つ
• 表、索引、使用している領域、カーディナリティ、データ分布などのデータ特性を表す情報
• 実行計画• CBOのアウトプット情報
• Cost Base Optimizer (CBO)によって生成されたSQL実行アルゴリズム
5
SQLテキスト
パラメータ
オブジェクト構造
環境
実行計画
レスポンス
統計情報
Cost Base Optimizer
Copyright© 2011, Oracle. All rights reserved.
SQL文処理イメージ
6
SQL発行
CBO
パーサ
行ソース
ジェネレータ
共有プール
SQL実行 結果出力
SQL実行可否チェック
SQL情報チェック
ソフトパース
ハードパース SQL情報キャッシュ
実行計画を渡す
実行計画を使ってSQLの実行に必要なデータ構造を生成
• 大きく2つのSQL実行の流れが存在します
• ソフトパース• 共有プール上にSQL情報がキャッシュされていた
• ハードパース• 共有プール上にSQL情報がキャッシュされていなかった
Copyright© 2011, Oracle. All rights reserved. 7
今までのチューニング&運用アプローチ
SQL文はバインド変数化する
統計情報を運用管理する
今までのチューニング&運用アプローチの課題
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
共有プール
バインド変数化
8
• WHERE句に条件を指定する場合は、バインド変数を使用する• バインド変数を使用しない場合、本来必要でない再解析が多発し、CPU負荷の上昇や共
有プール内の他SQL用の解析結果を追い出すことによるDB全体のスループット低下を招く可能性が高くなる
• ただし、バインド変数を使用せずに値データの異なるSQLを共有させずに、SQLごとに最適な実行計画で処理を行なった方が性能がよい場合もある
SELECT NAME FROM EMP
WHERE EMP_ID = :v_emp_id ;
バインド変数を使用したSQL
SELECT NAME FROM EMP
WHERE EMP_ID = 50 ;
バインド変数を使用しないSQL
共有プール
SELECT NAME FROM EMP
WHERE EMP_ID = 111 ;
SELECT NAME FROM EMP
WHERE EMP_ID = 150 ;
SELECT NAME FROM EMP
WHERE EMP_ID = 200 ;
SELECT NAME FROM EMP
WHERE EMP_ID = 222 ;
SELECT NAME FROM EMP
WHERE EMP_ID = 100 ;
Copyright© 2011, Oracle. All rights reserved.
カーソルの共有機能(cursor sharing)
9
• cursor_sharing パラメータの設定によって、WHERE句の条件が定数であってもバインド変数に置換することが可能となる機能
cursor_sharing = similar の場合
WHERE句の条件の違いが実行計画に影響(条件列のヒストグラム統計が取得されているetc) がなければ、カーソルが共有される
cursor_sharing = force の場合
意味的に同じSQL文であれば、必ずカーソルが共有される
共有プール
SELECT NAME FROM EMP
WHERE EMP_ID = 100 ;
SELECT NAME FROM EMP
WHERE EMP_ID = 50 ;
cursor_sharing = exact の場合(デフォルト)
バインド変数化されていなければ、カーソルは共有されない
Copyright© 2011, Oracle. All rights reserved.
バインド変数先読み機能(bind peek)
10
• ハードパース時にバインド変数の値を考慮して実行計画を算出する機能 bind peek が無効な場合
SQL実行 結果出力SQL解析
バインド変数値をセットし、SQLを実行
バインド変数値を考慮せず、実行計画生成
SQL実行 結果出力SQL解析
SQL実行バインド変数値を取得し、その値を元に実行計画生成
bind peek が有効な場合
メリット バインド変数値を考慮した実行計画を生成できる
デメリットハードパース時のバインド変数値に最適化された実行計画が、その後のソフトパース時も利用されるため、性能劣化する可能性があり
時間
データ数
ハードパース ソフトパース
先読みバインド変数値
実行時実データ値
※揮発性の高い表であるため、ハードパースされたバインド変数値とその後ソフトパースされるバインド変数値に大きな差異が発生し、実行計画が変動する可能性が高まる
Copyright© 2011, Oracle. All rights reserved. 11
今までのチューニング&運用アプローチ
SQL文はバインド変数化する
統計情報を運用管理する
今までのチューニング&運用アプローチの課題
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
レスポンス
統計情報とSQLレスポンスの関係
12
• 統計情報以外のインプットは固定的であることが多い• 統計情報の変動が実行計画の変動を引き起こす要因となることが多い
実データ
SQLテキスト
パラメータ
オブジェクト構造
環境
実行計画
統計情報
Cost Base Optimizer
• 統計情報を判断材料とした実行計画の生成例
SELECT NAME FROM EMP
WHERE EMP_ID = 50 ;
EMP表データ件数
10000件
Cost Base Optimizer EMP表のデータ件数に対して取得するデータ件数が少ないので、全表SCANより索引SCANを利用しよう!
※EMP_IDはPrimary Key
Copyright© 2011, Oracle. All rights reserved.
実データと統計情報のかい離による性能劣化
13
• システムを運用を続けていると、実データ数は増減していく• データ数が増えたことによって、今までFULL SCANを行なっていたものより、INDEX
SCANの方が効率よくなることがある
• 統計情報を取得後更新がなく、統計情報と実データ間に差異が発生した状態にてSQLを実行すると、CBOに効率の悪い実行計画を立てさせる大きな原因となる
FULL SCAN
データ数
レスポンス時間
性能臨界点
INDEX SCAN
統計情報取得 SQL実行
※SQL実行時の実際のデータ量より、統計情報の見積もりが極端に小さいときに注意が必要!
データ量が少ないタイミングで統計情報収集
実際にSQLが実行された時にデータ量が多かった場合、INDEX SCANに比べて大幅に性能が落ちるFULL SCANが実行される
実行計画B
実行計画A
Copyright© 2011, Oracle. All rights reserved.
統計情報取得手法
14
• 表のデータ変動特性別に個別統計情報を判断する
常に一定
データ量
時間
動的静的
単調増加 増減あり(規則的)
データ量
時間
データ量
時間
自動統計情報
1度だけ統計情報を取得すればよい。データ量の変動がないため、自動統計情報収集にて1度取得が行われた後に収集は行われない。
自動統計情報
自動統計情報収集で取得したデータがその時点の統計情報で最大のデータ量となる。
個別統計情報
データ量が最大となるタイミングで手動にて統計情報を取得する。
Copyright© 2011, Oracle. All rights reserved. 15
今までのチューニング&運用アプローチ
SQL文はバインド変数化する
統計情報を運用管理する
今までのチューニング&運用アプローチの課題
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
実データ
SQLテキスト
今までのチューニング&運用アプローチの課題
16
• DBAや開発者は間接的に性能管理を行なっている
• SQLの性能は、CBOのインプット情報を管理することにより最適化する
• SQLの性能に直接的に影響を与える実行計画は管理対象外
レスポンスパラメータ
オブジェクト構造
環境
実行計画
統計情報
Cost Base Optimizer
Copyright© 2011, Oracle. All rights reserved. 17
11gからの新機能
新機能を理解する
Cardinality Feedback
Adaptive Cursor Sharing
SQL Plan Management
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
実データ
SQLテキスト
新機能を理解する
18
• CBOのインプット情報を管理することの重要性は同様
• 新機能を活用することで、CBOのアウトプットである実行計画を直接的に管理することが可能
レスポンスパラメータ
オブジェクト構造
環境
実行計画
統計情報
Cost Base Optimizer
Cardinality Feedback
Adaptive Cursor Sharing
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved. 19
11gからの新機能
新機能を理解する
Cardinality Feedback
Adaptive Cursor Sharing
SQL Plan Management
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
SQLテキスト
機能概要
20
• Cardinality Feedback 機能• 実行計画を生成するCBOのインプット情報に実データのカーディナリティを加えること
によって、より最適な実行計画を生成する機能
• ハードパース時、統計情報と実データのカーディナリティにかい離がある場合、そのカーディナリティを記録し、その後実行される同一SQLの実行計画は、実データを加味して最適になるように変更される可能性がある
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
実データ
レスポンスパラメータ
オブジェクト構造
環境
実行計画
Cost Base Optimizer
Cardinality Feedback
統計情報
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(1/2)
21
• SQL実行時(ハードパースのみ)に統計情報と実データのカーディナリティにかい離があるかどうかを確認する
SQL発行
CBO
パーサ
行ソース
ジェネレータ
共有プール
SQL実行 結果出力
SQL実行可否チェック
SQL情報チェック
ハードパース SQL情報キャッシュ
実行計画を渡す
実行計画を使ってSQLの実行に必要なデータ構造を生成
カーディナリティ
確認
かい離無
かい離有
メモリ上にカーディナリティを記録
次回実行時にハードパース(子カーソルを生成)する
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(2/2)
22
• カーディナリティ記録後のSQL実行は、カーディナリティを調整し、ハードパースにてSQLを再実行します
SQL発行
CBO
パーサ
行ソース
ジェネレータ
共有プール
SQL実行 結果出力
ハードパース SQL情報キャッシュ
実行計画を渡す
実行計画を使ってSQLの実行に必要なデータ構造を生成
カーディナリティ調整し
再度実行計画生成
SQL実行可否チェック
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
メリットと考慮事項
23
• 統計情報(カーディナリティ)の適切な取得ができなかった場合でも、実データと統計情報のかい離を補正した上で実行計画を生成することが可能
メリット
考慮事項
• CBOのインプット情報(統計情報など)を固定した場合でも、実行計画が変化する可能性がある
• 実データのカーディナリティを記録するのは、ハードパース時のみである
• カーディナリティを記録した後の実行は必ずハードパースとなる
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved. 24
11gからの新機能
新機能を理解する
Cardinality Feedback
Adaptive Cursor Sharing
SQL Plan Management
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
機能概要
25
• バインド変数化の課題• ハードパース時のバインド変数値に最適化された実行計画が、その後のソフトパース時も
利用されるため、性能劣化する可能性があり
• Adaptive Cursor Sharing 機能• 同一SQLでもバインド変数値が異なるため既存の実行計画とは異なる実行計画が適切で
ある場合に、新たに子カーソルを生成し、実行計画が適切であるかどうかを自動的に判断
実行計画ACBO
実行計画B
バインド変数値
• x = 1
• x = 10000
Adaptive Cursor Sharing
x = 1 で最適化された実行計画
例) INDEX SCAN
x = 10000 で最適化された実行計画
例) TABLE FULL SCAN
• 以下のv$表の値を随時更新しながら、実行計画を生成している
バインド対応
v$sql v$sql_shared_cursor
カーソル共有
v$sql_cs_histogram
カーソルヒストグラム
v$sql_cs_statistics
カーソル統計情報
v$sql_cs_selectivity
カーソル選択性
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(1/5)
26
• バインド変数値x=1 を使用したSQL文を2回実行• 1回目はハードパースで実行し、2回目は、ソフトパースで実行
実行計画ACBO
バインド変数値
• x = 1
Adaptive Cursor Sharingx = 1 で最適化された実行計画
例) INDEX SCAN
バインド対応
v$sql
CHILD_NUMBER IS_BIND_SENSITIVE IS_BIND_AWARE IS_SHAREABLE
0 Y N Y
v$sql_cs_histogram
カーソルヒストグラムCHILD_NUMBER BUCKET_ID COUNT
0 0 2
0 1 0
0 2 0
※今後セレクティビティが変わる可能性のあるSQL文であるとして認識されている
※BUCKET_ID=0 に、実行した回数分バケットの値がCOUNTされる
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(2/5)
27
• バインド変数値が大きく異なるx=10000 を使用したSQL文を2回実行• ソフトパースで実行され、子カーソルは生成されない
実行計画ACBO
バインド変数値
• x = 10000
Adaptive Cursor Sharingx = 1 で最適化された実行計画
例) INDEX SCAN
バインド対応
v$sql
CHILD_NUMBER IS_BIND_SENSITIVE IS_BIND_AWARE IS_SHAREABLE
0 Y N Y
v$sql_cs_histogram
カーソルヒストグラムCHILD_NUMBER BUCKET_ID COUNT
0 0 2
0 1 2
0 2 0
※先ほどと変化なしで、子カーソルは生成されていない
※ BUCKET_ID=1 に、実行した回数分バケットの値がCOUNTされる
※セレクティビティが大きく変化することが検出されている
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(3/5)
28
• バインド変数値x=10000 を使用したSQL文を3回目を実行• ハードパースで実行し、新たな子カーソルが生成される
実行計画ACBO
バインド変数値
• x = 10000
Adaptive Cursor Sharingx = 1 で最適化された実行計画
例) INDEX SCAN
バインド対応
v$sql
CHILD_NUMBER IS_BIND_SENSITIVE IS_BIND_AWARE IS_SHAREABLE
0 Y N Y
1 Y Y Y
v$sql_cs_histogram
カーソルヒストグラム
CHILD_NUMBER BUCKET_ID COUNT
1 0 0
1 1 1
1 2 0
0 0 2
0 1 2
0 2 0
※BUCKET_ID=1がCOUNT
実行計画B
x = 10000 で最適化された実行計画
例) TABLE FULL SCAN
※新たに生成された子カーソルは、バインド対応(bind-aware)となる
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(4/5)
29
• バインド変数値x=1 を使用したSQL文を実行• ソフトパースでは実行されず、ハードパースで実行し、新たな子カーソルが生成される
実行計画ACBO
バインド変数値
• x = 1
Adaptive Cursor Sharingx = 1 で最適化された実行計画
例) INDEX SCAN
バインド対応
v$sql
CHILD_NUMBER IS_BIND_SENSITIVE IS_BIND_AWARE IS_SHAREABLE
0 Y N N
1 Y Y Y
2 Y Y Y
実行計画B
x = 10000 で最適化された実行計画
例) TABLE FULL SCAN
※以前実行されたバインド変数値のSQL文ではあるが、最初に作成された子カーソル(CHILD_NUMBER=0)は、バインド対応していないため、ハードパースにて新たに子カーソルが生成されてしまう。
※新たに作成された子カーソルの実行計画は、最初に作成された子カーソルの実行計画と同一のため、CHILD_NUMBER=0はAgeOut対象となる。
実行計画A
x = 1 で最適化された実行計画
例) INDEX SCAN
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
アーキテクチャ(5/5)
30
• バインド変数値x=2 を使用したSQL文を実行• ソフトパースで実行され、子カーソルは生成されない
実行計画ACBO
バインド変数値
• x = 2
Adaptive Cursor Sharingx = 1 で最適化された実行計画
例) INDEX SCAN
バインド対応
v$sql
実行計画B
x = 10000 で最適化された実行計画
例) TABLE FULL SCAN
※初めて実行されたバインド変数値のSQL文ではあるが、バインド対応している子カーソルのカーソル選択性の範囲として認識されているため、ソフトパースにてSQLは実行され新たな子カーソルは生成されない。
実行計画A
x = 1, 2 で最適化された実行計画
例) INDEX SCAN
CHILD_NUMBER IS_BIND_SENSITIVE IS_BIND_AWARE IS_SHAREABLE
0 Y N N
1 Y Y Y
2 Y Y Y
AgeOut対象
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
メリットと考慮事項
31
• 自動的にバインド変数値を考慮するため、追加設定必要なし
• 重複する実行計画を持つ子カーソルは、共有プールからのAgeOut対象となり、共有プールは効率的に使用される
• バインド変数化されていない環境においても、cursor_sharing = force とすることで本機能を使用することが可能
メリット
考慮事項
• バインド変数値による最適な実行計画が生成されるまでの時間を考慮する必要がある
• インスタンスの再起動や共有プールからのAgeOutを考慮する必要がある
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved. 32
11gからの新機能
新機能を理解する
Cardinality Feedback
Adaptive Cursor Sharing
SQL Plan Management
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
機能概要
33
• CBO自身が実行計画を時間経過とともに履歴として記録し、評価する管理メカニズム
• 複数の実行計画からSQL計画ベースラインを構築し、その中から最適な実行計画を選択可能• Proactive な、未然防止メカニズム
• SPMの3つのフェーズ
取得
選択
改良
1. 取得
実行計画を取得し、SQL計画履歴として記録する
既存の実行計画からのSQL計画ベースラインを作成する
2. 選択
格納されたSQL計画履歴に基づいて、パフォーマンスが低下する可能性を回避する実行計画を選択する
3. 改良
新しい実行計画のパフォーマンスを評価し、より優れたパフォーマンスの実行計画をSQL計画ベースラインに組み込む
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
SQL計画履歴の取得
34
• CBOは新しい実行計画が発行されるごとに実行計画を取得し、SQL計画履歴に格納して管理する
• ただし、SQL計画履歴への格納対象は、再解析/再実行されたSQLである(1回解析済みのSQLのSQL_IDをログに格納して認識している)
• 繰り返し実行されたSQL文の新しい実行計画が取得される
SQL管理ベース(SMB)
SQL計画履歴
SQL計画ベースライン
SYS_SQL_PLAN_1
• SQL管理ベース(SMB)
SQL計画履歴、およびSQL計画ベースラインが格納される領域(SYSAUX表領域)
SYSAUX表領域の10%のサイズが確保される(DBMS_SPM.CONFIGUREプロシージャでサイズ変更可能)
• SQL計画履歴
SQL文に対して生成された承認済みおよび未承認の計画履歴
• SQL計画ベースライン
各SQLごとの最初に取得された計画履歴
承認済みの計画履歴(未承認の実行計画は入らない)
[計画履歴]
SQLテキスト
アウトライン
バインド変数
実行計画
・・・
optimizer_capture_sql_plan_baseline = true
CBO
実行計画A
実行計画AでSQL実行
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
SQL計画ベースラインの選択
35
• 実行計画はSQL計画ベースラインの中に入ったものしか使いません• SQL計画履歴の中の未承認のものは使わない
• ソフトパース時はSPMの機能は利用されません
SQL管理ベース(SMB)
SQL計画履歴
SQL計画ベースライン
SYS_SQL_PLAN_1
SYS_SQL_PLAN_2
実行計画B
CBO
SQL計画ベースライン上の実行計画と一致
実行計画BでSQL実行
実行計画AでSQL実行
SQL計画ベースライン上の実行計画と一致しない
SQL計画ベースライン
各SQLごとの最初に取得された計画履歴
承認済みの計画履歴
SQL計画履歴(未承認)
各SQLごとの2番目以降に取得され、かつ承認されていない計画履歴
optimizer_use_sql_plan_baseline = true
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
SQL計画ベースラインの改良
36
• 新しい実行計画のパフォーマンスを評価し、より優れた実行計画をSQL計画ベースラインに組み込む
• 計画ベースラインの改良には、以下の方法等が存在する
SQL管理ベース(SMB)
SQL計画履歴
SQL計画ベースライン
SYS_SQL_PLAN_1
SYS_SQL_PLAN_2
SQL計画ベースライン
各SQLごとの最初に取得された計画履歴
承認済みの計画履歴
SQL計画履歴(未承認)
各SQLごとの2番目以降に取得され、かつ承認されていない計画履歴
SYS_SQL_PLAN_2
手動による計画のロード(SQLチ
ューニング・セット、もしくはカーソル・キャッシュの使用)
CBOによる自動ロード(DBMS_SPM.EVOLVE_SQL_
PLAN_BASELINEファンクションの使用)
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
レスポンスのコントロール
37
• 実行計画が変動しやすい環境においては、実行計画の変動によりSQLのレスポンスが安定しないことが問題• SPMを用いることで、SQLレスポンスに直結する実行計画を確認し、承認された実行計画
のみを使用することで、SQLレスポンスをコントロールすることが可能
レスポンス
実行計画が変化レスポンスも変化
レスポンス
実行計画が変化
SQL実行に使用される実行計画が変化しないため、レスポンスは急激変化しないSPM
従来
SPMを使用SPMを使用する実行計画は変化しない
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved.
メリットと考慮事項
38
• 実行計画の変動リスクに対応可能
• 複数の実行計画を保存し比較することで、最適な実行計画を選択可能
• 実行計画の管理性が向上する
メリット
考慮事項
• ハードパース時の負荷増
• 実行計画履歴を格納するための領域が必要
• 複数の実行計画の中から最適な実行計画を選択することが必要
• 新しい実行計画を承認して利用するタイミングは次のハードパース時
Adaptive Cursor Sharing
Cardinality Feedback
SQL Plan Management
Copyright© 2011, Oracle. All rights reserved. 39
新しいチューニング&運用アプローチ
統計情報を運用管理する + SPMを利用する
新しいチューニング&運用アプローチ
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
統計情報収集リスクの許容
40
• SPMを用いることで、統計情報の管理と実行計画の管理を切り離すことが可能• 実行計画やレスポンスへの影響を意識することがなく、今までより安全に統計情報の管理
を実施することが可能
実データ
SQLテキスト
レスポンスパラメータ
オブジェクト構造
環境
実行計画
統計情報
Cost Base Optimizer
SPMによって、実行計画が管理されているため、自動的に実行計画が変動する事は無い
統計情報を再収集
SPM
Copyright© 2011, Oracle. All rights reserved.
統計情報管理の重要性
41
• SPMは実行計画を最適化する機能ではないため、実行計画はCBOのインプット情報に依存します
• SPMを使って実行計画を管理したとしても、生成されている実行計画が最適ではない場合は当然データへのアクセス効率も悪くなります• SPMを使用している環境においても、適切な統計情報管理を行ない、質の高い統計情報
を取得することが重要かつ大前提!
実行計画A
CBO
質の悪い統計情報を使用
実行計画B
実行計画C
最適でない実行計画が貯め込まれてしまう
Copyright© 2011, Oracle. All rights reserved. 42
新しいチューニング&運用アプローチ
統計情報を運用管理する + SPMを利用する
新しいチューニング&運用アプローチ
<Insert Picture Here>
Copyright© 2011, Oracle. All rights reserved.
新しいチューニング&運用アプローチ
43
1. バインド変数化の促進
2. 統計情報の管理
実データ
SQLテキスト
レスポンスパラメータ
オブジェクト構造
環境
実行計画
統計情報
Cost Base Optimizer
Cardinality Feedback
Adaptive Cursor Sharing
SQL Plan Management
3. 新機能の理解
• Cardinality Feedback
• Adaptive Cursor Sharing
• SQL Plan Management
ポイント
Copyright© 2011, Oracle. All rights reserved. 44
http://blogs.oracle.com/oracle4engineer/entry/otn_ondemand_questionnaire
OTNオンデマンド 感想
OTNセミナーオンデマンド
コンテンツに対するご意見・ご感想を是非お寄せください。
上記に簡単なアンケート入力フォームをご用意しております。
セミナー講師/資料作成者にフィードバックし、コンテンツのより一層の改善に役立てさせていただきます。
是非ご協力をよろしくお願いいたします。
Copyright© 2011, Oracle. All rights reserved.
OTNセミナーオンデマンド日本オラクルのエンジニアが作成したセミナー資料・動画ダウンロードサイト
掲載コンテンツカテゴリ(一部抜粋)
Database 基礎
Database 現場テクニック
Database スペシャリストが語る
Java
WebLogic Server/アプリケーション・グリッド
EPM/BI 技術情報
サーバー
ストレージ
例えばこんな使い方• 製品概要を効率的につかむ
• 基礎を体系的に学ぶ/学ばせる
• 時間や場所を選ばず(オンデマンド)に受講
• スマートフォンで通勤中にも受講可能
100以上のコンテンツをログイン不要でダウンロードし放題
データベースからハードウェアまで充実のラインナップ
毎月、旬なトピックの新作コンテンツが続々登場
45
OTNオンデマンド
コンテンツ一覧 はこちらhttp://www.oracle.com/technetwork/jp/ondemand/index.html
新作&おすすめコンテンツ情報 はこちらhttp://oracletech.jp/seminar/recommended/000073.html毎月チェック!
Copyright© 2011, Oracle. All rights reserved.
オラクルエンジニア通信オラクル製品に関わるエンジニアの方のための技術情報サイト
46
オラクルエンジニア通信
技術コラム
アクセスランキング
特集テーマPick UP
技術資料
性能管理やチューニングなど月間テーマを掘り下げて詳細にご説明
インストールガイド・設定チュートリアルetc. 欲しい資料への最短ルート
他のエンジニアは何を見ているのか?人気資料のランキングは毎月更新
SQLスクリプト、索引メンテナンスetc. 当たり前の運用/機能が見違える!?
http://blogs.oracle.com/oracle4engineer/
Copyright© 2011, Oracle. All rights reserved.
oracletech.jpITエンジニアの皆様に向けて旬な情報を楽しくお届け
47
oracletech
Viva!Developer
セミナー
スキルアップ
製品/技術情報
ORACLE MASTER!試験頻出分野の模擬問題と解説を好評連載中
Oracle Databaseっていくら?オプション機能も見積れる簡単ツールが大活躍
基礎から最新技術までお勧めセミナーで自分にあった学習方法が見つかる
全国で活躍しているエンジニアにスポットライト。きらりと輝くスキルと視点を盗もう
http://oracletech.jp/
Copyright© 2011, Oracle. All rights reserved. 48
あなたにいちばん近いオラクル
Oracle Directまずはお問合せください
Web問い合わせフォーム フリーダイヤル
0120-155-096
※月曜~金曜9:00~12:00、13:00~18:00(祝日および年末年始除く)
専用お問い合わせフォームにてご相談内容を承ります。http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28
※フォームの入力にはログインが必要となります。※こちらから詳細確認のお電話を差し上げる場合がありますので
ご登録の連絡先が最新のものになっているかご確認下さい。
システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。ステム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。
Oracle Direct
Copyright© 2011, Oracle. All rights reserved.
Copyright© 2011, Oracle. All rights reserved. 50