次の方法で共有


サーバー構成: access check cache

適用対象: SQL Server

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

たとえば、次のクエリを実行します。

SELECT *
FROM t1
INNER JOIN t2
INNER 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) 以降のバージョン

構成設定 サーバー アーキテクチャ 既定のエントリ数
access check cache quota X64 1,024
access check cache bucket count X64 256

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

構成設定 サーバー アーキテクチャ 既定のエントリ数
access check cache quota x86 1,024
x64 と IA-64 28,192,048
access check cache bucket count 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 に変更する必要があります。