Condividi tramite


Opzioni per la memoria server

Le due opzioni per la memoria del server min server memory e max server memory consentono di configurare la quantità di memoria in MB del pool di buffer utilizzata da un'istanza di MicrosoftSQL Server.

Per impostazione predefinita, in SQL Server i requisiti di memoria possono variare dinamicamente in base alle risorse di sistema disponibili. L'impostazione predefinita di min server memory è 0, mentre l'impostazione predefinita di max server memory è 2147483647. La quantità minima di memoria che è possibile specificare per max server memory è 16 MB.

[!NOTA]

L'impostazione di max server memory sul valore minimo può ridurre notevolmente le prestazioni di SQL Server, fino a impedirne l'avvio. Se non è possibile avviare SQL Server dopo la modifica di questa opzione, eseguire l'avvio con l'opzione di avvio –f e reimpostare max server memory sul valore precedente. Per ulteriori informazioni, vedere Utilizzo delle opzioni di avvio del servizio SQL Server.

Quando SQL Server utilizza la memoria in modo dinamico, esegue verifiche periodiche del sistema per determinare la quantità di memoria fisica libera disponibile. In MicrosoftWindows 2000, SQL Server aumenta o riduce la cache del buffer per mantenere una quantità di memoria fisica libera compresa tra 4 MB e 10 MB a seconda dell'attività del server. Il mantenimento di tale memoria libera evita il paging in Windows 2000. Se la memoria libera disponibile è minore, SQL Server rilascia memoria a Windows 2000. Se la quantità di memoria libera è superiore, SQL Server alloca memoria al pool di buffer. In SQL Server la memoria viene aggiunta al pool di buffer soltanto quando il carico di lavoro richiede memoria aggiuntiva. In un server non operativo il pool di buffer non registra alcun aumento di dimensioni.

In Windows Server 2003, SQL Server utilizza l'API di notifica relativa alla memoria QueryMemoryResourceNotification per determinare quando il pool di buffer è in grado di allocare e rilasciare memoria.

È consigliabile consentire a SQL Server di utilizzare dinamicamente la memoria. È tuttavia possibile impostare manualmente le opzioni relative alla memoria e limitare la quantità di memoria accessibile a SQL Server. Prima di impostare la quantità di memoria per SQL Server, determinare l'impostazione di memoria appropriata, sottraendo alla memoria fisica totale la quantità necessaria per Windows 2000 o Windows Server 2003 e per eventuali altre istanze di SQL Server, nonché per altri utilizzi se il sistema non è dedicato esclusivamente a SQL Server. La differenza così ottenuta rappresenta la quantità di memoria massima assegnabile a SQL Server.

Impostazione manuale delle opzioni per la memoria

Sono disponibili due metodi principali per l'impostazione manuale delle opzioni per la memoria di SQL Server:

  • In base al primo metodo, min server memory e max server memory vengono impostate sullo stesso valore, corrispondente alla quantità fissa di memoria da allocare al pool di buffer di SQL Server dopo il raggiungimento di tale valore.

  • In base al secondo metodo, min server memory e max server memory vengono impostate come valori limite di un intervallo di valori di memoria, Questa soluzione risulta utile quando gli amministratori di sistema o di database desiderano configurare un'istanza di SQL Server unitamente ai requisiti di memoria di altre applicazioni in esecuzione nello stesso computer.

Utilizzare min server memory per garantire al pool di buffer di un'istanza di SQL Server una quantità minima di memoria disponibile. SQL Server non alloca immediatamente all'avvio la quantità di memoria specificata in min server memory. Tuttavia, se l'utilizzo della memoria raggiunge tale valore a causa del carico di lavoro client, SQL Server non può liberare memoria dal pool di buffer allocato a meno che non si riduca il valore di min server memory.

[!NOTA]

SQL Server non esegue necessariamente l'allocazione della quantità di memoria specificata in min server memory. Se il carico sul server non richiede mai l'allocazione della quantità di memoria specificata in min server memory, SQL Server verrà eseguito con una quantità di memoria inferiore.

Utilizzare max server memory per evitare che il pool di buffer di SQL Server utilizzi una quantità di memoria superiore a quella specificata, in modo da lasciare la memoria rimanente disponibile per l'avvio rapido di altre applicazioni. SQL Server non alloca immediatamente all'avvio la quantità di memoria specificata in max server memory. L'utilizzo della memoria viene adeguato da SQL Server alle esigenze fino a quando non si raggiunge il valore specificato in max server memory. SQL Server non può utilizzare una quantità di memoria maggiore a meno che non si aumenti il valore di max server memory.

Prima di ridurre il valore di max server memory, utilizzare Performance Monitor per esaminare l'oggetto prestazione SQLServer:Gestione buffer sotto carico e osservare il valore corrente dei contatori Pagine prelevate e Pagine riservate. Tali contatori indicano la memoria come numero di pagine da 8 KB. Per evitare errori di memoria insufficiente, è necessario impostare max server memory su un valore superiore alla somma di questi due valori. Un valore approssimativo per l'impostazione minima ragionevole di max server memory (in MB) è ([Pagine prelevate] + [Pagine riservate])/ 100. Per ridurre il valore di max server memory potrebbe essere necessario riavviare SQL Server per rilasciare la memoria. Per informazioni sull'impostazione delle opzioni per la memoria, vedere Procedura: Impostazione di una quantità di memoria fissa (SQL Server Management Studio).

Opzione Massimizza la velocità di trasmissione dati per le applicazioni di rete

Per ottimizzare l'utilizzo della memoria di sistema per SQL Server, è necessario limitare la quantità di memoria utilizzata dal sistema per il caching dei file. Per limitare la cache del file system, assicurarsi che l'opzione Massimizza la velocità di trasmissione dati per condivisione file non sia selezionata. Per specificare la quantità minima di cache del file system, è possibile selezionare Minimizza la quantità di memoria utilizzata o Bilanciamento.

Per controllare l'impostazione corrente nel sistema operativo

  1. Fare clic su Start, scegliere Pannello di controllo, fare doppio clic su Connessioni di rete, quindi su Connessione alla rete locale (LAN).

  2. Nella scheda Generale fare clic su Proprietà, selezionare l'opzione Condivisione file e stampanti per reti Microsoft e quindi scegliere Proprietà.

  3. Se l'opzione Massimizza la velocità di trasmissione dati per le applicazioni di rete è selezionata, scegliere un'altra opzione, fare clic su OK e quindi chiudere le finestre di dialogo rimanenti.

Memoria AWE in Windows Server 2003

In Windows Server 2003, SQL Server può utilizzare la memoria AWE (Address Windowing Extensions) per contribuire ulteriormente al bilanciamento del carico dei requisiti di memoria e dei requisiti del sistema operativo. Tale bilanciamento tra SQL Server e il sistema operativo deve soddisfare i vincoli posti dalle opzioni min server memory e max server memory. Se l'hardware del server supporta l'aggiunta di memoria a caldo, è possibile aggiungere ulteriore memoria fisica al server in base alla necessità, senza riavviare il sistema. Per ulteriori informazioni sull'opzione di configurazione awe enabled, vedere Opzione awe enabled. Per ulteriori informazioni, vedere Aggiunta di memoria a caldo.

[!NOTA]

In Windows Server 2003 la memoria AWE dinamica è supportata su server con quantità di memoria fisica inferiore rispetto al limite di memoria virtuale configurato. Per attivare la memoria AWE in Windows 2000, è necessario che la memoria fisica disponibile superi la memoria virtuale.

La situazione ideale è quella in cui a SQL Server viene assegnata la quantità di memoria massima oltre la quale verrebbe eseguito lo swapping di pagine tra il sistema operativo e il disco rigido. La soglia varia a seconda del sistema. Ad esempio, in un sistema a 32 gigabyte (GB) dedicato esclusivamente a SQL Server una soglia massima appropriata per SQL Server potrebbe corrispondere a 30-31 GB. In un sistema a 64 GB la soglia appropriata potrebbe essere 60-62 GB.

[!NOTA]

Quando si aumenta la quantità di memoria destinata a SQL Server, verificare che lo spazio su disco disponibile sia sufficiente per contenere l'aumento di dimensioni del file di supporto della memoria virtuale del sistema operativo (Pagefile.sys) in modo che possa includere memoria aggiuntiva. Per ulteriori informazioni sul file di supporto della memoria virtuale, vedere la documentazione di Windows 2000 o Windows Server 2003.

Se necessario, utilizzare le statistiche disponibili nel Monitor di sistema di Windows per modificare il valore relativo alla memoria. Modificare il valore soltanto quando si aggiunge o rimuove memoria o quando si cambia la modalità di utilizzo del sistema.

Virtual Memory Manager

I sistemi operativi a 32 bit quali Windows 2000 e Windows Server 2003 consentono di accedere a 4 gigabyte (GB) di spazio degli indirizzi virtuale. I 2 GB di livello inferiore sono riservati a singoli processi e disponibili per l'utilizzo da parte delle applicazioni. I 2 GB di livello superiore sono riservati all'utilizzo da parte del sistema operativo. In tutte le edizioni del sistema operativo, a partire da MicrosoftWindows XP Professional e versioni successive, incluso Windows Server 2003, è disponibile un'opzione boot.ini che consente alle applicazioni di accedere a 3 GB di memoria virtuale, limitando il sistema operativo a 1 GB. Per ulteriori informazioni sull'utilizzo dell'opzione di configurazione della memoria /3GB, vedere la documentazione di Windows.

[!NOTA]

In Windows Server 2003 l'opzione PAE viene abilitata automaticamente solo se il server utilizza dispositivi con aggiunta di memoria a caldo. In questo caso, non è necessario utilizzare l'opzione /PAE in un sistema configurato per l'utilizzo di dispositivi con aggiunta di memoria a caldo. In tutti gli altri casi, è necessario utilizzare l'opzione /PAE nel file Boot.ini per poter sfruttare la memoria oltre i 4 GB.

Lo spazio degli indirizzi di 4 GB è mappato alla memoria fisica disponibile tramite Windows Virtual Memory Manager (VMM). Con l'introduzione dei sistemi operativi Windows Server 2003, la quantità di memoria fisica supportata è aumentata. La memoria fisica accessibile da parte di AWE dipende quindi dal sistema operativo in uso:

  • Windows Server 2003 Standard Edition supporta fino a 4 GB di memoria fisica.

  • Windows Server 2003 Enterprise Edition supporta fino a 32 GB di memoria fisica.

  • Windows Server 2003 Datacenter Edition supporta fino a 64 GB di memoria fisica.

Un'applicazione Win32 quale SQL Server utilizza esclusivamente indirizzi virtuali o logici, non indirizzi fisici. La quantità di memoria fisica utilizzata da un'applicazione in un determinato momento (set di lavoro) è determinata dalla memoria fisica disponibile e da VMM. L'applicazione non controlla direttamente le modalità di residenza in memoria.

La modalità PAE (Physical Addressing Extensions) consente a Windows 2000 Advanced Server e Windows 2000 Datacenter Server, oltre alle edizioni a 32 bit di Windows Server 2003 Enterprise Server e Windows Server 2003 Datacenter Server, di superare il limite di 4 GB. L'utilizzo dell'opzione /PAE nel file di configurazione di Windows boot.ini consente di accedere a una quantità di memoria fisica superiore al limite specificato di 4 GB. Si tratta di un requisito per l'accesso alla memoria AWE sopra a 4 GB. Per ulteriori informazioni sull'utilizzo della configurazione della memoria per Windows 2000 e Windows Server 2003, vedere la documentazione di Windows.

I sistemi a indirizzo virtuale, quali Windows 2000 o Windows Server 2003 consentono l'allocazione in eccesso della memoria fisica, per cui il rapporto memoria virtuale/memoria fisica può essere maggiore di 1:1. Di conseguenza, i computer con varie configurazioni di memoria fisica consentono l'esecuzione di programmi di dimensioni elevate. Tuttavia l'utilizzo di una quantità di memoria virtuale di molto superiore alla combinazione dei set di lavoro medi per tutti i processi determina un peggioramento delle prestazioni.

min server memory e max server memory sono opzioni avanzate. Se si utilizza la stored procedure di sistema sp_configure per modificare queste impostazioni, è possibile modificarle solo se il valore di show advanced options è impostato su 1. Queste impostazioni diventano effettive immediatamente e non richiedono il riavvio del server.

Esecuzione di più istanze di SQL Server

Quando si eseguono più istanze di Motore di database, è possibile gestire la memoria in tre modi:

  • Controllare l'utilizzo di memoria utilizzando max server memory. Stabilire le impostazioni massime per ogni istanza, accertandosi che il totale non sia superiore alla memoria fisica disponibile sul computer. È possibile rendere la memoria di ogni istanza proporzionale al relativo carico di lavoro previsto o alle dimensioni del database. Questo approccio presenta il vantaggio di rendere la memoria libera immediatamente disponibile ad ogni nuovo processo o istanza. Lo svantaggio è che se non vengono eseguite tutte le istanze, parte della memoria resterà inutilizzata.

  • Controllare l'utilizzo di memoria utilizzando min server memory. Stabilire le impostazioni minime per ogni istanza, in modo che la somma di tali minimi sia 1-2 GB inferiore alla memoria fisica totale del computer. Anche questi minimi possono essere resi proporzionali al carico previsto dell'istanza. Con questo approccio, quando non vengono eseguite tutte le istanze contemporaneamente, quelle in esecuzione potranno utilizzare la memoria libera rimanente. Questo approccio consente inoltre di riservare a SQL Server una quantità ragionevole di memoria quando sullo stesso computer vengono eseguiti anche altri processi particolarmente onerosi. Lo svantaggio è che quando viene avviata una nuova istanza o qualsiasi altro processo, le istanze in esecuzione rilasceranno la memoria con un certo ritardo, in particolare quando a tale scopo dovranno riscrivere le pagine modificate nei rispettivi database. È inoltre possibile che si renda necessario incrementare le dimensioni del file di paging in modo significativo.

  • Non intervenire in alcun modo (non consigliato). Le prime istanze sottoposte a carico di lavoro tenderanno ad allocare tutta la memoria. Alle istanze inattive o a quelle avviate in un secondo momento verrà destinata solo una minima quantità di memoria. SQL Server non ripartirà in alcun modo la memoria tra le diverse istanze. Tutte le istanze risponderanno comunque ai segnali di Windows Memory Notification correggendo di conseguenza la dimensione dei rispettivi pool di buffer. Come in Windows Server 2003 SP1, Windows non ripartisce la memoria tra le applicazioni con l'API di Windows Memory Notification. Offre invece un semplice feedback globale sulla disponibilità di memoria nel sistema.

Poiché è possibile modificare queste impostazioni senza riavviare le istanze, si potranno sperimentare facilmente valori diversi fino a individuare quelli più adatti alle proprie esigenze.

Esempi

Nell'esempio seguente l'opzione max server memory viene impostata su 4 GB.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO