ソフトウェアのパフォーマンス改善にはSQLのチューニングが不可欠

 さらに藤井氏は、システム移行においてはデータの再設計と並んでもうひとつ重要な項目があると指摘する。それがSQLの最適化である。データベースに格納されたデータをプログラム内で利用するためにはSQLが必須となるが、このとき発行するクエリーが適切でない場合、応答性能が大幅に劣化してしまう危険性がある。とはいえ、SQLに対するパフォーマンスの癖は実環境や実データに大きく左右されるため、万能なSQLというものは存在しない。

 「SQLを考える際には、データベースサーバの種類やネットワークの構成、ハードウェア環境、データの内容にいたるまでを総合的に見る必要があります。システムを移行した場合には条件も変わるため、従来通りの動作をしなくなるということもあるわけです。さらに、最近のアプリケーションは使用するデータ量が多く複雑なので、SQLの問い合わせの回数も膨大になります。仮に1回の問い合わせによるパフォーマンスの低下が微々たるものだとしても、アプリケーション全体でそれが積み重なれば無視できないレベルになってしまいます」(藤井氏)

 そこで活躍するのが「Embarcadero DB Optimizer」だ。DB OptimizerはSQLのボトルネックを発見・改善するための、プロファイリングとチューニングを行うツールである。

 まずプロファイリング機能では、実際に稼働しているシステムに対してSQLを発行し、その挙動を詳細に見ることができるようになっている。これによってSQLのどの部分がボトルネックになっているのかを一目で判断することが可能となる。チューニングの面では、個々のデータベースに対応した最適なSQLを自動で生成する機能を持っている。開発者は候補として挙げられたSQLを実際に実行し、パフォーマンスを調べながら最も適したものを選択することができる。

図3 DB Optimizerを使えばDBアクセスのどの部分がボトルネックになっているのかを一目で把握することができる(クリックで拡大画像表示
図4 チューニングの際には自動で生成されたSQLの候補から最適なものを選択すればよい(クリックで拡大画像表示

 さらに、DB Optimizerから複数の種類のデータベースに接続してチューニングや管理を行うことができるので、データベースごとにソフトウェアを切り替えるような手間も必要ない。複数のデータベースを併用しているシステムや、種類の異なるデータベースでパフォーマンスを比較したい場合などにも威力を発揮する。

図5 Oracle、DB2、Sybase、MS SQL ServerのSQLパフォーマンスチューニングに対応(クリックで拡大画像表示

 SQLの最適化というのは非常に細かなレベルのチューニング作業になるが、その積み重ねこそが必要なのだと藤井氏は言う。

 「現実問題として、人間が体感できるレベルのパフォーマンス劣化が起こってからでは手遅れですよね。開発の段階からしっかりとチューニングし、体感できないレベルのパフォーマンス改善を積み重ねていくことが重要です。大きなボトルネックがひとつあるだけということは稀で、実際には細かいボトルネックの積み重ねというケースがほとんどですから。トータルの段階で顕在化してからでは、直すに直せないという状況に陥ってしまいます」(藤井氏)

 開発段階だけでなく、運用段階でのDB Optimizerの導入も効果的だ。同ツールには統合テストツールや運用ツールと連携させて使用することも可能であり、問題の本質がどこにあるのかを細かく特定し、パフォーマンスの改善につなげることができる。解析結果がSQLのレベルまで踏み込んでレポートされるほか、プロファイリングログを保存して後で分析することもできるので、運用チームだけでなく、開発チームにも現状を正確に伝えることができるのが大きなメリットだ。

 エンバカデロではここで紹介した2つのツールの他にもデータベースの設計や運用、パフォーマンスの改善、変更管理などをサポートするさまざまなツールを提供している。開発ツールも含めた各種ツールを連携させながら、ソフトウェアのライフサイクル全体でデータとの連携を考えていくことが重要だ。

藤井氏

Embarcadero Technologies

次回に続く

http://japan.zdnet.com/extra/embarcadero_201003/story/0,3800103913,20409851,00.htm
データなくしてソフトウェアなし、データベースの重要性
ページリンク
提供:エンバカデロ・テクノロジーズ
[PR]企画・制作 朝日インタラクティブ株式会社 営業部