2

かなり複雑なサイトで Linq to SQL を使用していますが、稼働後にデータベースのタイムアウトが何度も発生しました。最初に気付いたのは、データベースへの接続がかなり多いことです。

ADO.net のバックグラウンドから来て、どのサイトでも 1 つまたは 2 つのプールされた接続のみを使用するようにコーディングしていました。これにより、同時ユーザーがかなり少ない場合でも許容できるパフォーマンスが得られました。

だから私の質問は、それを行うこの古い方法に欠陥がありましたか、それともLINQを行う方法はありますか? DB への接続が非常に多いことが原因でパフォーマンスの問題が発生しているようですが、これが問題である場合は、LINQ のすべてのチュートリアルで言及されていると思います。

助言がありますか?

4

1 に答える 1

3

私はあなたが DataContexts を保持していて、完了時に Dispose を呼び出さない (または少なくともそれらを残している) と推測しています。

むしろ、DataContext を初期化して操作を実行し、完了したら破棄する必要があります。操作間で参照を保持しないでください。

IDisposable の呼び出しを処理するために using ステートメントを使用することをお勧めします。

接続プーリングに関しては、SqlClient はデフォルトで接続をプールするため、明示的にオフにしない限り、すでにそれを利用しているはずです。もちろん、使用している接続を解放していない場合、プーリングはこれまでのところしか機能しません。

于 2009-03-12T18:11:53.530 に答える