0

クライアントとの最適化されたdb接続を維持できるように、connectionstringフィールドに属性またはプロパティがあることを知りたいだけです。一般的に私が使用するように、それは必要な情報だけを含んでいます。

<add name ="ConnectionString" connectionString="Data Source=118.225.221.7;Initial Catalog=mycatalogue;
User Id=dba; password=some_password"/> 

別のシナリオでは、MARSおよび非同期操作の接続文字列を拡張することもできます。

MARS
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
MultipleActiveResultSets=true;

Asynchronous Processing
Server=myServerAddress;Database=myDataBase;Integrated Security=True;
Asynchronous Processing=True;

私たちのページから、私はデータにアクセスするために4-5または時々〜10の接続を持っています。"SELECT"コードがステートメントを実行し、クライアントごとにランダムな行をフェッチしていると仮定して、100人のユーザーが同時に同じページにアクセスしている場合を考えてみましょう。次に、400〜500の接続が一度にデータベースにヒットします。これにより、サーバー/アプリケーションのパフォーマンスが確実に低下すると思います。

ですから、クエリの数を最小限に抑えるべきか、それとも.NetFrameworkインテリジェンスに任せるべきかを知りたいのです。

4

1 に答える 1

0

まず、linqの最適化を検討します。たとえば、1回の呼び出しですべての情報を取得できる場合は、2つのクエリを実行していないことを確認してください。

キャッシングも見てください。ここでは、データをキャッシュする期間、データを無効にするタイミング(たとえば、誰かがレコードを挿入するなど)、およびどのレベルでデータを実行するかを決定する必要があります。ページがめったに変更されず、挿入/更新がそれほど多くない場合は、ページレベルでキャッシュすることができます(ページレベルのキャッシュ)。

それがオプションでない場合は、のようなものを使用してlinqから返されたデータをキャッシュすることを確認できますhttpcontext.current.cache。クイックグーグル検索で詳細が表示されますが、基本的にはlinqクエリから返されたデータをキャッシュし、後続のリクエストで最初にキャッシュして、データが存在するかどうかを確認します。存在する場合はそれを使用し、存在しない場合はデータベースに移動して再度要求します。これにより、データベースへのヒットが制限されます。

于 2012-12-30T19:22:59.997 に答える