Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Limita la memoria massima del server per evitare la pressione della memoria
Per motivi di prestazioni, SQL Server non rilascia memoria che ha già allocato. All'avvio, SQL Server occupa lentamente la memoria specificata nell'opzione min_server_memory, quindi continua a crescere fino a raggiungere il valore specificato nell'opzione max_server_memory. (Per ulteriori informazioni su queste impostazioni, consulta Opzioni di configurazione della memoria del server nella documentazione del server
SQLLa memoria del server è composta da due componenti: il buffer pool e il pool non buffer (chiamato anche memory to leave or). MTL Il valore dell'opzione max_server_memory determina la dimensione del pool di buffer del SQL server, che comprende buffer cache, procedure cache, plan cache, buff structures e altre cache.
A partire da SQL Server 2012, min_server_memory e max_server_memory rappresentano tutte le allocazioni di memoria per tutte le cache, tra cui,,,, e. SQLGENERAL
SQLBUFFERPOOL
SQLQUERYCOMPILE
SQLQUERYPLAN
SQLQUERYEXEC
SQLOPTIMIZER
SQLCLR
Per un elenco completo degli addetti alla memoria in max_server_memory, vedere sys.dm_os_memory_clerks nella documentazione di Microsoft Server.
Per controllare il valore attuale di max_server_memory, usa il comando:
$ sp_configure 'max_server_memory'
Ti consigliamo di limitare max_server_memory a un valore che non causi una pressione della memoria a livello di sistema. Non esiste una formula universale applicabile a tutti gli ambienti, ma abbiamo fornito alcune linee guida in questa sezione. max_server_memory è un'opzione dinamica, quindi può essere modificata in fase di esecuzione.
Come punto di partenza, puoi determinare max_server_memory come segue:
max_server_memory =
total_RAM
– (memory_for_the_OS
+MTL
)
dove:
-
La memoria per il sistema operativo è compresa tra 1 e 4 GB.
-
MTL(memoria da lasciare) include la dimensione dello stack, che è di 2 MB su computer a 64 bit per thread di lavoro e può essere calcolata come segue:
MTL = stack_size * max_worker_threads
In alternativa, puoi usare:
max_server_memory =
total_RAM
– (1 GB for the OS +memory_basis_amount_of_RAM_on_the_server
)
dove la quantità di memoria di base di RAM è determinata come segue:
-
Se RAM sul server è compresa tra 4 GB e 16 GB, lascia 1 GB per 4 GB diRAM. Ad esempio, per un server con 16 GB, lascia 4 GB.
-
Se la dimensione RAM sul server è superiore a 16 GB, lascia 1 GB per 4 GB RAM fino a 16 GB e 1 GB per 8 GB per RAM oltre 16 GB.
Ad esempio, se un server dispone di 256 GBRAM, il calcolo sarà:
-
1 GB per il sistema operativo
-
Fino a 16 GBRAM: 16/4 = 4 GB
-
Restanti RAM oltre 16 GB: (256-16) /8 = 30
-
Totale RAM da lasciare: 1+ 4 + 30 = 35 GB
-
memoria massima del server: 256 - 35 = 221 GB
Dopo la configurazione iniziale, monitora la memoria che puoi liberare nel corso di un normale carico di lavoro per determinare se è necessario aumentare o diminuire la memoria allocata al Server. SQL
Nota
Windows segnala la notifica di esaurimento delle risorse di memoria a 96 MB, quindi è necessario un buffer, ma è possibile impostare i Mbyte disponibili in modo che siano superiori a 1 GB su server più grandi con 256 GB o superiori. RAM
Per ulteriori informazioni, vedere la Memory Management Architecture Guide