Configuration du serveur : access check cache
S’applique à : SQL Server
Lorsque SQL Serveraccède aux objets de base de données, la vérification de l'accès est mise en cache dans une structure interne appelée le cache de résultat de la vérification d'accès. Sur une instance de SQL Server qui a un taux élevé d’exécution de requête ad hoc, vous pouvez remarquer de nombreuses entrées de jeton de vérification d’accès qui ont une classe de 65535 dans la vue sys.dm_os_memory_cache_entries
. Les entrées de jeton de vérification d’accès dont la classe est 65535 représentent des entrées de cache spéciales. Ces entrées de cache sont utilisées pour les vérifications d’autorisations cumulatives pour les requêtes.
Vous pouvez par exemple exécuter la requête suivante :
SELECT *
FROM t1
INNER JOIN t2
INNER JOIN t3;
Dans ce cas, SQL Server calcule une vérification d’autorisation cumulative pour cette requête. Cette vérification détermine si un utilisateur dispose d’autorisations SELECT sur t1
, t2
et t3
. Ces résultats de vérification d’autorisation cumulative sont incorporés dans une entrée de jeton de vérification d’accès et sont insérés dans le magasin de cache de vérification d’accès avec l’ID 65535. Si le même utilisateur réutilise ou exécute cette requête plusieurs fois, SQL Server réutilise l’entrée du cache du jeton de vérification d’accès une seule fois.
Pour optimiser l’utilisation de ce cache, vous devez envisager d’utiliser différentes techniques de paramétrage de requête ou de convertir des modèles de requête fréquents pour utiliser des procédures stockées.
L’option access check cache bucket count
contrôle le nombre de compartiments de hachage utilisés pour le cache des résultats de la vérification d’accès.
L’option access check cache quota
contrôle le nombre d’entrées stockées dans le cache des résultats de la vérification d’accès. Quand le nombre maximal d’entrées est atteint, les entrées les plus anciennes sont supprimées du cache des résultats de la vérification d’accès.
Notes
Les valeurs par défaut 0
indiquent que SQL Server gère ces options. Les valeurs par défaut se traduisent par les configurations internes suivantes.
SQL Server 2016 (13.x) et versions ultérieures
Paramètre de configuration | Architecture du serveur | Nombre d’entrées par défaut |
---|---|---|
access check cache quota |
x64 | 1 024 |
access check cache bucket count |
x64 | 256 |
SQL Server 2008 (10.x) vers SQL Server 2014 (12.x)
Paramètre de configuration | Architecture du serveur | Nombre d’entrées par défaut |
---|---|---|
access check cache quota |
x86 | 1 024 |
x64 et IA-64 | 28 192 048 | |
access check cache bucket count |
x86 | 256 |
x64 et IA-64 | 2 048 |
Dans de rares circonstances, la modification de ces options peut améliorer les performances. Par exemple, vous pouvez réduire la taille du cache des résultats de la vérification d’accès si la quantité de mémoire utilisée est trop importante. Vous pouvez également augmenter la taille du cache des résultats de la vérification d’accès si vous constatez une utilisation intensive du processeur quand les autorisations sont recalculées.
Nous vous conseillons de ne modifier ces options que sur recommandation des services de support technique Microsoft. Si vous souhaitez modifier les valeurs access check cache bucket count
et access check cache quota
, utilisez un ratio de 1:4. Par exemple, si vous modifiez la valeur access check cache bucket count
en 512
, vous devez remplacer la valeur access check cache quota
par 2048
.