.net C#アプリケーションでデータキャッシュを使用したい。これまでに、データキャッシュを追加し、特定のテーブルにSQLキャッシュの依存関係を追加しました。しかし、それだけでは十分ではありません。これらのテーブルは頻繁に更新されますが、キャッシュされたオブジェクトの多くには関係ありません。これにより、頻繁にフラッシュされるため、データキャッシュはほとんど役に立たなくなります。各オブジェクトの特定の行にSQLキャッシュの依存関係を実装したいと思います。どうやってやるの?
1 に答える
SqlDependencyがどのように機能するかを理解する必要があります。結果セットをサブスクライブし、その結果セットが変更されたときに通知を受け取ります。サポートされているステートメントの制限に準拠している限り、あらゆる種類の結果セット、つまりあらゆる種類のクエリをサブスクライブできます。がテーブルであるかビューであるかは、実際には違いはありません。
したがって、技術的には、特定の行に固有のクエリを送信することで、特定の通知をサブスクライブできます。ハードコードされたWHERE句を使用します。テーブル全体を取得してメモリにキャッシュするのではなく、行ごとに必要なデータのみを取得してキャッシュするようにコードを変更する必要があります。少なくともこれらのテーブルのサイズが気になる場合は、とにかくそれを行う必要があります。テーブル全体のキャッシュは、頻繁に変更されないか、まったく変更されないカタログおよび参照データに対してのみ実行する必要があります。
データのパーティションを取得してキャッシュすることもできます。キーの個々の範囲(たとえば、「A」と「D」、「E」と「H」などの間で、その特定のデータパーティションの通知をサブスクライブします。
SqlDependencyがどのように機能するかを理解したい場合は、私のブログに、SqlDependencyの一般的なプログラミングの落とし穴やSqlDependencyの展開の問題など、それをカバーする記事がいくつかあります。