Abilitazione della memoria AWE per SQL Server

Questa caratteristica verrà rimossa a partire dalla prossima versione di Microsoft SQL Server. Non utilizzare questa caratteristica in un nuovo progetto di sviluppo e modificare non appena possibile le applicazioni in cui è attualmente implementata.

AWE (Address Windowing Extensions) consente ai sistemi operativi a 32 bit di accedere a grandi quantità di memoria. AWE è esposto dal sistema operativo e viene implementato con lievi differenze in Microsoft Windows 2000 Server e Windows Server 2003. Viene inoltre attivato tramite l'opzione Opzione awe enabled.

Utilizzo della memoria mappata AWE con Windows 2000 Server

Le istanze di Microsoft SQL Server eseguite in Windows 2000 allocano la memoria durante l'avvio di SQL Server in base alla sequenza di eventi indicata di seguito.

  • Se la memoria fisica disponibile è inferiore allo spazio degli indirizzi virtuali della modalità utente, l'attivazione di AWE non è possibile. In questo caso SQL Server non viene eseguito in modalità AWE, indipendentemente dall'impostazione dell'opzione awe enabled.

  • Se la memoria fisica disponibile è superiore allo spazio degli indirizzi virtuali della modalità utente, è possibile attivare AWE.

    • Se la memoria fisica disponibile è superiore al valore dell'opzione max server memory, l'istanza di SQL Server blocca la quantità di memoria specificata in max server memory.

    • Se la memoria fisica disponibile è inferiore al valore dell'opzione max server memory o se l'opzione max server memory non è stata impostata, l'istanza di SQL Server blocca tutta la memoria disponibile tranne 256 MB.

  • Dopo l'allocazione, la memoria mappata AWE non può essere rilasciata fino all'arresto di SQL Server.

Configurazione delle opzioni di memoria

È consigliabile impostare un valore per max server memory ogni volta che si attiva AWE. Quando l'opzione awe enabled è impostata su 1 e la memoria fisica disponibile è maggiore dello spazio di processo della modalità utente, all'avvio del server le istanze di SQL Server eseguite in Windows 2000 bloccano quasi tutta la memoria disponibile oppure il valore di max server memory se l'opzione è stata impostata. Se l'opzione max server memory non è impostata, per le altre applicazioni o istanze di SQL Server sono disponibili meno di 128 MB di memoria fisica.

Non è possibile eseguire lo swapping del pool di memoria mappata AWE nei file di paging del sistema. Se è necessaria memoria fisica aggiuntiva, Windows dovrà eseguire lo swapping su altre applicazioni, con possibili conseguenze negative sulle prestazioni di queste ultime.

Per evitare effetti negativi sulle prestazioni di altre applicazioni, configurare max server memory in modo da lasciare libera una determinata quantità di memoria per le possibili esigenze delle altre applicazioni e del sistema operativo. Per determinare la quantità di memoria allocabile per le istanze di SQL Server è sufficiente identificare la quantità di memoria rimanente dopo l'avvio di tutte le altre applicazioni che verranno utilizzate nel computer.

Nota

In Windows 2000 Server l'opzione min server memory viene ignorata dalla funzionalità AWE di SQL Server.

Utilizzare il contatore di Performance Monitor di SQL ServerMemoria totale server (KB) per determinare la quantità di memoria allocata dall'istanza di SQL Server eseguita in modalità AWE, oppure selezionare l'utilizzo di memoria da sysperfinfo.

Per ulteriori informazioni, vedere Monitoraggio dell'utilizzo della memoria.

Esecuzione di più istanze di SQL Server con AWE

Se nel server viene eseguito Windows 2000, configurare l'impostazione max server memory per ogni istanza. Poiché SQL Server eseguito nei sistemi operativi Windows 2000 non supporta l'allocazione dinamica della memoria mappata AWE, si consiglia di impostare l'opzione max server memory per ciascuna istanza.

La somma dei valori max server memory per tutte le istanze deve essere inferiore rispetto alla quantità di memoria fisica presente nel computer. Se la somma supera la memoria fisica totale, alcune delle istanze non vengono avviate o hanno accesso a una quantità di memoria inferiore a quanto specificato dall'impostazione max server memory. Si supponga, ad esempio, che in un computer con 16 GB di memoria fisica siano installate tre istanze di SQL Server. L'opzione max server memory, inoltre, è impostata su 8 GB per ogni istanza. Se si arrestano e riavviano tutte e tre le istanze, l'allocazione della memoria è la seguente:

  1. La prima istanza ha accesso a 8 GB di memoria fisica.

  2. La seconda istanza viene avviata, ma ha accesso a una quantità di memoria fisica leggermente inferiore a 8 GB (massimo 128 MB in meno).

  3. La terza istanza viene avviata in modalità di memoria dinamica e ha accesso a una quantità di memoria fisica inferiore o pari a 256 MB.

Per ulteriori informazioni, vedere Gestione della memoria per database di grandi dimensioni.

Utilizzo della memoria mappata AWE con Windows Server 2003

SQL Server supporta l'allocazione dinamica della memoria AWE in Windows Server 2003. Durante l'avvio, SQL Server riserva solo una piccola parte della memoria mappata AWE. Man mano che si rende necessaria memoria mappata AWE aggiuntiva, il sistema operativo la alloca in modo dinamico a SQL Server. Analogamente, se sono necessarie meno risorse, SQL Server può restituire memoria mappata AWE al sistema operativo, per l'utilizzo da parte di altri processi o applicazioni. Per ulteriori informazioni sull'opzione di configurazione awe enabled, vedere Opzione awe enabled.

Con l'introduzione della famiglia Windows Server 2003, la quantità di memoria fisica supportata è aumentata. La memoria fisica alla quale AWE ha accesso dipende dal sistema operativo in uso. Nell'elenco seguente viene specificata la memoria fisica massima accessibile da ogni sistema operativo Windows Server 2003 al momento della compilazione del presente documento.

  • 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.

Configurazione delle opzioni di memoria

SQL Server alloca dinamicamente memoria mappata AWE se è in esecuzione con un'edizione del sistema operativo Windows Server 2003. In altri termini, il pool di buffer è in grado di gestire dinamicamente la memoria mappata AWE, nell'ambito dei vincoli delle opzioni min server memory e max server memory, per bilanciare l'utilizzo di memoria di SQL Server con i requisiti generali del sistema.

Se l'opzione AWE è attivata, in SQL Server viene sempre eseguito il tentativo di utilizzare la memoria mappata AWE. Ciò è valido per tutte le configurazioni di memoria, compresi i computer configurati per rendere disponibile alle applicazioni meno di 3 GB di spazio degli indirizzi della modalità utente.

  • Si consiglia di impostare AWE come modalità di memoria predefinita per SQL Server con Windows Server 2003. La caratteristica di aggiunta di memoria a caldo richiede l'attivazione di AWE durante l'avvio di SQL Server. Per informazioni, vedere Aggiunta di memoria a caldo.

Nota

AWE non è necessario e non può essere configurato in sistemi operativi a 64 bit.

  • Poiché la memoria mappata AWE è supportata sotto i 3 GB, è possibile definire i valori min server memory e max server memory entro l'intervallo della memoria fisica, oppure utilizzare i valori predefiniti di ambedue le opzioni.

  • È consigliabile impostare max server memory per SQL Server in modo da garantire una determinata quantità di memoria per le altre applicazioni presenti nel computer. Sebbene SQL Server sia in grado di rilasciare dinamicamente la memoria mappata AWE, non è possibile eseguire lo swapping nel file di paging della quantità di memoria mappata AWE attualmente allocata.

Per rendere AWE disponibile per un'istanza di SQL Server, utilizzare sp_configure per impostare l'opzione awe enabled su 1 e quindi riavviare SQL Server.

Per ulteriori informazioni su min server memory e max server memory, vedere Opzioni per la memoria server.

Prima di attivare AWE, è necessario configurare i criteri Lock Pages in Memory. Per ulteriori informazioni, vedere Procedura: Attivazione dell'opzione Blocco di pagine in memoria (Windows).

Esempio

Nel seguente esempio viene illustrato come attivare AWE e configurare un limite di 1 GB per min server memory e 6 GB per max server memory.

Innanzitutto, configurare AWE:

sp_configure 'show advanced options', 1
RECONFIGURE
GO

sp_configure 'awe enabled', 1
RECONFIGURE
GO

Dopo il riavvio di SQL Server, nel registro errori di SQL Server viene scritto un messaggio relativo all'attivazione delle estensioni AWE.

In seguito, configurare la memoria:

sp_configure 'min server memory', 1024
RECONFIGURE
GO

sp_configure 'max server memory', 6144
RECONFIGURE
GO

In questo esempio, le impostazioni della memoria consentono al pool di buffer di eseguire la gestione dinamica della memoria mappata AWE fra 1 GB e 6 GB. Se altre applicazioni richiedono memoria aggiuntiva, SQL Server può rilasciare la memoria mappata AWE allocata non necessaria. In questo esempio è possibile rilasciare la memoria mappata AWE solo fino al limite di 1 GB.

La gestione dinamica della memoria AWE consente inoltre a SQL Server di aumentare la memoria in caso di aggiunta di memoria a caldo nei computer che supportano tale operazione. L'aggiunta di memoria a caldo, disponibile in Windows Server 2003 3, Enterprise Edition e Datacenter Edition, consente di aggiungere memoria mentre il computer è acceso. Si supponga ad esempio che SQL Server in esecuzione in Windows Server 2003 Enterprise Edition venga avviato in un computer dotato di 16 GB di memoria fisica. Il sistema operativo è configurato in modo da limitare le applicazioni a 2 GB di spazio degli indirizzi della memoria virtuale. AWE è stata attivata in SQL Server. Successivamente, l'amministratore di sistema aggiunge 16 GB di memoria mentre il computer è acceso. SQL Server riconosce immediatamente la memoria aggiuntiva e, se necessario, può sfruttarla.

Per ulteriori informazioni sull'utilizzo di AWE, vedere la documentazione di Windows Server 2003.

Esecuzione di più istanze di SQL Server con AWE

Se più istanze di SQL Server sono in esecuzione nello stesso computer e ogni istanza utilizza la memoria mappata AWE, è necessario assicurarsi che le prestazioni delle istanze corrispondano alle aspettative.

Se nel server viene eseguito Windows Server 2003, è opportuno configurare l'impostazione min server memory per ogni istanza. Poiché SQL Server eseguito in Windows Server 2003 supporta la gestione dinamica della memoria mappata AWE, si consiglia di impostare l'opzione min server memory per ciascuna istanza. Poiché non è possibile eseguire lo swapping nel file di paging della memoria mappata AWE, la somma dei valori min server memory di tutte le istanze deve essere inferiore alla memoria fisica totale del computer.

L'opzione min server memory non impone a SQL Server l'acquisizione di una quantità minima di memoria all'avvio. La memoria viene allocata su richiesta, in base al carico di lavoro del database. Tuttavia, quando viene raggiunto il valore soglia impostato per min server memory, SQL Server non rilascia la memoria qualora l'operazione lasciasse al programma una quantità di memoria inferiore a tale valore. Pertanto, per assicurare che ogni istanza disponga di una quantità di memoria allocata pari almeno al valore min server memory, si consiglia di eseguire il caricamento di un server database subito dopo l'avvio. Durante la normale attività del server la memoria disponibile per ogni istanza varia, ma non è mai inferiore al valore min server memory disponibile per ogni istanza.

È possibile impostare max server memory oppure utilizzare il valore predefinito dell'opzione. Se si utilizza il valore predefinito dell'opzione max server memory, le istanze di SQL Server entrano in competizione per l'acquisizione di memoria.

Utilizzo del clustering di failover con AWE

Se si utilizza il clustering di failover di SQL Server con la memoria AWE, verificare che la somma dei valori di max server memory di tutte le istanze sia inferiore alla quantità minima di memoria fisica disponibile in uno qualsiasi dei server del cluster di failover. Se il nodo di failover dispone di una quantità di memoria fisica inferiore a quella del nodo originale, è possibile che le istanze di SQL Server non vengano avviate o vengano avviate con quantità di memoria inferiori a quelle di cui disponevano nel nodo originale.