DBアタマアカデミー

最終回 治療としてのパフォーマンスチューニング―システムの病気はどう治す?(3)

この記事を読むのに必要な時間:およそ 2.5 分

まとめ

本稿では,パフォーマンスチューニングの具体的な実施手順を解説してきました。パフォーマンスチューニングという仕事の大きな特徴は,システム全体を見なければいけないことです。遅延が発生する個所がいつもDBなのであれば(たしかにDBはボトルネックになりやすいのですが⁠⁠,DBだけ見ていればよいでしょうが,システムがそうこちらに都合の良い原因で遅くなっているわけではありません。それは,医者が患者に向かって「私が治せる病気にだけかかるようにしてください」とお願いできないのと同じです。

このように,⁠システムを全体として見る」というところも,パフォーマンスチューニングが医者の仕事に似ている点の一つです。医者もまた,たとえ担ぎこまれた患者の病気が自分の不得手な分野の場合でも,やはり責任持って診察に当たらねばなりません。まあ,そうは言っても,医者が自分の専門を持っているように,エンジニアにもやはり得手不得手があります。筆者としても,切り分けの結果アプリケーションやクライアントサイドの問題だとわかれば,あとは専門医に任せてしまうことも多いです注7⁠。

それでは,本稿の重要ポイントをまとめましょう。

  • パフォーマンスチューニングは医者の治療に似ている
  • チューニングの前に診察と検査がある。というより仕事のほとんどはそれが占める
  • 処理が遅い原因を突き詰めると,⁠OSリソースの消費」「流量制限」の2つ
  • OSリソースが原因の場合,パフォーマンスは「最も弱い環」に引きずられる

演習問題はこちらです。

演習問題
あなたの使うDBMSでSQLの滞留時間を調べる手段について調べなさい。

解答解説は,いつものとおり筆者のWebサイトおよび技術評論社のWebサイトで公開します。

注7)
このことからわかるように,パフォーマンスチューニングは1人ではできないことがほとんどです。専門医から成るチームで当たる必要があります。

連載の終わりに

さて,⁠DBアタマアカデミー」は今回で終了となります。1年間(昨年のSQLアタマアカデミーから継続して読んでいただいていれば2年間)お付き合いいただきありがとうございました。次号からは,今までとはちょっと趣を変えて,より現場に即した内容をお届けしようと考えています。こちらも,どうぞお楽しみに。

参考資料
Microsoft TechNet ライブラリファースト ステップ ガイド - パフォーマンスの監視
WindowsでOSリソースを取得する機能「パフォーマンスモニタ」の解説です。
小田圭二「門外不出のOracle現場ワザ」第5章 DBアクセスの空白地帯 コネクションプーリングを極める
DBMSはOracle限定ですが,コネクションプール一般について参考になります。コネクションプールが枯渇した場合の動作はこのテキストの分類に倣(なら)いました。

性能試験は不要か

性能試験というのは,いろいろな試験の中でも最も軽視されがちな試験です。その理由は大きく2つあって,まず性能問題以前に機能的な障害のほうがどう考えても優先度が高いので,性能問題は後回しにされるためです。エラーでシステムが停止したり,計算の結果数値が合わなかったりという致命的な障害に比べれば,⁠速度が遅い」というのは(あくまで開発側から見れば⁠⁠,まだ軽い問題に見えるものです。もっとも,ユーザサイドから見れば,遅いシステムというのはそれだけで使う気を失くすものです注a⁠。ここは,開発側と使用側に結構認識のズレがあるところです。

性能試験が後回しにされるもう一つの理由は,この試験をきっちりやろうとすると,かなりのリソースを割く必要があるためです。この場合のリソースには,マシン・人・時間の3つが含まれ,具体的には次の要件をクリアしなければなりません。

  • マシンの占有(無風状態でないと性能試験の結果が意味を成さない)
  • 本番運用相当のデータの準備(特にDBはデータ量によってSQLの実行計画が大きく変わるため,少量データでの試験はやる意味がない)
  • 単体性能試験,負荷性能試験の試験計画作成

上記3つは,性能試験を意味あるものにするための最低要件ですが,まともに満たそうとすれば準備と試験実施含めて最低1~2ヵ月の期間が必要になります。しかし,性能試験というのは,何しろアプリケーションが固まらないとできないので,自然と行われるのは開発工程の最後の最後となります。その時期にこれだけのリソースを割くのは,かなり難しいことが多いのです。

注a)
3秒待たされたらユーザはほかのWebサイトへ行く,という「3秒ルール」はWebシステムでよく言われています。

著者プロフィール

ミック

SI企業に勤務するDBエンジニア。主にデータウェアハウス業務に従事している。自身のサイト「リレーショナル・データベースの世界」でデータベースとSQLについての技術情報を公開している。『Web+DB Press』で「SQLアタマアカデミー」を連載中。

著書:『SQL ゼロからはじめるデータベース操作』(翔泳社,2010)『達人に学ぶ SQL徹底指南書』(翔泳社,2008)訳書:J.セルコ『SQLパズル 第2版』(翔泳社,2007)

DBアタマアカデミー:サポートページ