2010-12-20 16 views
2

私は、タスクスレッドから高価なADO.NETデータベースアクセスをオフロードするためにTask-Parallel-Libraryを使用しようとしています(以前は書き直していたプログラムが単にフリーズし、時折VB6データベース内のデータが完全にロードされるまで、進行状況のテキストボックス)。私は複雑な依存構造(26個の個別のタスク)を持っており、どれだけ並列化する価値があるか把握しようとしています。SQLサーバーへの並列アクセス

このようなIOアクセスをパフォーマンスボーナスですべて並列化できるかどうかを知りたいと思います。そうでない場合は、データをロードしてUIを更新するだけで十分な情報が読み込まれてそのタスクが実行されますが、1つではなく2つのものを読み込むことでさらに効果的です私は二倍のスピードアップを得られない)。

答えて

1

これを並列化するとパフォーマンスは向上しますが、保証はできません。それはあなたのボトルネックがどこにあるかによって異なります。

たとえば、多くのデータをロードするためにリクエストが高価な場合は、クライアントのネットワーク帯域幅の多くを消費する可能性があります。この場合の並列化は、まったく役に立たないでしょう。一方、ボトルネックがSQL処理のボトルネックであれば、SQL要求はSQL Serverに余裕のある容量でSQL Serverから離れてしまい、SQL Server(非常に良い)並列化機能を利用できます。

並列化が遅くなる可能性もあります。たとえば、SQlサーバーのRAMが不足し、単一のディスクにしかア​​クセスできない場合、複数のクエリを並行して実行すると、ハードディスク上のシークアクティビティが増加し、全体の読み取り速度が大幅に低下する可能性があります。

これはよくあることですが、答えは簡単な「はい」または「いいえ」ではなく、「それに依存します」。

+0

ありがとうございます!これはまさに私が望んでいたものです。私たちはかなり強力なマシンを使用しています。何が起きているのかを知るためにネットワークの使用状況をプロファイルする必要があります。私はまだそれが起こっている間に他のネットワーク集中的なプログラムを使用することができるので、私はそれがすべてを食べているとは思わない。 – Crisfole

関連する問題