Al momento sei offline in attesa che la connessione Internet venga ristabilita

Configurazione di memoria e considerazioni in SQL Server 2012 e versioni successive di ridimensionamento

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 2663912
Sommario
Microsoft SQL Server esegue memoria automatica e dinamica gestione basata sui requisiti di memoria corrente del carico di lavoro del sistema e componenti interni di SQL Server. SQL Server offre anche opzioni di configurazione relative alla memoria per facilitare l'ottimizzazione per i modelli di comportamento specifico dell'applicazione e requisiti avanzati specifici. Di seguito sono elencate le diverse opzioni di configurazione:
  • opzioni di sp_configure (memoria massima del server (MB), min server memory (MB)e awe attivata)
  • parametro di avvio -g (memory_to_reserve)
  • pagine bloccate

Microsoft SQL Server 2012 introduce modifiche che influiscono sul modo gli amministratori di configurare le opzioni di memoria nella gestione della memoria. Rivedere le modifiche descritte di seguito prima di aggiornare a SQL Server 2012 o prima di configurare una nuova installazione di SQL Server 2012.

Nota In questo articolo si applica anche a Microsoft SQL Server 2014.
Informazioni
SQL Server 2012 introduce anche modifiche il modo in cui vengono contabilizzati tipi specifici di allocazioni di memoria e le opzioni di configurazione di memoria che controllano la quantità massima di memoria che può essere utilizzata da questi tipi di allocazioni. Le modifiche apportate in SQL Server 2012 sono specifiche per richieste di allocazione di memoria da CLR SQL e dalle allocazioni di più pagine. SQL Server 2012 dispone di un allocatore di pagina nuova che gestisce le allocazioni a pagina singola o con più pagine (minore di 8 KB e maggiore di richieste di allocazione di 8 KB). Non è quindi alcuna categoria separata "Multi-pagina allocazioni" in SQL Server 2012.

Modifiche apportate a "max server memory (MB)" e "min server memory (MB)"

Nelle versioni precedenti di SQL Server (SQL Server 2005, SQL Server 2008 e SQL Server 2008 R2), le seguenti opzioni di configurazione determinati limiti di memoria fisica che il pool di buffer utilizzato. Si noti che stiamo parlando della memoria fisica in questo caso, la memoria fisica che viene eseguito il commit dal processo del motore di database di SQL Server:
  • memoria massima del server (MB)
  • memoria server min (MB)
Opzione Thisconfiguration in genere incluse solo le allocazioni di memoria sono state minore o uguale a 8 KB nel processo di SQL Server. Werealso queste allocazioni denominato "single_page_allocations" poiché il gestore della memoria di SQL Server utilizzata una dimensione di pagina di 8 KB. Questa configurazione non include le seguenti richieste di allocazione di memoria:
  • Allocazioni di più pagine da SQL Server: queste sono le allocazioni che richiedono più di 8 KB.
  • Allocazioni di CLR: CLR SQL di includere queste allocazioni heap e le assegnazioni globali che vengono create durante l'inizializzazione di Common Language Runtime.
  • Allocazioni di memoria per gli stack dei thread nel processo di SQL Server.
  • Richieste di allocazione di memoria diretta di Windows: ad esempio sull'utilizzo dell'heap di Windows e dirette virtuale allocazioni da moduli caricati nel processo di SQL Server. Esempi di tali richieste di allocazione di memoria allocazioni da stored procedure estese DLL, gli oggetti creati utilizzando le procedure di automazione (sp_OA chiamate) e le allocazioni dal provider di server collegato.

A partire da SQL Server 2012, le allocazioni di più pagine e Common Language Runtime sono inclusi anche i limiti di memoria che sono controllate da max server memory (MB) e la memoria server min (MB). Questa modifica fornisce una capacità di ridimensionamento più accurata per tutti i requisiti di memoria che passano attraverso il gestore della memoria di SQL Server. Dopo l'aggiornamento a SQL Server 2012, esaminare attentamente i valori correnti di memoria massima del server (MB) e min server memory (MB) . Poiché SQL Server 2012 include i conti per ulteriori allocazioni di memoria rispetto alle versioni precedenti, è opportuno esaminare tali valori. Queste modifiche verranno applicate alle versioni a 32 e a 64 bit di SQL Server 2012.

La tabella seguente indica se un tipo specifico di allocazione della memoria viene controllato mediante le opzioni di configurazione max server memory (MB) e la memoria server min (MB).
Tipo di allocazione della memoriaSQL Server 2005, SQL Server 2008, SQL Server 2008 R2SQL Server 2012, SQL Server 2014
Allocazioni di pagina singolaSì, consolidati in allocazioni di pagina "di qualsiasi dimensione"
Allocazioni di più pagineNoSì, consolidati in allocazioni di pagina "di qualsiasi dimensione"
Allocazioni di CLRNo
Memoria stack di threadNoNo
Allocazioni direttamente da WindowsNoNo
SQL Server 2012 e versioni successive potrebbero allocare più memoria rispetto al valore specificato nell'impostazione dellamemoria massima del server. Questo comportamento può verificarsi quando il valore diTotal Server Memory (KB)ha già raggiunto l'impostazione dellaDestinazione Server Memory (KB)(come specificato dallamemoria massima del server). Se non vi è memoria contigua insufficiente per soddisfare la domanda di richieste di memoria più pagine (più di 8 KB) a causa di frammentazione della memoria, SQL Server può eseguire un impegno eccessivo invece di rifiutare la richiesta di memoria.

Non appena viene eseguita questa allocazione, Monitor risorse inizia a rilasciare la memoria allocata e tenta di portare il belowthe di valore specifica Destinazione Server Memory (KB) diTotal Server Memory (KB). Pertanto, l'utilizzo della memoria di SQL Server potrebbe brevemente exceedthe memoria massima del serverl'impostazione. In questo caso, la lettura del contatore delle prestazioniTotal Server Memory (KB)di superare lamemoria massima del servere le impostazioni diDestinazione Server Memory (KB) .

Questo comportamento viene in genere osservato durante le operazioni seguenti:
  • Query di grandi dimensioni Columnstore indice
  • Generazioni di indice di ColumnStore (re), che utilizzano grandi quantità di memoria per eseguire operazioni di ordinamento e di Hash
  • Operazioni di backup che richiedono il buffer di memoria di grandi dimensioni
  • Analisi delle operazioni che sono necessario memorizzare grandi parametri di input

Aggiornamento cumulativo 8 per SQL Server 2014 e Aggiornamento cumulativo 1 per SQL Server 2014 SP1introdotto un miglioramento per il rilascio di memoria più veloce, come descritto nella precedente Panoramica. Inoltre,Aggiornamento cumulativo 9 per SQL Server 2014risolvere un problema di allocazione di memoria che comporta l'impegno eccessivo. Per ulteriori informazioni, vedere i seguenti articoli della Microsoft Knowledge Base:
Per ulteriori informazioni su parti di memoria sono controllate dall'impostazione dellamemoria massima del server, vedere il Opzioni di configurazione della memoria server Argomento documentazione in linea.

Modifiche apportate a "memory_to_reserve"


Nelle versioni precedenti di 32 bit di SQL Server (SQL Server 2005, SQL Server 2008 e SQL Server 2008 R2), il gestore della memoria di SQL Server riservare una parte dello spazio degli indirizzi virtuali da utilizzare per le richieste di allocazione seguenti:
  • Allocazioni di più pagine da SQL Server: queste sono le allocazioni che richiedono più di 8 KB.
  • Allocazioni di CLR: CLR SQL di includere queste allocazioni heap e le assegnazioni globali che vengono create durante l'inizializzazione di Common Language Runtime.
  • Allocazioni di memoria per gli stack dei thread nel processo di SQL Server.
  • Richieste di allocazione memoria direttamente a Windows: queste richieste di allocazione includono utilizzo dell'heap di Windows e dirette virtuale allocazioni da moduli caricati nel processo di SQL Server. Esempi di tali richieste di allocazione di memoria allocazioni da stored procedure estese DLL, gli oggetti creati utilizzando le procedure di automazione (sp_OA chiamate) e le allocazioni dal provider di server collegato.

Lo spazio indirizzo virtuale riservato per queste allocazioni è determinato dall'opzione di configurazione memory_to_reserve . Il valore predefinito che utilizza SQL Server è di 256 MB. Per ignorare il valore predefinito, utilizzare il parametro di avvio di SQL Server -g . Questa parte dello spazio di indirizzi virtuali è noto anche come "Memoria in uscita" o "Regione - Buffer Pool".

Poiché SQL Server 2012 è il nuovo allocatore di pagina "di qualsiasi dimensione" che gestisce le allocazioni maggiore di 8 KB, il valore memory_to_reserve non include le allocazioni di più pagine. Ad eccezione di questa modifica, tutti gli altri rimane la stessa operazione con questa opzione di configurazione.

La tabella seguente indica se un tipo specifico di allocazione di memoria rientra nell'area di memory_to_reservedi spazio di indirizzi virtuali per il processo di SQL Server.
Tipo di allocazione della memoriaSQL Server 2005, SQL Server 2008, SQL Server 2008 R2SQL Server 2012, SQL Server 2014
Allocazioni di pagina singolaNoNo, consolidati in allocazioni di pagina "di qualsiasi dimensione"
Allocazioni di più pagineNo, consolidati in allocazioni di pagina "di qualsiasi dimensione"
Allocazioni di CLR
Memoria stack di thread
Allocazioni direttamente da Windows

Modifiche apportate alle altre opzioni di configurazione relative alla memoria

Se è configurato SQL Server 2005, SQL Server 2008 o SQL Server 2008 R2 per utilizzare l'opzione "awe enabled", leggere attentamente il seguente articolo per comprendere le modifiche importanti per questa opzione di configurazione:

Se è configurato SQL Server 2005, SQL Server 2008 o SQL Server 2008 R2 per utilizzare la funzione "pagine bloccate", leggere attentamente il seguente articolo per comprendere le modifiche importanti per questa opzione di configurazione:

Utilizzo di memoria massima per diverse versioni di SQL Server

Diverse edizioni di SQL Server hanno limiti massimi sulle risorse diverse che possono utilizzare. Vi sono limiti imposti sull'utilizzo di memoria massima per le diverse edizioni di SQL Server. Ad esempio, un'istanza di SQL Server 2008 R2 Standard Edition è possibile utilizzare solo un massimo di memoria di 64 GB. Per ulteriori informazioni, visitare la seguente pagina Web MSDN:Questi limiti di memoria a partire da SQL Server 2012, vengono applicati solo per la cache del database (pool di buffer). Il resto delle cache di gestione della memoria di SQL Server può utilizzare molta più memoria da quella specificata da questi limiti edition. Ad esempio, un'edizione di SQL Server 2012 Express è possibile utilizzare solo una dimensione massima di 1,4 GB per la cache del database. Altre cache (ad esempio, la cache delle procedure, la cache dei metadati e così via) possono consumare memoria fino alla dimensione specificata nella configurazione "max server memory".

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 2663912 - Ultima revisione: 11/06/2015 21:18:00 - Revisione: 6.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2014 Enterprise

  • kbtshoot kbmt KB2663912 KbMtit
Feedback