21

両方とも SQL Server 2008 バックエンドを使用し、ほとんどが低レベルの C でロードされたカスタムの最適化されたクエリと比較して、C# と LINQ を使用すると、データベース パフォーマンスのオーバーヘッドはどのくらいになりますか?

ここで具体的に考えているのは、かなりデータ集約型のプログラムがあり、画面ごとに少なくとも 1 回はデータの更新または更新を行い、50 ~ 100 人の同時ユーザーがいる場合です。

4

2 に答える 2

2

私の経験では、クエリを作成する人が自分のしていることを知っていて、生成されたクエリが最適であること、必要なインデックスが設定されていることなどを確認するために通常の予防措置を講じれば、オーバーヘッドは最小限に抑えられます。データベースへの影響は同じである必要があります。アプリ側のオーバーヘッドは最小限ですが、通常はごくわずかです。

そうは言っても...これには1つの例外があります。単一のクエリが複数の集計を生成する場合、L2Sプロバイダーはそれを集計ごとに1つのサブクエリを持つ大きなクエリに変換します。大きなテーブルの場合、クエリのdb I / Oコストがクエリ内の新しい集計ごとに大きくなるため、これはI/Oに大きな影響を与える可能性があります。

その回避策は、もちろん、アグリゲートをストアドプロシージャまたはビューに移動することです。Matt Warrenは、その種のクエリをより効率的な方法で変換する代替クエリプロバイダーのサンプルコードをいくつか持っています。

資力:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211

http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx

于 2008-09-16T07:14:18.153 に答える
2

ありがとう、スチュ。要するに、LINQ to SQL は、コンパイル済みの選択を使用できる場合、新しいバージョンではデータベース パフォーマンスのオーバーヘッドが大きくない可能性が高いと思われます。ほとんどのコーディングを行う専門家。

于 2008-08-07T15:02:49.707 に答える