データベースの構造上のボトルネックを「見える化」する
パフォーマンス向上の指針
前回、SQLプロファイリングの概要と簡単なチューニングの例を紹介しました。SQLパフォーマンス問題を「見える化」することによる効果をご覧いただきましたが、実際のデータベースでは、より広範な要素がチューニングにかかわります。全体像を容易に理解できることも「見える化」の効果なのですが、より複雑で詳細な分析を必要とするときに、その全体像からドリルダウンして特定の箇所を調べることができるのも、「見える化」のメリットです。
例えば、ハードウェア性能がそもそも処理要求に追いついていない場合。これは、CPU時間がハードウェアに搭載されたCPU数を大きく上回る場合です。前回紹介したプロファイリング情報を見れば、CPU負荷が高い場合を見分けられます。
一方、ひとつのSQLの処理に大きな時間がかかっている場合には、そのSQL文の書き方やクエリプラン(実行計画)を見直す必要があるでしょう。ひとつの処理で時間がかかっているということは、並列処理数がマシンスペックを超えているということよりも、SQLそのものに問題がある可能性が高いからです。問題の原因がSQLであるならば、そのSQLチューニング効果も高いと期待できます。そして、SQLのチューニングは、SQLを簡単に書き直すだけで済む場合もあれば、インデックスなど、その他の要素を検討する必要もあります。いろいろな可能性を検討するときに、全体像からだけでは分からない詳細な分析に立ち入る必要が出てくるのです。
DB OptimizerのSQLチューナーの[Analysis]タブでは、SQLクエリーの分析機能を提供しています。この分析機能を用いることで、より詳細にSQLのパフォーマンス改善にかかわる問題を調べることができます。
まず、特に効果の高いインデックスについて見てみましょう。
インデックスの分析と推奨されるインデックスの作成
DB OptimizerのSQLチューナーでは、インデックスに関する情報も解析して表示します。インデックス分析機能を用いると、クエリーにかかわるインデックスの情報が一目で分かります。
インデックス分析では、実行パスで使われているインデックスは、緑色で表示されます。存在するけれどもこの実行パスで使われていないインデックスは、青色で表示されます。
さらに、DB Optimizerは、データベース中のインデックスの有効性を分析して、パフォーマンスが向上すると予想されるインデックス提案をオレンジ色で表示します。この提案を受け入れて、新しいインデックスを作成するには、そのインデックスの左にあるチェック ボックスをオンにして、[Create Indexes]ボタンをクリックするだけです。
前回紹介したように、DB Optimizerでは、チューニングしたSQLをすぐに実行してみることができるので、どの程度SQLクエリーが改善されたかを即確認できます。
図1:インデックス分析(クリックで拡大) |
VST図でクエリーをビジュアルに解析する
このほかに、複雑なクエリーでは、その書き方や実行計画によって、処理効率が大きく変わってくる場合があります。
DB Optimizerは、SQLクエリーを解析し、クエリー内のテーブルのインデックスや制約を分析して、Visual SQL Tuning(VST)図と呼ばれるビジュアル表示によって表します。この図を活用することで、スキーマ設計の不備を容易に発見することができます。
複雑なクエリーでは、しばしば複数のテーブルが結合しているため、どのようなパスでクエリーを実行するかによって、パフォーマンスが変わってきます。これを、SQL文を読み解いて解析するのは大変ですが、図であれば一目瞭然です。