
第6回 パフォーマンスを意識した設計/実装テクニック
アクセンチュア・テクノロジー・ソリューションズ
宮本和洋 著/安間裕 監修
2005/7/13
Webシステムが主流となり、データベース・アプリケーションはJavaやC#といったオブジェクト指向言語で開発することが多くなった。しかし、データベース設計はオブジェクト指向モデルとうまくかみ合わず、データモデル設計に苦労するエンジニアは少なくない。本連載は、オブジェクト指向モデルとデータベースモデルのインピーダンスミスマッチに対応するテクニックを紹介する。(編集局)
| 主な内容 --Page 1--
--Page 2--
--Page 3--
|
本連載の最終回は、これまでに連載で紹介した「Javaとデータベースのインピーダンスミスマッチを解消するための設計」に加えて、「パフォーマンスを向上させるために設計の段階で考慮すべきポイント」と「パフォーマンス向上のための具体的な実装」について紹介します。また最後に本連載のすべての内容を振り返って、締めくくりとします。
- インピーダンスミスマッチはデザインパターンを使用することで解消できたが、パフォーマンスを向上させるには設計時および実装時にどのような点について考慮すればよいだろうか?
![]() |
| 図1 今回の解説範囲 |
システム開発者がパフォーマンスを考慮する際には、いくつかの観点があります。それはいい換えれば、システムのパフォーマンスを劣化させるボトルネックとなる部分の原因が何なのかを考えることになります。ボトルネックとなる部分の原因が異なれば、それに対する対応も当然異なってきます。ここでは一般的にパフォーマンスを劣化させるとされる主な2つの原因について考えてみたいと思います。
| 観点 | 原因 | |
| パフォーマンス 劣化の要因 |
データベース・アクセスに関すること | ディスクI/Oの回数によるもの |
| データベース・サーバとの通信によるもの | ||
| SQL文の内容によるもの | ||
| プログラムの性能に関すること | オブジェクト生成によるもの | |
| アルゴリズムによるもの | ||
| 表1 パフォーマンス・チューニングする際の観点 | ||
ひとくちにパフォーマンス・チューニングの観点といっても、表1のようにさまざまな原因があります。
「ディスクI/Oの回数によるもの」への対応としては、キャッシュを使用してディスクI/Oの回数を減らす工夫をする必要がありますし、「データベース・サーバとの通信によるもの」については、ストアド・プロシージャやバッチ処理を使用してデータベース・サーバとの通信の回数を減らす対応をする必要があります。ただし、ストアド・プロシージャの使用やバッチ処理については、システムの設計思想にまでかかわってくることなので、設計の段階で事前に考慮しておきたい点です。「オブジェクト生成によるもの」への対応としては、オブジェクトを使い回すことによってオブジェクトの生成を極力減らす工夫をする必要があります。
このように原因によって対処の方法もまったく異なったものになります。パフォーマンスについての検証はプログラムがほぼ完成したころか、またはそれ以降の工程になって初めて考えられるということはよくあると思いますが、すでにプログラムが出来上がっている段階でパフォーマンスを向上させる手立てを講じるとなると、大きな手戻り工数が必要になる場合がありますので、設計段階や実装段階でパフォーマンスについての考慮をしておくべきでしょう。
まず、システムの設計思想を決める段階で、パフォーマンスについて考慮しながら設計をすることが必要です(図2の(1))。この段階でシステム全体のパフォーマンスのレベルが決まってしまうといっても過言ではありません。デザインパターンなどを用いてパフォーマンス・チューニングをしやすいシステムの設計思想をこの段階で作成しておきます。
続いて実装段階でもパフォーマンスを考慮した実装を心掛けます(図2の(2))。これまでの連載で紹介してきた設計方法および実装方法を駆使してメンテナビリティの高いプログラムを作成することができれば、パフォーマンスの問題の大半はクリアできると思います。
設計・実装が完了しパフォーマンスの検証をする際には、まずボトルネックを検出します(図2の(3))。システムのボトルネックとなる部分を発見したら、先に述べたようにボトルネックごとにその対応方法や対応すべき範囲を調査します(図2の(4))。その後チューニングを実施し、再度検証する(図2の(5))というプロセスを繰り返していきます。
![]() |
| 図2 パフォーマンスを意識した設計/実装/チューニング |
システムの拡張やパフォーマンス・チューニングのしやすいシステムを作るには、まず設計の段階でそれらを考慮に入れて設計する必要があることは理解できたと思います。デザインパターンを駆使するなどして、システムの拡張に強いオブジェクト指向のメリットを生かせば、柔軟に設計を変更することが可能になります。つまりシステムの拡張とパフォーマンス・チューニングに強いシステムを作ることができるようになるのです。
| Point |
|
(次ページへ続く)
| 1/3 |
| Index | |
| 連載 JavaのDBアクセスを極める(6) パフォーマンスを意識した設計/実装テクニック |
|
| Page 1 ・はじめに ・パフォーマンス・チューニングの観点 ・パフォーマンスを意識した設計 |
|
| Page
2 ・ディスクI/Oの削減 ・データベース・サーバとの通信の効率化 |
|
| Page
3 ・オブジェクト生成のチューニング ・パフォーマンス・チューニングのまとめ ・連載全体のまとめ ・連載の終わりに |
|
| JavaのDBアクセスを極める |
TechTargetジャパン
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


