1

ASP.Net3.5WebアプリでL2Sリポジトリパターンを使用しています。しかし、私はライブで経験したようなパフォーマンスにはあまり満足していません。私はグーグルを検索し、SqlCacheDependencyクラスを使用してSQLキャッシングに出くわしました。しかし、私のシナリオでそれを使用する方法を説明するチュートリアルやリンクはありません。

だから私を助けてください...どんな助けやガイダンスも大歓迎です。

いくつかのサンプルコードまたはオンラインリファレンスを使用してください。

前もって感謝します

更新:私のリポジトリ

public interface IRepository<T> where T : class
{
    T GetById(int id);
    IQueryable<T> GetAll();
    void SaveOrUpdate(T entity);
    void DeleteOnSubmit(T entity);
}
4

2 に答える 2

0

linq-to-sqlが予期しない方法でクエリを実行することがあります。linqクエリがSQLにどのように変換されるかを確認しましたか?Sql Server Profiler(SQL Managementサーバーのツールメニューで利用可能)を使用して、生成されたクエリを確認します。私はそれについていくつかの情報をここに書きました。

適切なクエリが生成されていることがわかったら、それらのいずれかの実行がパフォーマンスのボトルネックであるかどうかを確認する必要があります。プロファイラーはここでも役立ちます。一部のクエリの実行速度が遅い場合は、適切なインデックスを追加してみてください。

非常に大容量のサイトがない限り、これらの手順により、キャッシュを実行しなくても優れたパフォーマンスが得られるはずです。

于 2011-11-29T19:17:47.983 に答える
0

リポジトリでlinqを使用してSQLを実行する方法については説明していません。基本的に、単一のリクエスト中に作成されたすべてのリポジトリに同じDataContextを再利用していますか、それとも各リポジトリが独自のDataContextインスタンスを取得していますか?後者の場合、DataContextの内部のcachabilityを失うことになります。

パフォーマンスを向上させることができるもう1つの領域は、(単一のテーブル選択だけでなく)結合のレイヤーを多数含む頻繁に使用されるクエリがある場合です。ここでCompiledQueryを使用すると、処理が大幅に高速化されます。CompiledQueriesは、最初に使用するときにのみ生成する必要があります。そうしないと、クエリを使用するたびにクエリが再コンパイルされます。

于 2011-11-29T22:28:31.390 に答える