外出自粛中でも楽しく過ごす!QAまとめ>>

システムのレスポンス向上技法を勉強したいと思っています。
ゼロから始める形でオススメの書籍、講座、Webはありませんか。

最終的にはDB/クライアントハード・インフラ・DBソフト選択/設定・ロジック・SQL含めて全般的な知識を身につけたいとは思っていますが

・既存システムのボトルネック調査/切り分け方法
・新規開発時のSQL・ロジック作成時の注意点

から学べればと思っています。
現在一番使うことが多い環境が下記の通りなので
下記のどれかに特化したものでもいいと思っています。
まずはどこから取り掛かれば・・・、という状態なので・・・。
ソフト側:Access/EXCEL(2000/2003), VB6
DB側:Access, (Oracle, SQLServer)

宜しくお願い致します!

このQ&Aに関連する最新のQ&A

A 回答 (1件)

基本情報技術者試験ならびに応用情報技術者試験の勉強をなさってみてはどうですか?


総合的にといわれると、そうなってしまうと思います。

DBについては、AccessとOracle, SQLServerで大きく2分されてしまいます。
システムのレスポンスに着目するのであれば、プロバイダーの性能を勉強していくと良いと思います。
Jet,OLEDB,0040等です。
Jetはネットワークでのアクセスに向かない理由がわかると思います。
0040は早いが、OLEDBは便利などです。

DBソフト選択
かけられるお金で決めてください。
クライアント数にもよりますが、金額面で差が大きいです。
お金を気にしないのであれば、
Oracle>SQLServer>Access
個人的には、Accessを使うくらいなら、CSVファイルを使います。

システムのボトルネックの考え方
http://www.atmarkit.co.jp/fnetwork/survey/survey …
ボトルネックになりえる部分はそう多くないと思います。
サーバーの性能
対処、サーバーの強化、負荷分散、機能分散(アプリケーションサーバーと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
のほうが早いとかありますが、データ量が少なければ、速度はほとんど一緒ですよ。

話がまとまりませんでしたが、これを勉強すれば全てがわかるというものはありません。
一つ一つ地道にやるしかありません、お互いがんばりましょう。
    • good
    • 0
この回答へのお礼

周りにアドバイスを聞ける人がいないため大変困っていました。
詳しくありがとうございました。
1つずつ、経験をつみながら学んでいきたいと思います。
どれもとても勉強になりました。

まずは教えていただいた内容を考えることと、全体的な知識向上に
技術者の勉強もしてみようと思います。

望まれるレスポンスを提供できる環境を提案できるように
開発言語の特徴に関しても学んでみます。

お礼日時:2009/01/23 16:46

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???


人気Q&Aランキング