データベースの構造上のボトルネックを「見える化」する

パフォーマンス向上の指針前回、SQLプロファイリングの概要と簡単なチューニングの例を紹介しました。SQLパフォーマンス問題を「見える化」することによる効果をご覧いただきましたが、実際のデータベースでは、より広範な要素がチューニングにかかわります。全体像を容易に理解できることも「見える化」の効果なので

藤井 等

2010年10月18日 20:00

パフォーマンス向上の指針

前回、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文を読み解いて解析するのは大変ですが、図であれば一目瞭然です。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30