Limita la memoria massima del server per evitare la pressione della memoria - AWS Guida prescrittiva

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 già allocata. 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, vedere Opzioni di configurazione della memoria del server nella documentazione di SQL Server.)

La memoria di SQL Server ha due componenti: il pool di buffer e il pool non buffer (chiamato anche memory to leave o MTL). Il valore dell'opzione max_server_memory determina la dimensione del buffer pool di SQL Server, che comprende buffer cache, procedure cache, plan cache, buff structures e altre cache.

A partire da SQL Server 2012, gli account min_server_memory e max_server_memory per 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 SQL Server.

Per verificare 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 è di 1-4 GB.

  • MTL (memory to leave) include la dimensione dello stack, che è di 2 MB su macchine 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 RAM di base è determinata come segue:

  • Se la RAM sul server è compresa tra 4 GB e 16 GB, lascia 1 GB per 4 GB di RAM. Ad esempio, per un server con 16 GB, lascia 4 GB.

  • Se la RAM sul server è superiore a 16 GB, lascia 1 GB per 4 GB di RAM fino a 16 GB e 1 GB per 8 GB di RAM oltre 16 GB.

Ad esempio, se un server dispone di 256 GB di RAM, il calcolo sarà:

  • 1 GB per il sistema operativo

  • Fino a 16 GB di RAM: 16/4 = 4 GB

  • RAM rimanente superiore a 16 GB: (256-16) /8 = 30

  • RAM totale 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 per una durata tipica del carico di lavoro per determinare se è necessario aumentare o diminuire la memoria allocata a SQL Server.

Nota

Windows segnala la notifica di risorse di memoria insufficienti 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 più RAM.

Per ulteriori informazioni, vedere la Memory Management Architecture Guide nella documentazione di Microsoft SQL Server.