キャッシュを使用したSQLServerのCLRプロシージャ
SQL サーバーはデータ更新ごとに個別の通知をスローするため、SQL サーバー通知を使用したデータベースの依存関係により、アプリケーションのパフォーマンスが低下する可能性があります。 データベース内の変更が多すぎる場合、これらの通知によってネットワーク トラフィックが過剰になり、両方のパフォーマンスが低下する可能性があります。 NCache そしてユーザーアプリケーション。
NCache データベースの CLR ストアド プロシージャを作成して、キャッシュをデータベースと同期させることができます。 CLR プロシージャには、次のような依存関係データ構造の作成は含まれません。 SqlCacheDependency。 また、データベースの監視や通知メカニズムもありません。
SQL Server で CLR プロシージャをキャッシュとともに使用する理由
CLR プロシージャを使用すると、複雑なロジックの実行時により良い結果が得られるため、CLR プロシージャを使用できます。 CLR プロシージャは、型の安全性とメモリ管理を保証します。 さらに、CLR プロシージャを使用するとコード管理が向上するため、大規模なデータ セットを簡単に管理できます。
CLR ストアド プロシージャを使用するには NCache、以下に指定された手順に従います。
環境のセットアップの詳細については、以下を参照してください。 CLRプロシージャ用のSQLServerのセットアップ.
前提条件
- すべてを使用するために必要な標準的な前提条件について学習するには NCache クライアント側の機能については、次のページを参照してください。 クライアント側 API の前提条件.
- セットアップ環境 CLRプロシージャを使用するため。
- .NET Framework 4.8でなければなりません。
- Microsoft SQL Serverは、SQLServer2008以降である必要があります。
- APIの詳細については、以下を参照してください。 Iキャッシュ, CacheManager, 処分, 削除します.
Note
使用することをお勧めします。 CLRStoredProcedure.NCache
Nuget パッケージは CLR プロシージャ アプリケーション専用であり、オブジェクト データ キャッシュ アプリケーション用ではありません。
ステップ 1: 新しいアプリケーションを作成する
新しいアプリケーションを作成し、 StoredProcedure
、使用して Microsoft Visual Studio. アプリケーションは、次の基準を満たす必要があります。
- それはきっと クラスライブラリ.
- を使用する必要があります。 .NET framework 4.8.
手順 2: CLR ストアド プロシージャを追加する
CLR ストアド プロシージャをアプリケーションに追加し、アプリケーション ロジックを実装します。 詳細については、Microsoft のドキュメントを参照してください。 CLR手順.
以下は、更新された場合に項目をキャッシュから削除する CLR ストアド プロシージャのサンプルです。
重要
万一に備えて NCache CLR ストアド プロシージャを使用しているマシンにインストールされていない。 client.ncconf パスに配置する必要があります C:\ WINDOWS \ System32。 そうしないと、キャッシュに対する操作は実行されません。
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void RemoveOnUpdate(string cacheName, string key)
{
// Connect to the cache
ICache cache = CacheManager.GetCache(cacheName);
// Remove specified item
cache.Remove(key);
// Dispose the cache
cache.Dispose();
}
}
Note
操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
Note
操作を一括で実行する同期ロジックを作成してみてください。
手順 3: CLR ストアド プロシージャを実行する
プロジェクトを構築する
StoredProcudure
引き起こすStoredProcudure.dll
.SQL Server で次のコマンドを実行して、dll を展開します。
Note
アプリケーションのパスに従って、このクエリのパスを変更します。
CREATE ASSEMBLY [NCacheCLRStoredProcedures] FROM N'C:\Users\john_doe\source\repos\StoredProcedure\bin\Debug\StoredProcedure.dll' WITH PERMISSION_SET=UNSAFE
- 次のコマンドを使用して、SQL Server との CLR 統合を有効にします。
sp_configure 'clr enabled', 1
- 次のコマンドを使用して、SQL Server にストアド プロシージャを作成します。
CREATE PROCEDURE RemoveOnUpdate
@cacheName AS nvarchar(4000),
@key AS nvarchar(4000)
AS
EXTERNAL NAME NCacheCLRStoredProcedures.StoredProcedures.RemoveOnUpdate
- 次のコマンドを使用して、CLR ストアド プロシージャを実行します。
Note
この手順で指定したキャッシュが次の場所に存在することを確認してください client.ncconf.
EXEC RemoveOnUpdate “demoCache”, “key:123”
も参照してください
。ネット: Alachisoft.NCache.Runtime.Dependency 名前空間