Serverkonfigurationsoptionen für den 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önnen zum Beispiel die folgende Abfrage ausführen: select * from t1 join t2 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.
SQL Server 2016 (13.x) und höher
Serverarchitektur | Standardanzahl von Einträgen | |
---|---|---|
Access check cache quota | x64 | 1\.024 |
Access check cache bucket count | x64 | 256 |
SQL Server 2008 (10.0.x) bis SQL Server 2014 (12.x)
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 Werte access check cache bucket count und access check cache quota ändern möchten, verwenden Sie ein Verhältnis von 1:4. Beispiel: Wenn Sie den Wert access check cache bucket count in 512
ändern, sollten Sie den Wert für access check cache quota in 2048
ändern.
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für