Configurazione del server: access check cache

Si applica a: SQL Server

Quando SQL Server accede agli oggetti di database, il controllo dell'accesso viene memorizzato nella cache in una struttura interna denominata cache dei risultati del controllo dell'accesso. In un'istanza di SQL Server con una frequenza elevata di esecuzione di query ad hoc, è possibile notare molte voci del token di controllo di accesso con una classe 65535 nella visualizzazione sys.dm_os_memory_cache_entries. Le voci del token di controllo di accesso con una classe 65535 rappresentano voci della cache speciali. Queste voci della cache vengono usate per i controlli cumulativi delle autorizzazioni per le query.

Se ad esempio si esegue la query seguente:

SELECT *
FROM t1
INNER JOIN t2
INNER JOIN t3;

In questo caso, SQL Server calcola un controllo delle autorizzazioni cumulativo per questa query. Questo controllo determina se un utente dispone di autorizzazioni SELECT per t1, t2 e t3. Questi risultati del controllo delle autorizzazioni cumulativo sono incorporati in una voce del token di controllo di accesso e vengono inseriti nell'archivio cache di controllo di accesso con ID 65535. Se lo stesso utente riutilizza o esegue questa query più volte, SQL Server riutilizza la voce della cache dei token di controllo di accesso una sola volta.

Per ottimizzare l'uso di questa cache, è consigliabile usare varie tecniche di parametrizzazione delle query o convertire modelli di query frequenti per usare stored procedure.

L'opzione access check cache bucket count controlla il numero di bucket di hash usati per la cache dei risultati di controllo accesso.

L'opzione access check cache quota controlla il numero di voci archiviate nella cache dei risultati di controllo accesso. Quando viene raggiunto il numero massimo di voci, le voci meno recenti vengono rimosse dalla cache dei risultati di controllo accesso.

Osservazioni:

Il valore predefinito 0 indica che le opzioni vengono gestite da SQL Server. I valori predefiniti vengono convertiti nelle configurazioni interne seguenti.

SQL Server 2016 (13.x) e versioni successive

Impostazione di configurazione Architettura del server Numero predefinito di voci
access check cache quota x64 1.024
access check cache bucket count x64 256

Da SQL Server 2008 (10.0.x) a SQL Server 2014 (12.x)

Impostazione di configurazione Architettura del server Numero predefinito di voci
access check cache quota x86 1.024
X64 e IA-64 28,192,048
access check cache bucket count x86 256
X64 e IA-64 2.048

Raramente la modifica di tali opzioni consente di ottenere prestazioni migliori. Ad esempio, è possibile ridurre le dimensioni della cache dei risultati di controllo accesso se viene usata una quantità eccessiva di memoria. Oppure è possibile aumentare le dimensioni della cache dei risultati di controllo accesso se si riscontra un utilizzo elevato della CPU quando le autorizzazioni vengono ricalcolate.

È consigliabile modificare le opzioni solo se suggerito dal Servizio Supporto Tecnico Clienti Microsoft. Se si desidera modificare i valori access check cache bucket count e access check cache quota, usare un rapporto di 1:4. Ad esempio, se si modifica il valore access check cache bucket count in 512, è necessario modificare il valore access check cache quota in 2048.