Opzione locks

L'opzione locks consente di impostare il numero massimo di blocchi disponibili e di limitare così la quantità di memoria utilizzata per i blocchi stessi da Motore di database. L'impostazione predefinita è 0. Con tale impostazione l'allocazione e la deallocazione dei blocchi vengono eseguite dinamicamente da Motore di database in base alle variazioni dei requisiti del sistema.

Quando si avvia il server con l'opzione locks impostata su 0, Gestione blocchi acquisisce da Motore di database memoria sufficiente da per un pool iniziale di 2.500 blocchi. Quando il pool di blocchi è esaurito, viene acquisita memoria aggiuntiva per il pool.

In genere, se per il pool di blocchi è necessaria una quantità di memoria superiore a quella disponibile nel pool di memoria di Motore di database ed è disponibile ulteriore memoria del computer, ovvero non è stata raggiunta la soglia max server memory, tale memoria viene allocata dinamicamente da Motore di database per soddisfare la richiesta di blocchi. Se tuttavia questa modalità di allocazione di memoria determina la paginazione a livello del sistema operativo, ad esempio se un'altra applicazione eseguita sul computer in cui si trova l'istanza di SQL Server sta utilizzando la memoria disponibile, lo spazio aggiuntivo per i blocchi non viene allocato. Il pool di blocchi dinamico può acquisire fino al 40% della memoria disponibile per Motore di database. Se il pool di blocchi raggiunge il 60% della memoria acquisita da un'istanza di Motore di database oppure se nel computer non è disponibile ulteriore memoria, eventuali richieste aggiuntive di blocchi generano un errore.

L'utilizzo dinamico dei blocchi in SQL Server è la modalità di configurazione consigliata. È tuttavia possibile impostare l'opzione locks e impedire l'allocazione dinamica di risorse di blocco da parte di SQL Server. Se l'opzione locks è impostata su un valore diverso da 0, Motore di database è in grado di allocare solo il numero di blocchi corrispondente al valore specificato in locks. Aumentare il valore se viene visualizzato un messaggio indicante che è stato superato il numero di blocchi disponibili. Poiché ogni blocco richiede memoria (96 byte), l'aumento del valore può richiedere anche l'aumento della quantità di memoria destinata al server.

L'opzione locks influisce inoltre sul momento in cui si verifica l'escalation dei blocchi. Se l'opzione locks è impostata su 0, l'escalation dei blocchi si verifica quando la memoria utilizzata dai blocchi correnti raggiunge il 40% del pool di memoria di Motore di database. Se l'opzione locks è impostata su un valore diverso da 0, l'escalation dei blocchi si verifica quando il numero dei blocchi raggiunge il 40% del valore specificato per l'opzione locks.

L'opzione locks è un'opzione avanzata. Se per modificarne l'impostazione si utilizza la stored procedure di sistema sp_configure, sarà possibile modificare locks soltanto quando show advanced options è impostata su 1. L'impostazione diventa operativa dopo il riavvio del server.

In computer con configurazione NUMA (Non-Uniform Memory Access), l'impostazione dei blocchi è per nodo NUMA. Pertanto, un'impostazione di 10.000 in un computer a quattro nodi consente 40.000 blocchi. Il numero di nodi NUMA può essere determinato utilizzando la query seguente:

SELECT COUNT(DISTINCT parent_node_id)
FROM sys.dm_os_schedulers 
WHERE parent_node_id <> 32

Vedere anche

Concetti

Utilizzo di blocchi e controllo delle versioni delle righe
Escalation dei blocchi (Motore di database)
Impostazione delle opzioni di configurazione del server

Altre risorse

RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005