it-swarm.it

Perché SQL Server consuma più memoria del server?

SQL Server sta consumando l'87,5% della RAM del mio server. Ciò ha recentemente causato molti colli di bottiglia nelle prestazioni, come la lentezza. Ho studiato questo problema. Una soluzione comune che ho trovato su Internet è impostare il limite massimo per SQL Server. Ciò è stato fatto e molti miglioramenti sono stati ottenuti. Voglio sapere perché se il valore massimo di memoria non è impostato perché SQL Server continua a consumare le risorse

37
kombo

SQL Server consumerà tutta la memoria consentita . Per impostazione predefinita, quel numero comprenderebbe il 100% della tua memoria numerica sulla tua macchina. Ecco perché stai vedendo quello che stai vedendo. Se si fornisce a SQL Server 24 GB di memoria, SQL Server farà del suo meglio per utilizzare 24 GB di memoria. Quindi hai SQL Server e il sistema operativo in lotta per le risorse e si tradurrà sempre in prestazioni scadenti.

Quando si imposta max server memory limite di configurazione, stai limitando la quantità di SQL Server che può allocare per il pool di buffer (praticamente dove vengono archiviate le pagine di dati e la cache delle procedure). Ci sono altri impiegati di memoria in SQL Server, quindi per la tua versione particolare (2008 R2 e precedenti), max server memory controlla solo il pool di buffer. Ma questo sarà sempre il più grande consumatore di memoria.

Riferimento TechNet sugli effetti della memoria minima e massima del server

Le opzioni di configurazione della memoria minima del server e massima del server stabiliscono limiti superiori e inferiori della quantità di memoria utilizzata dal pool di buffer del Motore di database di Microsoft SQL Server.

Per quanto riguarda la domanda quanta memoria dovrei lasciare per il sistema operativo, questa è una metrica comunemente discussa. Dipende davvero tutto, principalmente da quali altri processi sono in esecuzione sul server. A condizione che sia un server veramente dedicato (e non è quasi mai il caso). Mi piace vedere almeno 4 GB di memoria per il sistema operativo (e ancora di più su scatole hardware di grandi dimensioni). Ma soprattutto, controlla quanta memoria inutilizzata c'è. Sii liberale e dai a SQL Server più memoria se noti molta disponibilità (può essere monitorata tramite perfmon) e memoria inutilizzata (ovviamente, lasciando sempre un piccolo buffer per quelle situazioni d'angolo).

49
Thomas Stringer

SQL Server è progettato per utilizzare tutta la memoria sul server per impostazione predefinita. La ragione di ciò è che SQL Server memorizza nella cache i dati nel database in RAM in modo che possa accedere ai dati più velocemente di quanto potrebbe se fosse necessario leggere i dati dal disco ogni volta che un utente se ne avessimo bisogno. Se avessimo bisogno di andare sui dischi ogni volta che SQL Server necessitava degli stessi dati sopra e sopra il disco IO sarebbero follemente alti.

Normalmente consiglio alle persone di lasciare circa 4 GB di RAM per Windows, ma ciò dipende in realtà dalla quantità di software in esecuzione sul server, dai componenti di SQL Server che stai utilizzando (non tutti i componenti seguono quell'impostazione), ecc.

11
mrdenny

Funziona all'istante senza la necessità di riavviare SQL:

Opzioni di configurazione del server di memoria del server

Utilizzare le due opzioni di memoria del server, memoria minima del server e memoria massima del server , per riconfigurare la quantità di memoria (in megabyte) gestita da Gestione memoria SQL Server per un'istanza di SQL Server. Per impostazione predefinita, SQL Server può modificare i requisiti di memoria in modo dinamico in base alle risorse di sistema disponibili.

Procedura per la configurazione di una quantità fissa di memoria Per impostare una quantità fissa di memoria:

  1. In Esplora oggetti, fare clic con il pulsante destro del mouse su un server e selezionare Proprietà.
  2. Fai clic sul nodo Memoria.
  3. In Opzioni memoria server, immettere la quantità desiderata per Memoria server minima e Memoria server massima.

Utilizzare le impostazioni predefinite per consentire a SQL Server di modificare i requisiti di memoria in modo dinamico in base alle risorse di sistema disponibili. L'impostazione predefinita per la memoria minima del server è 0 e l'impostazione predefinita per la memoria massima del server è 2147483647 megabyte (MB).

Spero che questo possa essere d'aiuto!

6
Nikita Kosousov

Come ha detto Eric, devi gestire la memoria per mantenere spazio libero per altri processi. Per una spiegazione generale e alcune indicazioni su come impostare la memoria massima, controlla il post di Jonathan Kehayias:

http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/

È possibile modificare la raccomandazione tenendo conto dell'utilizzo del server.

3
RLF

SQL Server utilizzerà disponibile RAM a meno che tu non abbia un limite sull'utilizzo. Di norma provo a lasciare non meno di 2 GB gratuiti per il sistema operativo, cioè se hai 64 GB fisici RAM nell'host, limite di SQL Server a 62 GB.

http://msdn.Microsoft.com/en-us/library/ms191144 (v = SQL.105) aspx

1
Eric Higgins