access check cache サーバー構成オプション

適用対象:SQL Server

データベース オブジェクトに SQL Serverからアクセスすると、アクセス チェックが access check result cacheと呼ばれる内部構造にキャッシュされます。 アドホック クエリの実行率が高い SQL Server のインスタンスでは、sys.dm_os_memory_cache_entries ビューにクラスが 65535 のアクセス チェック トークン エントリが多数存在する場合があります。 クラスが 65535 のアクセス チェック トークン エントリは、特殊なキャッシュ エントリを表します。 これらのキャッシュ エントリは、クエリの累積的なアクセス許可チェックに使用されます。

たとえば、select * from t1 join t2 join t3 のようなクエリを実行するとします。 この場合、SQL Server ではこのクエリの累積的なアクセス許可チェックを計算します。 このチェックでは、ユーザーが t1t2t3 に対する SELECT 権限を持っているかどうかを判定します。 これらの累積的なアクセス許可チェックの結果は、アクセス チェック トークン エントリに埋め込まれており、ID が 65535 のアクセス チェック キャッシュ ストアに挿入されます。 同じユーザーがこのクエリを複数回再利用または実行する場合、SQL Server ではそのアクセス チェック トークン キャッシュ エントリを 1 回再利用します。

このキャッシュの使用を最適化するには、さまざまなクエリ パラメーター化手法の使用するか、よくあるクエリ パターンをストアド プロシージャを使用するように変換することを検討してください。

access check cache bucket count オプションは、access check result cache に使用されるハッシュ バケットの数を制御します。

access check cache quota オプションは、access check result cache に格納されるエントリの数を制御します。 エントリが最大数に達すると、最も古いエントリが access check result cache から削除されます。

注釈

既定値は 0 で、SQL Server がこれらのオプションを管理していることを示します。 既定値は次の内部構成に変換されます。

SQL Server 2016 (13.x) 以降

サーバー アーキテクチャ 既定のエントリ数
キャッシュ クォータへのアクセス確認 X64 1,024
キャッシュ バケット カウントへのアクセス確認 X64 256

SQL Server 2008 (10.0.x) から SQL Server 2014 (12.x) まで

  サーバー アーキテクチャ 既定のエントリ数
アクセス チェック キャッシュ クォータ x86 1,024
x64 と IA-64 28,192,048
アクセス チェック キャッシュ バケット カウント x86 256
x64 と IA-64 2,048

まれに、これらのオプションを変更することによってパフォーマンスが向上する場合があります。 たとえば、メモリの使用率が高すぎる場合は、access check result cache のサイズを小さくした方がよいでしょう。 または、アクセス許可の再計算時に CPU の使用率が高い場合、access check result cache のサイズを大きくします。

これらのオプションはマイクロソフト カスタマー サポート サービスから指示があった場合にのみ変更することをお勧めします。 access check cache bucket countaccess check cache quota の値を変更する必要がある場合は、1:4 の比率を使用してください。 たとえば、access check cache bucket count 値を 512 に変更した場合、access check cache quota 値は 2048 に変更します。

関連項目