1日かかったクエリを1秒で――改善の理由はコンサルにありTCO削減につながるDBチューニング

データベースの処理は、しばしばシステム全体の性能を大きく左右する。システムのパフォーマンスが悪ければハードウェアリソースの不足を招き、余計な投資が必要になる。逆に適切なチューニングを施せば、ITコストを抑えられるはずだ。MySQLのエキスパートである、サン・マイクロシステムズのエンジニアに、そのポイントを聞いた。

» 2009年06月29日 10時00分 公開
[PR/ITmedia]
PR

 ビジネス環境が激変する昨今、ITへの効率的な投資を模索する動きが続いている。そんな状況の中、オープンソースに注目する企業も少なくないのではないだろうか。だが、ただ価格が安いからという理由だけで導入してもメリットを得られない。的確なメンテナンスを行わなければ、ハードウェアリソースの不足によりさらに投資が必要になることもある。

1日以上かかっていたクエリ処理を1秒に短縮

 システムの性能を大きく改善する可能性があるのが、データベースのパフォーマンスチューニングだ。パフォーマンスチューニングによりシステム性能が改善されれば、負荷が高まった際に既存のハードウェアで耐えられる範囲が拡大し、ハードウェア増強や入れ替えなどのタイミングを遅らせ、システムの延命を図れる。

 また、新規に開発中のシステムであれば、最初のハードウェア投資規模を抑えられる。あるいは逆に、稼働中のシステムで期待されていた性能が出ないような場合には、パフォーマンスチューニングを施して導入コスト増加も抑制できる。いずれにせよ、データベースのパフォーマンスは、システム全体のTCOを大きく左右するものなのである。

 このようなデータベースパフォーマンスチューニングについて、サン・マイクロシステムズ(以下、サン) MySQLプロフェッショナルサービス APAC主幹部長 プリンシパルMySQLコンサルタントの松信嘉範氏は次のように説明する。

サン・マイクロシステムズ MySQLプロフェッショナルサービス APAC主幹部長 プリンシパルMySQLコンサルタント 松信嘉範氏

 「ユーザー企業の皆様が独自に勉強してかなりのチューニングを施したシステムでも、実はまだパフォーマンス改善の余地があるということもしばしばです。わたしたちが初めてコンサルティングするユーザーの場合では、処理時間が2分の1から3分の1に短縮されることも多いですね」

 また、サン MySQLサポートサービス シニアテクニカルサポートエンジニアの奥野幹也氏も、「極端な例だ」と前置きしつつも改善成果を語る。

 「チューニング前に1日以上の処理時間を要していたクエリを、1秒に短縮したケースがあります。1億行もある非常に大規模なシステムだったため、挙動の解析には時間がかかりましたが、具体的に行った対策としてはインデックスを新たに設けただけです」

データベースのパフォーマンスは「1カ所の遅れが全体に影響を及ぼす」

 パフォーマンスチューニングで最も必要となるのは、状況を把握することだ。パフォーマンス低下の原因はさまざまである。例えばクエリの効率が良くない、データベーステーブルの設計が悪い、MySQLが利用できるリソースが不足しているなど、その要因を見極めなければパフォーマンス改善は望めない。

 分析した結果を受けてMySQL自体の処理を改善する方法としては、クエリの書き換えやテーブル設計の見直し、各種パラメータの調整などがあるが、実はMySQLそのものの処理が遅いのではなく、ほかの要因があってMySQLの処理が遅れてみえる、というケースも少なからずある。OSのディスクへの読み書きがボトルネックとなっていたり、MySQLをソースコードからコンパイルする際の設定が稼働させるサーバのCPUに適さない内容だったりするために性能が低下する例もあるという。こういったケースの見極めは、経験を積まないと難しいだろう。

 松信氏は、企業におけるシステム開発において、効率的にパフォーマンスを高めるためのポイントを、次のように語っている。

 「データベースのクエリ処理は“駅伝”に例えられます。個々のSQL文のどこか1カ所でも大きく時間がかかってしまえばレスポンスタイムが大きく悪化してしまいます。そしてそれが、システム全体のパフォーマンスにも悪影響を及ぼすのです。また、システム規模が大きくなれば複数人で開発することになります。平均的なスキルの持ち主たちが思い思いにSQL文を書くよりは、全員がそこそこの腕利きであったり、抜群の腕利きエンジニアが全体をきちんとレビューする方が、総合的なパフォーマンスは高まります。開発チーム全体のスキルの底上げが求められるでしょう」

 また、近年ではソフトウェア的にクエリを自動生成するケースも増えてきたが、これも非効率的なクエリを出す原因になっている。あるパッケージソフトの例では、検索を実行すると、その裏側で200件ものクエリを発行するようなことがあったという。

 「処理効率の悪いクエリは、けっこう簡単に書けてしまうもので、われわれの仕事でも頻繁に見掛けます」と奥野氏は指摘する。処理効率の良いクエリを記述できるようになるには、相応の知識や知恵が必要だと言えるだろう。

MySQL技術者を支援するサンのサポート・コンサルティングサービス

 それでは、このようなパフォーマンスチューニングを、どのように実践していけばよいだろうか。

 いうまでもなくMySQLのソースコードは公開されている。広く普及しているだけに、膨大な関連情報が公開されている。また、セミナーも開催されているし、書籍も出回っている。自力で行うための情報は、求めれば得られるだろう。

 とはいうものの、情報を収集して勉強して身に付けて実践するまでには、当然時間がかかってしまう。なかなかそのような余裕がないというのも、昨今の企業をとりまく現状だろう。このような企業を支援するため、サンではサポート・コンサルティングサービスを実施している。このサービスには、経験豊富なエンジニアが数多く配置されている。ノウハウは社内で共有されており、その中には、米国にあるような日本には存在しないレベルの大規模システムの事例なども取り入れられている。

サン・マイクロシステムズ MySQLサポートサービス シニアテクニカルサポートエンジニア 奥野幹也氏

 前出の松信氏と奥野氏は、いずれもMySQLに関する書籍の執筆をするなど高度な知識とスキルを持ち、それぞれの肩書きが示すように、コンサルティングとサポートのサービスに携わっている。

 「何か問題が起きたとき、その現象は似ていても、原因はユーザーごとに異なっています。毎日のようにソースコードを読みながらMySQLの挙動を確かめています」(奥野氏)

 「経験を積むと、システムの画面を見るだけでチューニングすべきポイントが何となく分かるようになります。開発に使っているツールの癖などが、アプリケーションの挙動に反映されていることもありますね。勉強熱心なユーザーも多いのですが、わたしたちは、日常の業務として、Web系から銀行系に至るまでさまざまなアプリケーションのパフォーマンスチューニングを手掛けており、その点ではユーザー企業よりも広い視野と経験に基づいたアドバイスができると考えていますし、そうしてきたつもりです」(松信氏)

最大のコストとなる、解決までの「時間」を大幅に節約

 松信氏が担当するMySQLコンサルティングサービスは、MySQLに関連する技術的課題が生じた際に、スポット的に対応するサービスだ(ただし、契約手続きなどの都合で発注からサービス提供まで1週間程度のリードタイムが必要)。パフォーマンスチューニングはもちろん、MySQLデータベースのアーキテクチャデザインからデータベース管理、あるいはソースコードの読み方に至るまで、対応する内容は幅広い。

 一方、奥野氏が所属するのはMySQLサポートサービスのチームだ。こちらはMySQLのサブスクリプション契約に含まれるサービスとなる。サポートサービスには通常のサポートだけでなく「コンサルティングサポート」と呼ばれる上級サービスがあり、4段階の契約メニューのうち上位2種「MySQL Enterprise Gold」、同「Platinum」において、1サブスクリプションあたり年間8時間、Unlimited契約とした場合には年間100時間まで利用できる。コンサルティングサポートのメニューには、トラブルシューティングやレビュー、パフォーマンスチューニングなど、顧客の環境に対する具体的なアドバイスやサポート作業が含まれる。通常サポートでは、一般的な質問に対する回答など簡単な問い合わせへの対応を行うが、それより高度なサービスとして提供される。

 ちなみに、サンが持つMySQLに関するナレッジベースは、エンタープライズサブスクリプション契約を結べばユーザーも利用できる。独学するのであれば、それだけでも有力な情報源として使えるだろう。また、Gold以上のサブスクリプション契約では、「クエリアナライザ」をはじめ、状況把握に役立つ各種のツールやコマンドが用意されている。それらを駆使して、対策すべきポイントを絞り込んでいくことも可能だ。

 また、奥野氏は「ベンダーが製品の保証をするのとは違い、わたしたちのサポートはサービスに相当すると考えている」と話す。つまり、サービス自体で対価を得ているという考えだ。顧客が対価を払うだけの価値を提供することに自信がなければ、こうしたサービス事業は成り立たないとも言えるだろう。

 「わたしたちによるコンサルティングを利用すれば、システム上の問題の発見から解決までの時間を大幅に節約できます。パフォーマンス改善によるTCO削減もさることながら、サービスを停滞させないことが、ユーザーの利益の最大化につながるのです」

 MySQLはオープンソースということもあり、サン単体でなく、その背景に世界中のユーザーが作るコミュニティがある。サンのサポートのクオリティの高さの理由の1つにはコミュニティの存在がある。松信氏はサンのサポートのあり方について、次のように説明する。

 「わたしたちがノウハウを蓄積できるのは、やはりユーザーコミュニティのおかげです。コミュニティとの信頼関係があるからこそ、充実したサポートが可能になるのです。これはオープンソースならではの強みです。これからもユーザーへのサポートの中から得られた知識を還元し、さらにコミュニティを活性化していきたいですね」

 MySQLのサポートサービスは、世界中のユーザーとともに、これからも企業のTCOの削減に貢献していくだろう。

ホワイトペーパーダウンロード

MySQLパフォーマンスチューニングTips

MySQLのパフォーマンスを最大限に引き出しハードウェアリソースをフル活用するためのヒントが詰まった、サンの「MySQLパフォーマンスチューニングTips紹介セミナー」資料を初公開

 サン・マイクロシステムズは、オープンソースデータベース「MySQL」のコンサルティングサービスやサポートサービスを手掛け、また、高いスキルを持つ多数のエンジニアと、グローバルにノウハウを共有するナレッジベースを有し、企業ユーザーに欠かせない高度なサービスを提供している。

 その取り組みの中で2009年6月4日、蓄積してきたノウハウをユーザーに還元すべく「MySQLパフォーマンスチューニングTips紹介セミナー」を開催。

 本ホワイトペーパーでは、その講演内容から、一部を抜粋して紹介する。MySQLのパフォーマンスを最大限に引き出し、既存のハードウェアリソースを有効活用するためのヒントとなる。

コンテンツ
 −パフォーマンスチューニングの流れ
 −パフォーマンス改善プラン
 −パフォーマンスに関する「よくある誤解」について
 −ユーザーからの質問に対する回答

TechTargetジャパン ホワイトペーパー ダウンロードセンターにて入手できます。

ホワイトペーパーダウンロード

データベースTCO削減ガイド

オープンソース・データベースMySQLにより90%ものコスト削減を達成−MySQLビジネス・ホワイトペーパー

 LinuxやApacheなどのOSSの使用で大幅な効率の向上を実現した後、多くの企業は、今やコモディティ化による次の段階のコスト節減のため、データベース・インフラストラクチャに狙いを定めている。本書では、MySQLを使用することで、データベース・ソフトウェアのTCOを以下の通りに削減した事例を紹介する。

 −データベースのライセンス・コストを90%以上削減
 −システムのダウンタイムを60%削減
 −ハードウェアのコストを70%削減
 −管理、エンジニアリング、サポートに関するコストを最大50%削減

 MySQLが世界で最も普及しているオープンソース・データベースである背景とともに、Sabre Holdings、Cox Communicationsなどの事例を交え、データベースの信頼性/パフォーマンス/TCOを改善した方法を紹介し、これらの手法をどうすれば自身の組織に適用できるかについても扱う。

TechTargetジャパン ホワイトペーパー ダウンロードセンターにて入手できます。

Copyright © ITmedia, Inc. All Rights Reserved.


提供:サン・マイクロシステムズ株式会社
アイティメディア営業企画/制作:ITmedia エンタープライズ編集部/掲載内容有効期限:2009年7月31日