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.