0

米国と中国で使用される Winform アプリがあります。SQL Server 2005 データベースは米国にあるため、中国の人々のデータ アクセスは遅くなります。最高のパフォーマンスを得るために、DataReader と Dataset のどちらを使用するかを決定しています。データは、取得時にすぐにビジネス オブジェクトにロードされます。

質問: 離れた場所にあるデータベースからデータを取得するには、どちら (DataReader/DataSet) が優れていますか? DataReader は .Read() ごとにデータベースに戻ることを読んだので、最初から接続が遅い場合は、ここで DataSet を選択することをお勧めしますか?

ありがとう

4

6 に答える 6

1

長距離/低速リンクが予想される場合、datareader とデータセットのパフォーマンスは、データベースのラウンドトリップと比較してほとんど測定できません。

ただし、DataSet はより多くのメモリを使用する可能性があり、大量のデータを処理している場合は問題になる可能性があります。

于 2009-07-24T15:03:53.613 に答える
0

DataSet は DataReader を使用して入力するため、どちらを選択してもかまいません。結果をキャッシュするか、余分なデータを取得することにより、可能な限りデータベースを呼び出さないようにしてください。余分なデータを取得するいくつかの呼び出しは、おそらくテーブルでの多くの小さなペックよりも優れています。おそらく、BackgroundWorker は、使用することがわかっているデータをプリロードできます。

于 2009-07-28T15:11:55.040 に答える
0

接続がボトルネックなので問題ないと思います。

どちらも同じメカニズムを使用してデータをフェッチします (ADO.NET/Datareader)。

それができれば、サーバー上でクエリ結果を圧縮してクライアントに送信できます。それはパフォーマンスを向上させるでしょう。

于 2009-07-26T06:25:31.467 に答える
0

他の読者のために: DataReader ははるかにパフォーマンスが高いです。明らかに、これらのユーザーは両方を使用して実際に違いをテストしたわけではありません。DataReader で 1,000 レコード、DataSet で 1,000 レコードを読み込みます。次に、DataSet のレコードを 10 レコードに制限してみてください (アダプターの Fill メソッドを使用して、1,000 件が読み込まれるようにしますが、DataSet に入力/入力されるのは 10 件だけです)。

塗りつぶし操作中の DataSet のパフォーマンスが悪い理由はよくわかりませんが、その違いは非常に大きいです。非常に肥大化した遅い DataSet を使用するよりも、独自のコレクションを作成して DataReader で埋める方がはるかに高速です。

于 2009-12-16T07:06:26.647 に答える
0

データ量によって異なります。メモリ (データセット) に大量に格納することはできません。

私の頭の中の問題に対する2つの方法:
- 並列化(System.Thread)
- バックグラウンドワーカー

最初のものは、linq から sql へのケースでパフォーマンスを向上させることができます。2 つ目は、エンド ユーザーのエクスペリエンスを向上させるのに役立ちます (ブロックされていない UI)。

于 2009-07-24T14:39:52.403 に答える
0

それがどのデータベースであるかによって異なります。Accessだとまずい。
移動するデータの量によって異なりますが、使用スタイルは何ですか? 中国のユーザーは共通データを読み取るだけですか、それとも読み取り/書き込みを行いますか? 彼らはすべてのデータを見る必要がありますか?

アイデアは、データを分離し (シナリオに役立つ場合)、マージして戻すことです。

于 2009-07-26T07:21:14.647 に答える