質問: パフォーマンス・レスポンス向上技法勉強方法 システムのレスポンス向上技法を勉強したいと思っています。 ゼロから始める形でオススメの書籍、講座、webはありませんか。 最終的にはdb/クライアントハード・インフラ・dbソフト選択/設定・ロジック・sql含めて全般的な知識を身につけたいとは思っていますが ・既存システムのボトルネック調査/切り分け方法 ・新規開発時のsql・ロジック作成時の注意点 から学べればと思っています。 現在一番使うことが多い環境が下記の通りなので 下記のどれかに特化したものでもいいと思っています。 まずはどこから取り掛かれば・・・、という状態なので・・・。 ソフト側:access/excel(2000/2003), vb6 db側:access, (oracle, sqlserver) 宜しくお願い致します!
回答: 基本情報技術者試験ならびに応用情報技術者試験の勉強をなさってみてはどうですか? 総合的にといわれると、そうなってしまうと思います。 dbについては、accessとoracle, sqlserverで大きく2分されてしまいます。 システムのレスポンスに着目するのであれば、プロバイダーの性能を勉強していくと良いと思います。 jet,oledb,0040等です。 jetはネットワークでのアクセスに向かない理由がわかると思います。 0040は早いが、oledbは便利などです。 dbソフト選択 かけられるお金で決めてください。 クライアント数にもよりますが、金額面で差が大きいです。 お金を気にしないのであれば、 oracle>sqlserver>access 個人的には、accessを使うくらいなら、csvファイルを使います。 システムのボトルネックの考え方 http://www.atmarkit.co.jp/fnetwork/survey/survey07/network1.html ボトルネックになりえる部分はそう多くないと思います。 サーバーの性能 対処、サーバーの強化、負荷分散、機能分散(アプリケーションサーバーとdbサーバーの切り離しなど) dbエンジンのレスポンス 対処、サーバーの強化、db構成の再検討 ネットワークトラフィック 対処、ネットワーク回線の強化、負荷分散 クライアントサーバーで考えるなら三層アーキテクチャの構成を勉強されると良いでしょう。 根本的な話ですが、vb6.0の時点でパフォーマンスが非常に低いです。 .netframework等に移行したほうが良いと思います。 vb.netでは格段にパフォーマンスが向上されています。 vb6.0で速度の向上をめざすなら、 たとえば for 構文で使用するループ変数はコンパイラ上long関数ですので、ループ変数にinteger方の変数を使用すると、integerからlongへの型変換が自動で行われるため、nミリセカンド遅くなる。 if str = "" then より if str = vbnullstring then のほうが早い とか、 format(),left(),right(),dir()などの引数はバリアント方であるため、 format$(),left$(),right$(),dir$()などの引数を文字列固定にしたほうが早い。 こういうことを意識して組んでいくということですよね、 よっぽど非効率な組み方をしていない限り、全部改善しても、1秒も変わらないと思います。 sqlですが、プログラム中で、編集や計算したほうが、断然速いです。 ただネットワークを介した場合、データ量が変わりますよね、このあたりの調整が大事だと思います。 table a(a,b,c) select * from a より select a.a,a.b,a.c from a のほうが早いとかありますが、データ量が少なければ、速度はほとんど一緒ですよ。 話がまとまりませんでしたが、これを勉強すれば全てがわかるというものはありません。 一つ一つ地道にやるしかありません、お互いがんばりましょう。