Serverkonfiguration: Zugriffsüberprüfungscache

Gilt für: SQL Server

Beim Zugriff auf Datenbankobjekte durch SQL Serverwird die Zugriffsprüfung in einer internen Struktur zwischengespeichert, die als access check result cachebezeichnet wird. In einer Instanz von SQL Server mit einer hohen Rate von Ad-hoc-Abfrageausführungen könnten Sie viele Einträge für Zugriffsüberprüfungstoken mit einer Klasse von 65535 in der sys.dm_os_memory_cache_entries-Ansicht bemerken. Einträge für Zugriffsüberprüfungstoken mit einer Klasse von 65535 stellen spezielle Cacheeinträge dar. Diese Cacheeinträge werden für kumulative Berechtigungsüberprüfungen für Abfragen verwendet.

Sie könnten beispielsweise die folgende Abfrage ausführen:

SELECT *
FROM t1
INNER JOIN t2
INNER JOIN t3;

In diesem Fall berechnet SQL Server eine kumulative Berechtigungsüberprüfung für diese Abfrage. Diese Überprüfung bestimmt, ob ein Benutzer über SELECT-Berechtigungen für t1, t2 und t3 verfügt. Die Ergebnisse dieser kumulativen Berechtigungsüberprüfung werden in einen Eintrag für Zugriffsüberprüfungstoken eingebettet und in den Zugriffsüberprüfungscache mit einer ID von 65535 eingefügt. Wenn derselbe Benutzer diese Abfrage mehrmals wiederverwendet oder ausführt, verwendet SQL Server den Eintrag für den Zugriffsüberprüfungscache einmal.

Um die Verwendung dieses Cache zu optimieren, sollten Sie verschiedene Techniken für die Abfrageparametrisierung verwenden oder häufige Abfragemuster konvertieren, um gespeicherte Prozeduren zu verwenden.

Die Option access check cache bucket count steuert die Anzahl der Hashbuckets, die für den Ergebniscache der Zugriffsüberprüfung verwendet werden.

Die Option access check cache quota steuert die Anzahl der Einträge, die im Ergebniscache der Zugriffsüberprüfung gespeichert werden. Wenn die maximale Anzahl von Einträgen erreicht ist, werden die ältesten Einträge aus dem Ergebniscache der Zugriffsüberprüfung entfernt.

Bemerkungen

Die Standardwerte von 0 geben an, dass SQL Server diese Optionen verwaltet. Die Standardwerte werden in die folgenden internen Konfigurationen übersetzt.

Ab SQL Server 2016 (13.x)

Konfigurationseinstellung Serverarchitektur Standardanzahl von Einträgen
access check cache quota x64 1\.024
access check cache bucket count x64 256

SQL Server 2008 (10.x) bis SQL Server 2014 (12.x)

Konfigurationseinstellung Serverarchitektur Standardanzahl von Einträgen
access check cache quota x86 1\.024
x64 und IA-64 28.192.048
access check cache bucket count x86 256
x64 und IA-64 2\.048

In seltenen Fällen kann die Leistung durch das Ändern dieser Optionen verbessert werden. Beispielsweise können Sie den Ergebniscache für die Zugriffsüberprüfung verkleinern, wenn zu viel Arbeitsspeicher verwendet wird. Sie können den Ergebniscache für die Zugriffsüberprüfung auch vergrößern, wenn Sie bei der Neuberechnung von Berechtigungen eine hohe CPU-Auslastung feststellen.

Microsoft empfiehlt, diese Optionen nur auf Anweisung des Microsoft-Kundendiensts zu ändern. Wenn Sie die access check cache bucket count- und access check cache quota-Werte ändern möchten, verwenden Sie ein Verhältnis von 1:4. Wenn Sie z. B. den access check cache bucket count-Wert in 512 ändern, sollten Sie den access check cache quota-Wert in 2048 ändern.