2008-08-07 3 views
17

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

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

答えて

1

私の経験では、クエリを書く人が自分がやっていることを知っていて、生成されたクエリが最適であること、必要なインデックスが存在することなどを確認するために通常の注意を払っていれば、つまり、データベースへの影響は同じでなければなりません。アプリ側には最小限だが無視できるオーバーヘッドがある。

これは例外です。 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

2

ありがとうStu。要するに、LINQ to SQLは、コンパイルされたselectを使用することができれば、新しいバージョンではデータベースのパフォーマンス上の重大なオーバーヘッドがない可能性があります。また、遅い関数の更新は、専門家はほとんどのコーディングを行います。

関連する問題