Configurazione del server: memoria massima della cache del gestore dei blocchi (%)

Si applica a: SQL Server 2025 (17.x) e versioni successive

L'opzione max lock manager cache memory (%) di configurazione del server limita la quantità di memoria che può essere usata dalla cache di Gestione blocchi, come percentuale della memoria totale di cui è stato eseguito il commit di SQLOS. Per impostazione predefinita, la configurazione è impostata sul 20%.

Availability

Questa opzione di configurazione è disponibile nelle piattaforme e nelle versioni SQL seguenti:

  • SQL Server 2025 (17.x) Aggiornamento cumulativo (CU) 5 e versioni successive

Remarks

Quando viene rilasciato un blocco, la memoria usata dalla struttura di blocco non viene liberata, ma viene memorizzata nella cache dal gestore blocchi per evitare il sovraccarico di allocazione della memoria nell'acquisizione successiva del blocco e per migliorare le prestazioni.

Prima di SQL Server 2025 (17,x) CU 5 e nelle versioni precedenti di SQL Server, la cache di Gestione blocchi può aumentare fino alle dimensioni massime della memoria di gestione blocchi, ovvero il 60% della memoria totale di cui è stato eseguito il commit di SQLOS. Un carico di lavoro può aumentare le dimensioni della cache di Gestione blocchi fino a questo limite. Ad esempio, questa situazione non comune può verificarsi in carichi di lavoro con un elevato numero di query concorrenti quando l'escalation dei blocchi è disabilitata per l'istanza di motore di database. Se la cache del gestore dei blocchi diventa molto grande, il buffer pool, la cache dei piani e le altre cache di memoria di un'istanza di SQL Server si riducono, con conseguente riduzione delle prestazioni.

In SQL Server 2025 (17,x) CU 5 e versioni successive, le dimensioni massime della cache di Gestione blocchi sono limitate al 20% per impostazione predefinita. La memoria del gestore dei blocchi può comunque aumentare fino al 60% della memoria confermata di SQLOS, se richiesto dal carico di lavoro. Tuttavia, quando vengono rilasciati blocchi, la memoria viene liberata anziché memorizzata nella cache se la cache di Gestione blocchi ha già raggiunto il limite configurato.

L'impostazione della max lock manager cache memory (%) configurazione su un valore maggiore del 20% non è consigliata, ma è supportata per la compatibilità con le versioni precedenti. È possibile impostare il valore nell'intervallo del 20-60%.

È possibile monitorare le dimensioni totali della memoria del gestore dei blocchi tramite sys.dm_os_memory_clerks, con OBJECTSTORE_LOCK_MANAGER come tipo di gestore della memoria. In un'istanza inattiva del motore di database, il valore riportato corrisponde alla dimensione della cache di memoria del gestore dei blocchi.

Examples

A. Impostare la dimensione massima della memoria della cache di Gestione blocchi

L'esempio seguente imposta la memoria massima della cache di Gestione blocchi sul 25%:

EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;

EXECUTE sp_configure 'max lock manager cache memory (%)', 25;
RECONFIGURE;

B. Monitorare la memoria del gestore blocchi

L'esempio seguente mostra le dimensioni correnti della memoria di gestione blocchi. Il valore include la memoria occupata dai lock acquisiti, se presenti, e la memoria messa in cache per migliorare le prestazioni delle successive acquisizioni dei lock.

SELECT SUM(pages_kb) / 1024. AS lock_manager_cache_memory_mb
FROM sys.dm_os_memory_clerks
WHERE type = 'OBJECTSTORE_LOCK_MANAGER';