Opzioni di configurazione del server Server MemoryServer Memory Server Configuration Options

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Usare le due opzioni per la memoria del server min server memory e max server memoryper riconfigurare la quantità di memoria, in megabyte, gestita con Gestione memoria di SQL Server per un processo di SQL Server usato da un'istanza di SQL ServerSQL Server.Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) that is managed by the SQL Server Memory Manager for a SQL Server process used by an instance of SQL ServerSQL Server.

L'impostazione predefinita per min server memory è 0, mentre quella per max server memory è 2147483647 MB.The default setting for min server memory is 0, and the default setting for max server memory is 2147483647 MB. Per impostazione predefinita, in SQL ServerSQL Server i requisiti di memoria possono variare dinamicamente in base alle risorse di sistema disponibili.By default, SQL ServerSQL Server can change its memory requirements dynamically based on available system resources.

Nota

L'impostazione di max server memory sul valore minimo provoca un grave peggioramento delle prestazioni di SQL ServerSQL Server , fino a impedirne l'avvio.Setting max server memory to the minimum value can severely reduce SQL ServerSQL Server performance and even prevent it from starting. Se non è possibile avviare SQL ServerSQL Server dopo la modifica di questa opzione, eseguire l'avvio con l'opzione di avvio -f e reimpostare max server memory sul valore precedente.If you cannot start SQL ServerSQL Server after changing this option, start it using the –f startup option and reset max server memory to its previous value. Per altre informazioni, vedere Opzioni di avvio del servizio del motore di database.For more information, see Database Engine Service Startup Options.

Quando SQL ServerSQL Server utilizza la memoria in modo dinamico, esegue query periodiche sul sistema per determinare la quantità di memoria libera disponibile.When SQL ServerSQL Server is using memory dynamically, it queries the system periodically to determine the amount of free memory. Il mantenimento di tale memoria libera impedisce il paging del sistema operativo.Maintaining this free memory prevents the operating system (OS) from paging. Se è disponibile una quantità minore di memoria libera, SQL ServerSQL Server rilascia memoria al sistema operativo.If less memory is free, SQL ServerSQL Server releases memory to the OS. Se è disponibile una quantità maggiore di memoria libera, in SQL ServerSQL Server può essere allocata più memoria.If more memory is free, SQL ServerSQL Server may allocate more memory. SQL ServerSQL Server aggiunge memoria solo se richiesto dal relativo carico di lavoro. In un server non operativo non vengono aumentate le dimensioni del proprio spazio degli indirizzi virtuali. adds memory only when its workload requires more memory; a server at rest does not increase the size of its virtual address space.

Vedere l'esempio B per una query che restituisce la memoria usata attualmente.See example B for a query to return the currently used memory. max server memory controlla l'allocazione di memoria di SQL ServerSQL Server , compresi il pool di buffer, la memoria per la compilazione, tutte le cache, le concessioni di memoria qe, la memoria per la gestione blocchi e la memoria clr (in particolare i clerk di memoria presenti in sys.dm_os_memory_clerks).max server memory controls the SQL ServerSQL Server memory allocation, including the buffer pool, compile memory, all caches, qe memory grants, lock manager memory, and clr memory (essentially any memory clerk found in sys.dm_os_memory_clerks). La memoria per gli stack di thread, gli heap di memoria, i provider di server collegati diversi da SQL ServerSQL Servere la memoria allocata da una DLL non di SQL ServerSQL Server non sono controllati da max server memory.Memory for thread stacks, memory heaps, linked server providers other than SQL ServerSQL Server, and any memory allocated by a non SQL ServerSQL Server DLL are not controlled by max server memory.

SQL ServerSQL Server usa l'API di notifica di memoria QueryMemoryResourceNotification per determinare i casi in cui è possibile allocare e rilasciare memoria con Gestione memoria di SQL Server. uses the memory notification API QueryMemoryResourceNotification to determine when the SQL Server Memory Manager may allocate memory and release memory.

È consigliabile consentire a SQL ServerSQL Server di usare la memoria in modo dinamico. È possibile, tuttavia, impostare manualmente le opzioni per la memoria e limitare la quantità di memoria a cui può accedere SQL ServerSQL Server .Allowing SQL ServerSQL Server to use memory dynamically is recommended; however, you can set the memory options manually and restrict the amount of memory that SQL ServerSQL Server can access. Prima di impostare la quantità di memoria per SQL ServerSQL Server, determinare l'impostazione appropriata per la memoria sottraendo dalla memoria fisica totale la memoria necessaria per il sistema operativo e per qualsiasi altra istanza di SQL ServerSQL Server , nonché per eventuali altri utilizzi del sistema se il computer non è completamente dedicato a SQL ServerSQL Server.Before you set the amount of memory for SQL ServerSQL Server, determine the appropriate memory setting by subtracting, from the total physical memory, the memory required for the OS and any other instances of SQL ServerSQL Server (and other system uses, if the computer is not wholly dedicated to SQL ServerSQL Server). La differenza così ottenuta rappresenta la quantità di memoria massima assegnabile a SQL ServerSQL Server.This difference is the maximum amount of memory you can assign to SQL ServerSQL Server.

Impostazione manuale delle opzioni per la memoriaSetting the Memory Options Manually

Impostare min server memory e max server memory per estendere l'intervallo di valori di memoria.Set min server memory and max server memory to span a range of memory values. Questo metodo è utile per gli amministratori di sistema o di database che desiderano configurare un'istanza di SQL ServerSQL Server insieme ai requisiti di memoria di altre applicazioni eseguite nello stesso computer.This method is useful for system or database administrators to configure an instance of SQL ServerSQL Server in conjunction with the memory requirements of other applications that run on the same computer.

Usare min server memory per garantire una quantità minima di memoria disponibile per Gestione memoria di SQL Server per un'istanza di SQL ServerSQL Server.Use min server memory to guarantee a minimum amount of memory available to the SQL Server Memory Manager for an instance of SQL ServerSQL Server. SQL ServerSQL Server non alloca immediatamente la quantità di memoria specificata in min server memory all'avvio. will not immediately allocate the amount of memory specified in min server memory on startup. Se, tuttavia, l'utilizzo della memoria raggiunge tale valore a causa del carico di lavoro del client, SQL ServerSQL Server può liberare memoria solo se si riduce il valore di min server memory .However, after memory usage has reached this value due to client load, SQL ServerSQL Server cannot free memory unless the value of min server memory is reduced.

Nota

SQL ServerSQL Server non esegue necessariamente l'allocazione della quantità di memoria specificata in min server memory. is not guaranteed to allocate the amount of memory specified in min server memory. Se il carico sul server non richiede mai l'allocazione della quantità di memoria specificata in min server memory, SQL ServerSQL Server verrà eseguito con una quantità di memoria inferiore.If the load on the server never requires allocating the amount of memory specified in min server memory, SQL ServerSQL Server will run with less memory.

La quantità di memoria minima consentita per max server memory è 128 MB.The minimum memory amount allowable for max server memory is 128 MB.

Come configurare le opzioni per la memoria tramite SQL Server Management StudioHow to configure memory options using SQL Server Management Studio

Usare le due opzioni per la memoria del server min server memory e max server memoryper riconfigurare la quantità di memoria, in megabyte, gestita tramite Gestione memoria di SQL Server per un'istanza di SQL ServerSQL Server.Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) managed by the SQL Server Memory Manager for an instance of SQL ServerSQL Server. Per impostazione predefinita, in SQL ServerSQL Server i requisiti di memoria possono variare dinamicamente in base alle risorse di sistema disponibili.By default, SQL ServerSQL Server can change its memory requirements dynamically based on available system resources.

Procedura per la configurazione di una quantità di memoria fissaProcedure for configuring a fixed amount of memory

Per impostare una quantità di memoria fissaTo set a fixed amount of memory

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.In Object Explorer, right-click a server and select Properties.

  2. Fare clic sul nodo Memoria .Click the Memory node.

  3. In Opzioni per la memoria del serverimmettere la quantità da usare per Memoria minima per il server e Memoria massima per il server.Under Server Memory Options, enter the amount that you want for Minimum server memory and Maximum server memory.

    Usare le impostazioni predefinite per consentire a SQL ServerSQL Server di modificare i requisiti di memoria in base alle risorse di sistema disponibili.Use the default settings to allow SQL ServerSQL Server to change its memory requirements dynamically based on available system resources. L'impostazione predefinita per min server memory è 0, mentre quella per max server memory è 2147483647 MB.The default setting for min server memory is 0, and the default setting for max server memory is 2147483647 megabytes (MB).

Ottimizzare la velocità effettiva dei dati per applicazioni di reteMaximize Data Throughput for Network Applications

Per ottimizzare l'utilizzo della memoria di sistema per SQL ServerSQL Server, è necessario limitare la quantità di memoria usata dal sistema per la memorizzazione dei file nella cache.To optimize system memory use for SQL ServerSQL Server, you should limit the amount of memory that is used by the system for file caching. Per limitare la cache del file system, assicurarsi che l'opzione Massimizza la velocità di trasmissione dati per condivisione file non sia selezionata.To limit the file system cache, make sure that Maximize data throughput for file sharing is not selected. Per specificare la quantità minima di cache del file system, è possibile selezionare Minimizza la quantità di memoria usata o Bilanciamento.You can specify the smallest file system cache by selecting Minimize memory used or Balance.

Per controllare l'impostazione corrente nel sistema operativoTo check the current setting on your operating system

  1. Fare clic su Start, scegliere Pannello di controllo, fare doppio clic su Connessioni di rete, quindi su Connessione alla rete locale (LAN).Click Start, click Control Panel, double-click Network Connections, and then double-click Local Area Connection.

  2. Nella scheda Generale fare clic su Proprietà, selezionare l'opzione Condivisione file e stampanti per reti Microsofte quindi scegliere Proprietà.On the General tab, click Properties, select File and Printer Sharing Microsoft Networks, and then click Properties.

  3. Se l'opzione Massimizza la velocità di trasmissione dati per le applicazioni di rete è selezionata, scegliere un'altra opzione, fare clic su OK, quindi chiudere tutte le finestre di dialogo rimanenti.If Maximize data throughput for network applications is selected, choose any other option, click OK, and then close the rest of the dialog boxes.

Blocco di pagine in memoriaLock Pages in Memory

Questi criteri di Windows determinano gli account autorizzati a usare un processo per mantenere i dati nella memoria fisica, impedendo al sistema di eseguire il paging dei dati nella memoria virtuale su disco.This Windows policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. Il blocco delle pagine in memoria può garantire il corretto funzionamento del server quando si verifica il paging della memoria su disco.Locking pages in memory may keep the server responsive when paging memory to disk occurs. L'opzione di SQL Server Blocco di pagine in memoria viene impostata su ON per istanze di SQL Server 2017SQL Server 2017 Standard edition ed edizioni superiori quando all'account con i privilegi per l'esecuzione di sqlservr.exe è stato concesso il diritto utente di Windows Blocco di pagine in memoria (LPIM).The SQL Server Lock Pages in Memory option is set to ON in instances of SQL Server 2017SQL Server 2017 Standard edition and higher when the account with privileges to run sqlservr.exe has been granted the Windows "Locked Pages in Memory” (LPIM) user right.

Per disabilitare l'opzione Blocco di pagine in memoria per SQL ServerSQL Server, rimuovere il diritto utente "Blocco di pagine in memoria" per l'account di avvio di SQL Server.To disable the Lock Pages In Memory option for SQL ServerSQL Server, remove the “Locked Pages in Memory” user right for the SQL Server startup account.

Per disabilitare l'opzione Blocco di pagine in memoriaTo Disable Lock Pages in Memory

Per disabilitare l'opzione Blocco di pagine in memoriaTo disable the lock pages in memory option

  1. Fare clic sul menu Start e scegliere Esegui.On the Start menu, click Run. Nella casella Apri digitare gpedit.msc.In the Open box, type gpedit.msc.

    Viene visualizzata la finestra di dialogo Criteri gruppo .The Group Policy dialog box opens.

  2. Nella console Criteri di gruppo espandere Configurazione computere quindi espandere Impostazioni di Windows.On the Group Policy console, expand Computer Configuration, and then expand Windows Settings.

  3. Espandere Impostazioni sicurezzae quindi espandere Criteri locali.Expand Security Settings, and then expand Local Policies.

  4. Selezionare la cartella Assegnazione diritti utente .Select the User Rights Assignment folder.

    I criteri verranno visualizzati nel riquadro dei dettagli.The policies will be displayed in the details pane.

  5. Nel riquadro fare doppio clic su Blocco di pagine in memoria.In the pane, double-click Lock pages in memory.

  6. Nella finestra di dialogo Impostazioni criteri di sicurezza locali selezionare l'account con i privilegi per eseguire sqlservr.exe e fare clic su Rimuovi.In the Local Security Policy Setting dialog box, select the account with privileges to run sqlservr.exe and click Remove.

Virtual Memory ManagerVirtual Memory Manager

Viene eseguito il mapping delle aree di cui è stato eseguito il commit dello spazio degli indirizzi alla memoria fisica disponibile tramite Virtual Memory Manager (VMM) di Windows.The committed regions of address space are mapped to the available physical memory by the Windows Virtual Memory Manager (VMM).

Per altre informazioni sulla quantità di memoria fisica supportata dai diversi sistemi operativi, vedere la documentazione di Windows relativa ai limiti di memoria per le versioni di Windows.For more information on the amount of physical memory supported by different operating systems, see the Windows documentation "Memory Limits for Windows Releases".

I sistemi con memoria virtuale consentono il commit in eccesso della memoria fisica, per cui il rapporto tra memoria virtuale e memoria fisica può essere maggiore di 1:1.Virtual memory systems allow the over-commitment of physical memory, so that the ratio of virtual-to-physical memory can exceed 1:1. Di conseguenza, i computer con diverse configurazioni di memoria fisica consentono l'esecuzione di programmi di dimensioni elevate.As a result, larger programs can run on computers with a variety of physical memory configurations. 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.However, using significantly more virtual memory than the combined average working sets of all the processes can cause poor performance.

min server memory e max server memory sono opzioni avanzate.The min server memory and max server memory options are advanced options. 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.If you are using the sp_configure system stored procedure to change these settings, you can change them only when show advanced options is set to 1. Queste impostazioni diventano effettive immediatamente e non richiedono il riavvio del server.These settings take effect immediately without a server restart.

Esecuzione di più istanze di SQL ServerRunning Multiple Instances of SQL Server

Quando si eseguono più istanze di Motore di databaseDatabase Engine, è possibile gestire la memoria in tre modi:When you are running multiple instances of the Motore di databaseDatabase Engine, there are three approaches you can use to manage memory:

  • Controllare l'utilizzo di memoria usando max server memory .Use max server memory to control memory usage. Stabilire le impostazioni massime per ogni istanza, accertandosi che il totale non sia superiore alla memoria fisica disponibile sul computer.Establish maximum settings for each instance, being careful that the total allowance is not more than the total physical memory on your machine. È possibile rendere la memoria di ogni istanza proporzionale al relativo carico di lavoro previsto o alle dimensioni del database.You might want to give each instance memory proportional to its expected workload or database size. Questo approccio presenta il vantaggio di rendere la memoria libera immediatamente disponibile ad ogni nuovo processo o istanza.This approach has the advantage that when new processes or instances start up, free memory will be available to them immediately. Lo svantaggio è che se non vengono eseguite tutte le istanze, parte della memoria resterà inusata.The drawback is that if you are not running all of the instances, none of the running instances will be able to utilize the remaining free memory.

  • Controllare l'utilizzo di memoria usando min server memory .Use min server memory to control memory usage. 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.Establish minimum settings for each instance, so that the sum of these minimums is 1-2 GB less than the total physical memory on your machine. Anche questi minimi possono essere resi proporzionali al carico previsto dell'istanza.Again, you may establish these minimums proportionately to the expected load of that instance. Con questo approccio, quando non vengono eseguite tutte le istanze contemporaneamente, quelle in esecuzione potranno usare la memoria libera rimanente.This approach has the advantage that if not all instances are running at the same time, the ones that are running can use the remaining free memory. Questo approccio consente inoltre di riservare a SQL ServerSQL Server una quantità ragionevole di memoria quando sullo stesso computer vengono eseguiti anche altri processi particolarmente onerosi.This approach is also useful when there is another memory-intensive process on the computer, since it would insure that SQL ServerSQL Server would at least get a reasonable amount of memory. Lo svantaggio è che quando vengono avviati una nuova istanza o altri processi, le istanze eseguite rilasceranno la memoria con un certo ritardo, in particolare quando a tale scopo dovranno riscrivere le pagine modificate nei rispettivi database.The drawback is that when a new instance (or any other process) starts, it may take some time for the running instances to release memory, especially if they must write modified pages back to their databases to do so.

  • Non intervenire in alcun modo (non consigliato).Do nothing (not recommended). Le prime istanze sottoposte a carico di lavoro tenderanno ad allocare tutta la memoria.The first instances presented with a workload will tend to allocate all of memory. Alle istanze inattive o a quelle avviate in un secondo momento verrà destinata solo una minima quantità di memoria.Idle instances, or instances started later, may end up running with only a minimal amount of memory available. SQL ServerSQL Server non viene ripartita in alcun modo la memoria tra le diverse istanze. makes no attempt to balance memory usage across instances. Tutte le istanze, tuttavia, risponderanno ai segnali di Windows Memory Notification correggendo di conseguenza le dimensioni dei rispettivi footprint di memoria.All instances will, however, respond to Windows Memory Notification signals to adjust the size of their memory footprint. In Windows la memoria non viene bilanciata tra le applicazioni tramite l'API di Windows Memory Notification.Windows does not balance memory across applications with the Memory Notification API. Offre invece un semplice feedback globale sulla disponibilità di memoria nel sistema.It merely provides global feedback as to the availability of memory on the system.

    Poiché è possibile modificare queste impostazioni senza riavviare le istanze, sarà possibile provare agevolmente valori diversi fino a individuare quelli più adatti alle esigenze.You can change these settings without restarting the instances, so you can easily experiment to find the best settings for your usage pattern.

Assegnazione della quantità massima di memoria a SQL ServerProviding the Maximum Amount of Memory to SQL Server

La memoria può essere configurata fino al limite dello spazio degli indirizzi virtuali di processo in tutte le edizioni di SQL ServerSQL Server (8 TB).Memory can be configured up to the process virtual address space limit in all SQL ServerSQL Server editions (8 TB).

/3gb* è un parametro di avvio del sistema operativo./3gb* is an operating-system boot parameter. Per altre informazioni, consultare MSDN Library.For more information, visit the MSDN Library.

EsempiExamples

Esempio AExample A

Nell'esempio seguente viene impostata l'opzione max server memory su 4 GB.The following example sets the max server memory option to 4 GB:

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

Esempio B: Determinazione dell'allocazione di memoria correnteExample B. Determining Current Memory Allocation

La query seguente restituisce le informazioni sulla memoria attualmente allocata.The following query returns information about currently allocated memory.

SELECT  
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,  
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,  
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,  
process_physical_memory_low,  
process_virtual_memory_low  
FROM sys.dm_os_process_memory;  

Vedere ancheSee Also

Monitoraggio e ottimizzazione delle prestazioni Monitor and Tune for Performance
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
Opzioni di configurazione del server (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL)sp_configure (Transact-SQL)