SQLチューニングアドバイザの結果は信頼できるのか?


ここでは、ORACLEデータベースのSQLチューニングアドバイザの結果の信頼度について紹介したいと思います。

SQLチューニングアドバイザとは

ORACLEにチューニングパックに含まれるSQLの診断をしてくれるソフトウェアです。

SQLのチューニングに関するアドバイスや対応方法やどれくらい改善されるか予測値を算出してくれます。

チューニングパックはオプションなので、チューニングパックを購入していないと利用することが出来ません。

SQLチューニングアドバイザのアドバイスとは

具体的には、次のようなアドバイスが表示されます。
 ・統計情報の取得
 ・インデックスの作成
 ・SQL文の書き換え
 ・SQLプロファイルの実装
 ・SQL計画ベースラインの登録

SQLチューニングアドバイザのメリット

SQLチューニングアドバイザを使うメリットは次のとおりです。
 ・SQLチューニングの手間を省くことができる
 ・専門知識がなくてもチューニングができる

実際のところチューニングアドバイザのアドバイスは信頼できるのか?

結論から言うと、かなり信頼できます
意外と使っていない方が多いかもしれませんが、下手な経験則よりも効果的です。

特にインデックスの作成は、経験則で作るよりも確実に効果的なインデックスを推奨してくれます。

とても複雑なSQLでもない限り、結構な確率で効果的な回答をしてくれます。

例えば、Aテーブルにインデックスを作ると、SQL効率が何%向上するよ、みたいな形でアドバイスしてくれるのでメリットも分かりやすいです。

他にも実行計画がこう変わるよとか、ヒントを入れるときの参考にも出来ます。

ただし注意点もあります

これはSQLチューニングアドバイザに限ったことではありませんが、注意点もあります。

1つめ:メッセージを読み取るには基礎知識が必須
 少しメッセージにクセがあるので、ある程度ORACLEに精通した人でないと、SQLチューニングアドバイザのメッセージ内容を正しく読み取ることが出来ません。基本的な用語の意味を理解しておく必要があります。

2つめ:リソース消費を抑えるための施策が提示されることがある
 例えば、SQLによってはCPU消費が多いので下げましょうという施策の提示があるとします。これは至極当然なのですが、CPU消費を下げる施策を講じることで逆にSQLの処理時間が長くなることがあります。なぜかというと、そのSQLにに割り当てるリソース(CPU)を下げているからです。
 この辺りは注意が必要です。より多くのリソースを消費してでも処理時間を短くしたいSQLにこの施策を講じることは逆効果になります。ORACLEはデータベース全体の最適化を考えてプランを提示することもあるので、提示されたプランを講じるか否か判断するための知識が必要です。

まとめ:かなり信頼できるけど実装内容については有識者が判断する必要がある

SQLチューニングアドバイザの精度は高く有意義なものだと思います。
正直なところ、何も知識のない人がすべてのプランを採用しても、データベース全体でみるとパフォーマンスの向上につながるとさえ思います。

ただし、前述の通り、リソースを割いてでも処理時間を短くしたい処理など、個別に判断が必要なケースもあります。

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては「SELECT文のSQLチューニング方法まとめ」で紹介しておりますのでぜひ参考にしてください。