23

SQL Server 2005/2008でSQLCacheDependencyを使用することを検討しているプロジェクトに取り組んでいますが、これがシステムのパフォーマンスにどのように影響するのか疑問に思っています。

だから私たちは次の質問について疑問に思っています

SQLCacheDependencyオブジェクト(クエリ通知)の数は、影響を受けるテーブルの挿入、更新、および削除操作など、SQL Serverのパフォーマンスに悪影響を与える可能性がありますか?

たとえば、SQL Server 2005/2008では、単一のテーブルでの50000の異なるクエリ通知が、そのテーブルでの挿入と削除にどのような影響を及ぼしますか(パフォーマンス面で)。

SQLCacheDependenciesの使用方法に関する推奨事項はありますか?公式のすべきこととすべきでないことはありますか?インターネットでいくつかの情報を見つけましたが、パフォーマンスへの影響に関する情報は見つかりませんでした。

これらの質問に対するいくつかの答えを持っている人がここにいるなら、それは素晴らしいことです。

4

5 に答える 5

7

ポーリングメカニズムを使用するSQLキャッシュの依存関係は、SQLサーバーまたはアプリケーションサーバーに負荷をかけないようにする必要があります。

sqlcachedependencyが機能し、それらを分析するためのすべてのステップを見てみましょう。

  1. データベースでsqlcachedependencyが有効になっています。
  2. 'Employee'がsqlcachedependencyに対して有効になっているというテーブル。(任意の数のテーブルにすることができます)
  3. Web.configが更新され、sqlcachedependencyが有効になります。
  4. SQLキャッシュの依存関係を使用するページが構成されています。それでおしまい。

初めの:

  • 手順1.データベースにテーブル'ASPnet_sqlcachetablesforchangenotification'を作成します。このテーブルには、sqlcachedependencyが有効になっている'Employee'テーブル名が格納されます。いくつかのストアドプロシージャも追加します。
  • 手順2.「ASPnet_sqlcachetablesforchangenotification」テーブルに「Employee」テーブルエントリを挿入します。また、この「従業員」テーブルに挿入更新削除トリガーを作成します。
  • 手順3.connectionstringとpolltimeを指定して、sqlcachedependencyのアプリケーションを有効にします。

'Employee'テーブルに変更があるたびにトリガーが起動され、'ASPnet_sqlcachetablesforchangenotification'テーブルが更新されます。これで、アプリケーションは5000ミリ秒ごとにデータベースをポーリングし、「ASPnet_sqlcachetablesforchangenotification」テーブルへの変更をチェックします。変更がある場合は、それぞれのキャッシュがメモリから削除されます。

データの鮮度と組み合わせたキャッシュの大きな利点(最大で5秒のデータが古くなる可能性があります)。ポーリングはバックグラウンドプロセスによって処理されますが、パフォーマンスの障害になることはありません。上記のリストからわかるように、タスクはCPUを最も必要としないためです。

于 2010-03-25T13:45:44.857 に答える
4

SQLCacheDependencyはインデックス付きビューとして実装され、テーブルが変更されるたびに、このビューのインデックスが変更されます。同じテーブル上の非常に多くのビュー(SQLCacheDependencyオブジェクト)は、変更に対してかなりのパフォーマンスヒットを意味します。ただし、テーブルごとに1つのビュー(SQLCacheDependencyオブジェクト)がある場合は、問題はありません。

キャッシュ変更通知は非同期であり、サーバーにリソースがある場合にトリガーされます。

于 2009-07-21T14:22:20.273 に答える
2

そうです、これに関する情報はあまり提供されていませんが、このページにあなたの質問に関連するフレーズがありますhttp://msdn.microsoft.com/en-us/library/ms178604%28VS.80%29.aspx

「SQL キャッシュの依存関係に関連するデータベース操作は単純であるため、サーバーで大きな処理コストが発生することはありません。」

あなたの質問はすでに少し古いですが、これがお役に立てば幸いです。

于 2009-10-10T16:32:44.270 に答える
1

このページには、どのテクニックをうまく使用するかについてのセットアップに関する良い情報があるようです (私はそれをざっと読んだだけです)。

于 2009-03-31T04:20:15.237 に答える
1

私が提供できるのはパフォーマンスに関する事例証拠だけですが、1 時間あたり 1 万件のメッセージを処理する大規模なエンタープライズ アプリケーションの一種の「メッセージング ソリューション」として SqlCacheDependency を使用しています。

基本的なアーキテクチャは、当社がソース管理に Perforce を使用し、p4 コミットごとに呼び出されて SQL データベースにレコードを挿入するよりも、トリガー Web サービス呼び出しからメッセージを受信する「サブスクリプション サービス」があることです。私たちのアプリケーションには、監視しているブランチまたはパスに影響を与える最も変更の多いすべてのサブスクリプション通知を送信するための依存関係セットアップがあります。

パフォーマンスは良好です。トリガーは 200 ミリ秒程度で実行され、メッセージをエンド ユーザーに中継する際の遅延について苦情があったことはありません。

いつものように、走行距離は異なる場合があります。

于 2009-08-10T04:57:21.220 に答える