ASPを分析する.NET 2.0バッファ機構
3395 ワード
SqlDataSourceコントロールは、EnableCachingプロパティをtrueに設定することで、SqlDataSourceがSelectCommandで取得したデータを自動的にバッファリングします.このCacheDurationプロパティを使用すると、データベースからデータがリフレッシュされるまでにバッファリングされる時間を秒単位で指定できます.デフォルトでは、SqlDataSourceは絶対期限切れのポリシーを使用してデータをキャッシュします.これは、CacheDurationプロパティで指定した秒数ごとにデータがリフレッシュされることを意味します.
また、SqlDataSourceに「スライド式」の期限切れポリシーを使用するように選択的に構成することもできます.このポリシーにより、データがアクセスされ続ける限り、削除されません.バッファリングが必要なアイテムが多数ある場合は、メモリで最も頻繁にアクセスされるアイテムだけを保持できるため、スライド期限切れポリシーを使用すると便利です.上記の例では、EnableCachingプロパティとCacheDurationプロパティをそれぞれTrueプロパティと10に設定することで、SQLクエリの結果をバッファリングする期間は10秒です.
SqlDataSourceコントロールのSQLキャッシュが無効です
これまで、SqlDataSourceコントロールのCacheDurationプロパティで設定した持続時間値に基づいてキャッシュを無効にする方法を見ました.このセクションでは、SQL Serverテーブルのデータに基づいてキャッシュの無効なメカニズムを実装する手順について説明します.このキャッシュ無効化機構はASPである.NET 2.0の新しい特徴です.このとき、バッファページまたはデータソースコントロールをSQL Serverデータベース内の特定のテーブルにバインドできます.この初期化の関連付け操作を実行すると、テーブルの内容を変更すると、バッファされたオブジェクトが自動的に無効になります.
【推奨】複数のページで同じデータベース・データを使用する必要がある場合は、データ・ソース・コントロールを使用するSQLキャッシュの無効なメカニズムを考慮する必要があります.
実際、SQL Serverベースのキャッシュ無効メカニズムはSQL Server 7.0以上のバージョンに適用されます.ただし、SQL Server 7.0および2000では、テーブルレベルのキャッシュ無効化メカニズムのみがサポートされています.これは、任意のスケジュール内のデータが変更されると、バッファされたアイテムが自動的に無効になることを意味します.SQL Server 2005では、バッファ・データをより細かいレベルで制御できるロー・キャッシュの無効なメカニズムも用意されています.
SQL Server 7とSQL Server 2000では、テーブル・キャッシュが無効なのは、クエリー・システム(特定のASP.NETプロセス)を使用してサポートされています.このプロセスは、最後にチェックされてからどのテーブルが変化したかを監視するために、特定の時間ごとにデータベース(「プル」モデル)をクエリーします.この引張モデルは多くの場合に適しているが,非常に有効な方法ではない.幸いなことに、この状況はSQL Server 2005で大幅に強化されました.特定のデータ行をいつ変更しても、実際にはSQL Serverが通知(プッシュモデル)ASPを担当します.NET.SQL Server 2005は、80ポートを使用する通知送信サービス(Notification Delivery Services)と呼ばれる機能を使用することにより、この機能をIIS 6に直接提供することができる.0のHTTP.SYSは、Webサーバに特定のローの更新を通知するためにインタラクションを行う.次に、SQL Server 7および2000バージョンのバッファを構成する方法について説明します.
SQL Server 7またはSQL Server 2000を使用してキャッシュ依存性を確立する前に、次の手順に従います.
◆無効なSQLキャッシュをサポートするためにSQL Serverを構成します.これは、監視したいSQL Serverデータベースのテーブルまたはデータベースを一度に作成するだけです.
◆必要な構成情報をwebに追加する.configファイル.
次に、上記の手順を詳しく分析します.まず、SQL Serverの構成について説明します.
四、SQLサーバーを構成してSQLキャッシュを無効にする
SQLサーバ2000の構成は、SQLキャッシュの無効化をサポートするために、次の2つの方法で実装できます.
1.aspnet_を使用regsqlツール;
2.SqlCacheDependencyAdminクラスのEnableTable ForNotificationsメソッドを使用します.
本論文では,第1の方法のみを考慮した.上のaspnet_regsqlツールは、別のテーブルAspNet_の作成を担当します.S qlCacheTablesForChangeNotificationは、データベース内のすべての監視されているテーブルの変更を追跡するために使用されます.また、この機能をサポートするトリガとストレージ・プロシージャのセットも作成されます.aspnet_を実行するにはregsqlツールでは、Visual Studioコマンドプロンプト行を開き、次のようなコマンドを入力します.
正常に動作している場合は、次のように表示されます.
このコマンドにより、PubsデータベースはSQLキャッシュの無効な機能をサポートします.次のようになります.
◆S—サーバ名◆U—SQL Serverに接続するためのユーザーID◆P—SQL Serverに接続するためのユーザーパスワード◆d—データベース名◆ed—SQL Serverトリガーのキャッシュ無効機能をサポート
データベース・レベルで上記の操作を完了すると、単一のテーブル・レベルでキャッシュ無効機能を起動する必要があります.実装については、次のコマンドを参照してください.
正常に動作している場合は、次のように表示されます.
上のコマンドでは、
◆t—テーブルの名前を指定する◆et—SQL Serverがトリガするキャッシュ無効機能をサポートする
上記のコマンドでは、PubsデータベースのauthorsテーブルのSQLキャッシュの無効なサポートを開始する方法を示しています.authorsテーブルが通知を送信できるように構成すると、テーブルのデータが変化するたびにASPに通知されます.NETは、キャッシュ内にある対応するアイテムを無効にします.
また、SqlDataSourceに「スライド式」の期限切れポリシーを使用するように選択的に構成することもできます.このポリシーにより、データがアクセスされ続ける限り、削除されません.バッファリングが必要なアイテムが多数ある場合は、メモリで最も頻繁にアクセスされるアイテムだけを保持できるため、スライド期限切れポリシーを使用すると便利です.上記の例では、EnableCachingプロパティとCacheDurationプロパティをそれぞれTrueプロパティと10に設定することで、SQLクエリの結果をバッファリングする期間は10秒です.
SqlDataSourceコントロールのSQLキャッシュが無効です
これまで、SqlDataSourceコントロールのCacheDurationプロパティで設定した持続時間値に基づいてキャッシュを無効にする方法を見ました.このセクションでは、SQL Serverテーブルのデータに基づいてキャッシュの無効なメカニズムを実装する手順について説明します.このキャッシュ無効化機構はASPである.NET 2.0の新しい特徴です.このとき、バッファページまたはデータソースコントロールをSQL Serverデータベース内の特定のテーブルにバインドできます.この初期化の関連付け操作を実行すると、テーブルの内容を変更すると、バッファされたオブジェクトが自動的に無効になります.
【推奨】複数のページで同じデータベース・データを使用する必要がある場合は、データ・ソース・コントロールを使用するSQLキャッシュの無効なメカニズムを考慮する必要があります.
実際、SQL Serverベースのキャッシュ無効メカニズムはSQL Server 7.0以上のバージョンに適用されます.ただし、SQL Server 7.0および2000では、テーブルレベルのキャッシュ無効化メカニズムのみがサポートされています.これは、任意のスケジュール内のデータが変更されると、バッファされたアイテムが自動的に無効になることを意味します.SQL Server 2005では、バッファ・データをより細かいレベルで制御できるロー・キャッシュの無効なメカニズムも用意されています.
SQL Server 7とSQL Server 2000では、テーブル・キャッシュが無効なのは、クエリー・システム(特定のASP.NETプロセス)を使用してサポートされています.このプロセスは、最後にチェックされてからどのテーブルが変化したかを監視するために、特定の時間ごとにデータベース(「プル」モデル)をクエリーします.この引張モデルは多くの場合に適しているが,非常に有効な方法ではない.幸いなことに、この状況はSQL Server 2005で大幅に強化されました.特定のデータ行をいつ変更しても、実際にはSQL Serverが通知(プッシュモデル)ASPを担当します.NET.SQL Server 2005は、80ポートを使用する通知送信サービス(Notification Delivery Services)と呼ばれる機能を使用することにより、この機能をIIS 6に直接提供することができる.0のHTTP.SYSは、Webサーバに特定のローの更新を通知するためにインタラクションを行う.次に、SQL Server 7および2000バージョンのバッファを構成する方法について説明します.
SQL Server 7またはSQL Server 2000を使用してキャッシュ依存性を確立する前に、次の手順に従います.
◆無効なSQLキャッシュをサポートするためにSQL Serverを構成します.これは、監視したいSQL Serverデータベースのテーブルまたはデータベースを一度に作成するだけです.
◆必要な構成情報をwebに追加する.configファイル.
次に、上記の手順を詳しく分析します.まず、SQL Serverの構成について説明します.
四、SQLサーバーを構成してSQLキャッシュを無効にする
SQLサーバ2000の構成は、SQLキャッシュの無効化をサポートするために、次の2つの方法で実装できます.
1.aspnet_を使用regsqlツール;
2.SqlCacheDependencyAdminクラスのEnableTable ForNotificationsメソッドを使用します.
本論文では,第1の方法のみを考慮した.上のaspnet_regsqlツールは、別のテーブルAspNet_の作成を担当します.S qlCacheTablesForChangeNotificationは、データベース内のすべての監視されているテーブルの変更を追跡するために使用されます.また、この機能をサポートするトリガとストレージ・プロシージャのセットも作成されます.aspnet_を実行するにはregsqlツールでは、Visual Studioコマンドプロンプト行を開き、次のようなコマンドを入力します.
D:/>aspnet_regsql –S localhost –U sa –P thiru –d Pubs –ed
正常に動作している場合は、次のように表示されます.
Enabling the database for SQL cache dependency.
…
Finished.
D:/>
このコマンドにより、PubsデータベースはSQLキャッシュの無効な機能をサポートします.次のようになります.
◆S—サーバ名◆U—SQL Serverに接続するためのユーザーID◆P—SQL Serverに接続するためのユーザーパスワード◆d—データベース名◆ed—SQL Serverトリガーのキャッシュ無効機能をサポート
データベース・レベルで上記の操作を完了すると、単一のテーブル・レベルでキャッシュ無効機能を起動する必要があります.実装については、次のコマンドを参照してください.
D:/>aspnet_regsql –S localhost –U sa –P thiru –t authors –d Pubs –et
正常に動作している場合は、次のように表示されます.
Enabling the table for SQL cache dependency.
…
Finished.
D:/>
上のコマンドでは、
◆t—テーブルの名前を指定する◆et—SQL Serverがトリガするキャッシュ無効機能をサポートする
上記のコマンドでは、PubsデータベースのauthorsテーブルのSQLキャッシュの無効なサポートを開始する方法を示しています.authorsテーブルが通知を送信できるように構成すると、テーブルのデータが変化するたびにASPに通知されます.NETは、キャッシュ内にある対応するアイテムを無効にします.