技 術 ノート データベースパフォーマンス 向 上 のための 高 速 SQL プロファイリング エンバカデロ テクノロジーズ 2009 年 3 月 102-0072 東 京 都 千 代 田 区 飯 田 橋 4-7-1 ロックビレイビル 8F TEL 03-4577-4520 FAX 03-6843-0961
Embarcadero Technologies
はじめに 目 標 を 達 成 するには まず 現 状 を 知 る 必 要 があります データベースのパフォーマンスに 問 題 がある 場 合 どのクエリー ストアドルーチン トリガーにその 原 因 があるのか 問 題 の 全 体 像 を 早 く 把 握 できればできるほど 問 題 解 決 も 早 くなります しかし 大 抵 の 場 合 運 用 データベースの 管 理 者 は 統 一 性 のない 雑 多 なソースやツールからさまざまなパフォーマンスデータを 抽 出 して 追 跡 することに 多 くの 時 間 を 奪 われてしまいます そこで 全 体 像 を 把 握 することが 重 要 になってきます 細 かいこ とに 捕 らわれるのではなく 全 体 像 をつかむことによって 問 題 の 本 質 を 大 局 的 に 捉 えることができ ます アプリケーション 開 発 チームのフルタイムのメンバーであれ 本 番 稼 働 の 直 前 に スーパー 助 っ 人 として 急 遽 駆 り 出 されたのであれ 自 分 の 仕 事 をなるべく 早 く しかも 最 小 限 のリソースで 片 付 けら れることができれば それに 越 したことはありません 往 々にして 仕 事 をスムーズに 終 えることができるか(そして 週 末 を 楽 しく 過 ごすことができる か) あるいは 真 夜 中 までクエリーレポートやさまざまなパフォーマンス 統 計 データと 格 闘 すること になるかの 境 目 は 自 分 が 自 由 に 使 える 適 切 なツールを 持 っているかどうかにあります Embarcadero DB Optimizer は 問 題 のあるSQL 文 を 検 出 するための インストールと 設 定 が 簡 単 なエージェント 不 要 のデスクトップツールです DB Optimizerを 使 用 すれば Oracle Microsoft SQL Server Sybase IBM DB2 for LUW といったデータベースをすばやくプロファイリングし パ フォーマンス 劣 化 を 引 き 起 こしているSQLをすばやく 特 定 および 修 正 することが 可 能 になります ま た DB Optimizerを 使 用 することで 運 用 データベースの 管 理 者 や 開 発 者 QAエンジニアは 高 い 操 作 性 のIDE を 用 いてSQLのテスト プロファイル チューニングを 包 括 的 かつ 柔 軟 に 実 施 すること ができるようになります DB Optimizer には 開 発 者 がコーディング 作 業 を 合 理 化 しつつ 高 品 質 のコードを 作 成 できるよう コードコンプリーション リアルタイムエラーチェック 実 行 計 画 オンザフライチューニングとい った 機 能 が 搭 載 されているほか Rapid SQL Developer Standard Edition も 組 み 込 まれています しかし ほとんどの 運 用 データベースの 管 理 者 や 開 発 者 が 気 付 いているとおり データベースのパフ ォーマンスを 最 適 化 するには まず 問 題 の 正 確 な 診 断 が 必 要 です データベースのプロファイリング によって 問 題 をすばやく 診 断 することができれば 問 題 の 特 定 に 無 駄 な 時 間 を 費 やす 必 要 がなくなり 問 題 の 修 正 に 集 中 することができます この 文 書 では DB Optimizer を 使 用 することによって データベースのプロファイリングを 実 行 し いかに 迅 速 かつ 簡 単 に 問 題 のある SQL 文 を 検 出 できるかについて 説 明 します DB Optimizer は 主 に 以 下 の 3 つの 方 法 によって 迅 速 なプロファイリングの 実 行 をサポートし プロファイリングの 手 間 を 大 幅 に 軽 減 します 待 ち 時 間 分 析 データのグラフィカル 表 示 により データベースのパフォーマンス 劣 化 の 原 因 となる SQL を 特 定 SQL テキスト イベント セッション 子 カーソルおよび 統 計 情 報 を 含 む 個 々の SQL 文 に 関 する 詳 細 なアクティビティ 情 報 の 検 出 Embarcadero Technologies - 1 -
さまざまな RDMS プラットフォームに 対 応 した インストールが 簡 単 なエージェント 不 要 の デスクトップツールによる 包 括 的 なプロファイリング 待 ち 時 間 分 析 により 時 間 とコストを 節 約 Embarcadero DB Optimizer は データベースのパフォーマンス 劣 化 を 引 き 起 こす SQL を 容 易 に 検 出 できる 待 ち 時 間 分 析 のビジュアル 化 機 能 を 提 供 します 待 ち 時 間 分 析 VS. トレース 分 析 近 年 待 ち 時 間 分 析 は 問 題 解 決 に より 実 際 的 でより 直 感 的 であることから データベースパフォ ーマンス 分 析 の 分 野 では 広 く 支 持 を 得 ています 待 ち 時 間 分 析 は その 直 観 的 な 性 質 から ボトルネ ック 分 析 という 通 称 でも 呼 ばれています そしてデータベースのボトルネックの 検 出 をより 迅 速 か つ 簡 単 に 行 うことは すべてのデータベース 管 理 者 にとっての 課 題 です 待 ち 時 間 分 析 の 利 点 を 説 明 するのに 朝 の 通 勤 時 間 を 短 縮 する 方 法 を 用 いるとよいでしょう より 速 く 職 場 に 到 着 したいのであれば 単 に 移 動 距 離 を 測 定 したり 電 車 の 走 行 時 間 を 計 ることから 始 めた のではだめでしょう おそらく 信 号 の 待 ち 時 間 が 少 ないルートはどれか 乗 り 換 えがスムーズなの はどれかなどを 考 察 することによって どのルートが 最 も 速 いのかが 分 かるはずです 場 合 によって は 遠 回 りをしたほうが より 速 く 到 着 できることもあるでしょう 従 来 のトレース 分 析 ツールは データベースが 時 間 軸 で 正 確 に 何 を 行 っているかという 膨 大 なリスト を 提 供 する 一 般 的 なツールです トレース 分 析 では 何 を 探 しているかについては 分 かっていて ト レーステーブルのためにカスタムクエリーを 記 述 する 労 力 を 惜 しまなければ 必 要 とする 情 報 が 得 ら れるでしょう トレース 分 析 は 強 力 なツールですが それは すでにパフォーマンス 問 題 を 切 り 分 け できているときにのみ 最 も 役 に 立 つのです 待 ち 時 間 分 析 を 用 いれば エンドユーザーが 必 要 とする 情 報 を 取 得 するまで 待 たされる 総 合 的 な 遅 延 リストを 分 析 することで 問 題 を 検 出 できます ほとんどの SQL パフォーマンス 問 題 解 決 の 第 一 歩 は データベースクエリーを 実 行 するのにどれぐらい 時 間 がかかっているか そして そしてその 時 間 を どれぐらい 節 約 することができるのか また 個 々のクエリー 実 行 計 画 ストアドルーチンなどの 最 適 化 によって どの 程 度 パフォーマンスを 改 善 できるのかを 知 ることです 待 ち 時 間 分 析 では 処 理 時 間 の 遅 いクエリーとプロシージャがどこで どのような 頻 度 で 実 行 されているかを 把 握 できます DB OPTIMIZER の 待 ち 時 間 分 析 サポート DB Optimizer は 待 ち 時 間 分 析 の 手 法 を 活 用 し 容 易 なナビゲーション( 図 1) 容 易 な 分 析 ( 図 2) が 可 能 なインターフェイスによって これらの 情 報 をチャートやグラフィック 表 示 によって 提 供 しま す DB Optimizer は 待 機 イベントをカテゴリー 分 けし それらを 直 観 的 なタブ 表 示 に 分 類 することで パフォーマンス 問 題 をより 詳 細 に 理 解 できる 第 2 のビューを 提 供 します カテゴリータブの 異 なるエ ントリーには 待 機 イベント 名 と プロファイリングセッション 全 体 にわたって あるいは 選 択 した 時 間 間 隔 内 で そのイベントでどれだけの 時 間 を 消 費 しているかを 表 示 します Embarcadero Technologies - 2 -
図 1: DB Optimizer の SQL プロファイリング DB Optimizer は 待 ち 時 間 分 析 の 表 示 に 待 機 イベントカテゴリーを 使 用 します 待 ち 時 間 分 析 のイ ンターフェイスでは データベース 設 定 に 関 連 する 問 題 とアプリケーションアーキテクチャに 関 する 問 題 についても 表 示 します ここで 待 ち 時 間 についての 説 明 と 考 えられる 原 因 についてヒントを 与 えるツールチップが 表 示 さ れる 点 に 注 意 してください 以 下 は SQL Server のプロファイリングを 行 った 例 です 図 2: クイックツールチップ データベースプラットフォームごとの 待 機 イベントカテゴリー データベース プラットフォーム: 待 機 イベント カテゴリー: Oracle Sybase DB2 SQL Server On CPU Application User I/O Other Commit System I/O Configuration Cluster CPU Lock I/O Memory Network Other Other Fetch Cursor Execution Operation Transaction Connectivity CPU Lock I/O Memory Other Buffer Embarcadero Technologies - 3 -
DB Optimizer は わずか 数 分 でインストール 可 能 なエージェント 不 要 のデスクトップツールです プロファイリングセッションの 作 成 は データソースを 指 定 して プロファイルセッションにパラメ ータを 設 定 する 程 度 で 簡 単 に 行 えます プロファイリングは 情 報 をその 場 で 表 示 して 分 析 するリア ルタイムプロファイリングと セッションを 保 存 してあとで 分 析 する 手 法 を 選 択 することができます DB Optimizer は 開 発 プロセスにも 柔 軟 に 結 合 させることができ 開 発 フェーズと 運 用 フェーズ 間 での 橋 渡 しも 容 易 です 分 析 をチームで 共 有 することは ファイル 共 有 と 同 じくらい 簡 単 です DB Optimizer を 利 用 して 待 ち 時 間 分 析 情 報 を 共 有 することで 以 下 のような 有 効 活 用 が 可 能 にな ります アドホックテスト より 生 産 的 なコードレビュー 運 用 フェーズでのパフォーマンス 劣 化 時 の 問 題 点 特 定 大 きな 効 果 が 期 待 できるアドホックテスト アプリケーションのテストサイクルでは データベース 管 理 者 の 専 門 知 識 が 大 変 に 貴 重 になります 残 念 ながら 彼 らはデータベースの 管 理 や 監 視 に 忙 しいのが 常 です 多 くの 運 用 データベースの 管 理 者 は データベースが 常 に 効 率 よく 稼 動 していることを 確 実 にするために 努 力 していますが 彼 らの 専 門 知 識 は 運 用 前 のアプリケーションのパフォーマンス 問 題 検 出 にも 役 立 てることができます しかしながら 彼 らがアプリケーション 開 発 に 関 与 する 機 会 はめったにありません データベース 問 題 をすばやくプロファイリング/ 分 析 できるデスクトップツールを 導 入 すれば 開 発 プロセスのどの ようなフェーズにおいても それを 活 用 することができます これによって 得 られる 生 産 性 向 上 は プロジェクトのために 費 やしたわずかな 時 間 が 有 効 に 利 用 されることを 意 味 しています それがたとえ 3 分 のプロファイルなのか 負 荷 テスト 中 の 膨 大 な 分 析 なのかにかかわらず DB Optimizer の 支 援 によって 運 用 データベース 管 理 者 開 発 者 QA エンジニアの 間 での 共 同 作 業 を 最 大 限 に 活 かすことが 可 能 です QA サイクル 中 のプロファイリング アプリケーションの 承 認 テストの 実 施 を 通 してデータベースのプロファイリングを 行 うことは 実 際 的 なシナリオでのローインパクト 分 析 が 可 能 になります QA エンジニアがテストケースを 用 いて 作 業 を 行 うときのプロファイリングによって データベース 管 理 者 は 実 際 のシナリオに 即 してデータ ベースのプロファイリングを 行 う 機 会 を 得 ることができます DB Optimizer では セットアップは 必 要 なく 他 のチームへの 影 響 もありません そして 必 要 なフィードバックを 開 発 チームメンバー にすばやく 行 うことができます QA サイクル 中 あるいはバグを 修 正 したときには 通 常 アプリケーションの 変 更 によって 確 認 作 業 と 追 加 のテストが 必 要 になります DB Optimizer を 用 いれば プロジェクトの 最 終 テストフェー ズで 発 生 したバグフィックスが データベースパフォーマンスに 悪 影 響 を 与 えないことを 確 認 するこ とができます 例 えば DB Optimizer の SQL タブでは たった 15 分 のプロファイリングセッションでも その 中 で 最 も 遅 い SQL 文 を 簡 単 に 見 つけ 出 すことができます Embarcadero Technologies - 4 -
図 3: ステートメントプロファイル 各 SQL 文 に 対 して 以 下 のような 統 計 情 報 が 表 示 されます 実 行 回 数 全 経 過 時 間 待 ち 時 間 分 析 (どこで 時 間 を 消 費 したかのブレークダウン) より 生 産 的 なコードレビュー 一 部 の 組 織 では 運 用 データベースの 管 理 者 に コードレビューまでを 求 めることがあります これ らのレビュー 作 業 は SQL 文 のレビューとストアドプロシージャの 実 行 計 画 の 効 率 性 を 確 認 するこ とにフォーカスします しばしば コードレビュー 作 業 は 非 公 式 なことが 多 く 予 定 されていたもの でもないため 運 用 データベースの 管 理 者 にとっては わずかな 時 間 で 完 了 できることが 重 要 になり ます SQL のコーディングスタイルは 開 発 者 によって 異 なり いわば 十 人 十 色 です SQL 文 では 確 実 に 必 要 なデータだけがクエリー 内 で 処 理 されていることが 重 要 です 大 きな JOIN や 複 雑 な WHERE 節 に 対 処 することで データベースパフォーマンスは 向 上 することがあります パフォーマ ンス 問 題 は 一 握 りの SQL 文 と 関 係 していることがあり これらの 問 題 のある SQL 文 の 利 用 頻 度 に よって パフォーマンス 上 の 問 題 が 顕 在 化 するのです DB Optimizer の 重 要 な 長 所 の 1 つは 述 語 分 析 情 報 の 表 示 です 述 語 分 析 では 述 語 用 法 によって クエリーを 分 析 し 同 じようなクエリーがどれぐらいの 頻 度 で 実 行 されているかをすばやく 確 認 する ことができます 効 率 の 悪 いクエリーや JOIN が 複 数 回 実 行 されている 場 合 には DB Optimizer は それぞれがどれぐらいの 回 数 どれぐらいの 長 さで 実 行 されているかをビジュアルに 表 示 します こ の 機 能 は 開 発 チームに 一 貫 したデータ 検 索 のフィードバックを 提 供 するときに 役 立 ちます Embarcadero Technologies - 5 -
図 4: 述 語 分 析 運 用 フェーズでのパフォーマンス 劣 化 時 の 問 題 点 特 定 アプリケーションが 稼 動 し 始 めると テスト 環 境 では 予 測 しなかったようなパフォーマンス 問 題 に 遭 遇 することがあります 稼 働 環 境 と 完 全 に 一 致 するようなテスト 環 境 を 用 意 することは 困 難 なこと が 多 く テスト 環 境 であれば 状 況 は 比 較 的 シンプルなので たとえハードウェアのスペック 不 足 や ソフトウェアのライセンス 不 足 などといった 物 理 的 な 要 因 があったとしても そこでパフォーマンス 問 題 を 特 定 することは 比 較 的 容 易 で 運 用 環 境 でのプロファイリングの 比 ではありません しかし 運 用 環 境 でのデータベースのプロファイリングは 負 荷 のかかったシステム 上 での 複 雑 な 操 作 でのみ 発 生 するような 再 現 が 極 めて 困 難 な 問 題 など 最 も 厳 しいパフォーマンス 問 題 を 捕 捉 するの に 最 も 適 した 手 法 であるといえます 運 用 環 境 でのデータベースのプロファイリング 手 法 を 用 いれば 例 えば アプリケーションをリアルタイムに 利 用 している 最 中 に 動 的 な SQL とストアドプロシー ジャをより 正 確 にプロファイリングし 分 析 することができます クラスター 環 境 や 分 散 環 境 などで 複 数 のデータベースが 混 在 する 場 合 でも 運 用 データベースの 管 理 者 は それぞれのデータベースのプロファイリングのために あるツールから 別 のツールへその 都 度 切 り 替 える 必 要 はなくなります DB Optimizer では それぞれのデータベースに 対 して 同 じツー ル 環 境 でプロファイリングセッションを 行 うことができるので 必 要 な 分 析 作 業 に 集 中 できるのです DB Optimizer でプロファイリングセッションを 実 行 し 保 存 しておけば 同 時 に 複 数 のセッションを 見 て 問 題 箇 所 を 比 較 することもできます ツールバーから Profile Launch Configuration ダイア ログボックスを 開 けば データソースプロファイリングセッションのカスタマイズと 管 理 も 可 能 です Embarcadero Technologies - 6 -
DB Optimizer のプロファイリングセッションは 簡 単 に 保 存 して 共 有 可 能 です 運 用 段 階 での 修 正 に もう 何 週 間 もかける 必 要 はありません 運 用 データベースの 管 理 者 は プロファイリングのスナ ップショットを 使 って 診 断 を 行 い 同 じスナップショットを 開 発 チームに 転 送 して 診 断 と 修 正 の 確 認 に 利 用 させることも 可 能 です 開 発 者 は DB Optimizer を 使 い 運 用 環 境 でのプロファイリング と 同 じ 設 定 で テスト 環 境 でのデータベースプロファイリングを 再 実 行 できます DB OPTIMIZER の 役 割 データベースとアプリケーションのパフォーマンスを 最 大 化 します Embarcadero DB Optimizer を 用 いれば データベース 管 理 者 と 開 発 者 は パフォーマンス 劣 化 を 引 き 起 こす SQL をすばやく 発 見 診 断 最 適 化 できるようになり データベースとアプリケーション のパフォーマンスを 最 大 化 することができます DB Optimizer では データ 集 約 型 のクエリーや 頻 繁 に 実 行 されるクエリーを 特 定 し その SQL 文 の 統 計 情 報 (CPU I/O 待 ち 時 間 )を 使 って 詳 細 な 分 析 を 行 い 問 題 の SQL 文 をチューニングします 開 発 サイクルを 通 してSQL の 最 適 化 を 支 援 運 用 段 階 のデータベースとアプリケーションのパフォーマンス 問 題 に 対 応 高 い 操 作 性 のIDE が SQL の 開 発 テスト プロファイル チューニングを 包 括 的 に 支 援 以 下 は DB Optimizer の 主 要 な 機 能 です データベースのパフォーマンス 劣 化 の 原 因 となる SQL を 容 易 に 特 定 できる 待 ち 時 間 分 析 のグ ラフィカル 表 示 設 定 可 能 な 時 間 枠 内 でのデータソース 全 体 に 対 する 継 続 的 なプロファイリングモニタ すべての DML 文 ストアドルーチン SQL ファイル システムグローバル 領 域 のチューニ ングに 対 応 したバッチチューニング SQL がどのように 実 行 されパフォーマンスに 影 響 を 与 えるかを 理 解 できる 実 行 計 画 リアルタイムに 不 適 切 な SQL を 自 動 検 出 して 修 正 案 を 提 示 し クイック 修 正 可 能 な SQL エ ディタ DB OPTIMIZER の ROI DB Optimizer のプロファイリングおよびチューニング 機 能 を 開 発 プロセスに 組 み 入 れることで 開 発 段 階 からコードを 最 適 化 し QA からカットオーバーまでの 期 間 を 短 縮 化 することができます そ の 結 果 初 期 段 階 から 高 いサービスレベルを 達 成 することが 可 能 になります また 頻 繁 に 発 生 する 変 更 や 修 正 に 際 しても それが 新 たにパフォーマンス 問 題 を 引 き 起 こすことがないように 事 前 に 確 認 しておくこともできます DB Optimizer の 採 用 により 以 下 の 点 で ROI を 期 待 できます パフォーマンス 劣 化 を 引 き 起 こすSQLの 特 定 と 修 正 にかかる 時 間 の 短 縮 データベースパフォーマンスの 向 上 と その 結 果 エンドユーザーの 生 産 性 および 満 足 度 の 向 上 QAサイクルの 短 縮 Embarcadero Technologies - 7 -
エンバカデロ テクノロジーズについて エンバカデロ テクノロジーズは 1993 年 にデータベースツールベンダーとして 設 立 され 2008 年 にボーラン ドの 開 発 ツール 部 門 CodeGear との 合 併 によって アプリケーション 開 発 者 とデータベース 技 術 者 が 多 様 な 環 境 でソフトウェアアプリケーションを 設 計 構 築 実 行 するためのツールを 提 供 する 最 大 規 模 の 独 立 系 ツール ベンダーとなりました 米 国 企 業 の 総 収 入 ランキング フォーチュン 100 のうち 90 以 上 の 企 業 と 世 界 で 300 万 以 上 のコミュニティが エンバカデロのDelphi C++Builder JBuilder といったCodeGear 製 品 や ER/Studio DBArtisan RapidSQL をはじめとするDatabaseGear 製 品 を 採 用 し 生 産 性 の 向 上 と 革 新 的 なソフトウェア 開 発 を 実 現 しています エンバカデロ テクノロジーズは サンフランシスコに 本 社 を 置 き 世 界 各 国 に 支 社 を 展 開 しています 詳 細 は www.embarcadero.com/jp をご 覧 ください