2009-06-02 11 views
5

私の.net C#アプリケーションでデータキャッシュを使用したいと思います。これまではデータキャッシュを追加し、特定のテーブルにsqlキャッシュの依存関係を追加しました。しかし、それは十分ではありません。これらのテーブルは頻繁に更新されますが、多くのキャッシュされたオブジェクトには関連しません。これにより、データキャッシュが頻繁にフラッシュされるため、データキャッシュがほとんど役に立たなくなります。私は各オブジェクトの特定の行にSQLキャッシュの依存関係を実装したい。どうやってやるの?行固有のSQLキャッシュ依存関係を作成するにはどうすればよいですか?

+0

含むaspnet_regsqlのドキュメントには、テーブルのみに言及していますが、ビューに対してそれを使用して試してみました?私はそれが動作しないだろうが、それはショットの価値があるかもしれません。 –

答えて

5

SqlDependencyの仕組みを理解する必要があります。あなたはsubscribe a result set and get notified when that result set has changedです。 restrictions of the supported statementsに準拠している限り、任意の種類の結果セット、つまり任意の種類のクエリを登録することができます。テーブルやビューの場合は、実際には違いはありません。

技術的には、その行に固有のクエリを送信することで特定の通知を購読することができます。ハードコーディングされたWHERE句を使用します。テーブル全体を取得してメモリにキャッシュするのではなく、行単位で必要なデータのみを取得してキャッシュするようにコードを変更する必要があります。ヘック、あなたは少なくともそれらのテーブルのサイズを心配している場合は、とにかくそれを行う必要があります。頻繁に変更されるか、まったく変更されないカタログおよび参照データに対してのみ、テーブル全体をキャッシュする必要があります。

データのパーティションを取得してキャッシュすることもできます。キーの個々の範囲(例えば、 'A'と 'D'、 'E'、 'H'などの間)とその特定のデータパーティションの通知を受けるために購読する

​​私のブログには、 、common programming pitfalls of SqlDependencydeployment problems with SqlDependency

+0

はところで、私が言うとき、「WHEREハードコード」 @parametersを使用することができます。つまり、目的の行だけに結果セットを制限するWHERE句を追加する必要があるということです。 –

関連する問題