Perché SQL Server consuma più memoria del server?


36

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 è quella di impostare il limite massimo per SQL Server. Questo è stato fatto e sono stati fatti molti miglioramenti. Voglio sapere perché se il valore massimo della memoria non è impostato perché SQL Server continua a consumare le risorse


3
In che modo hai determinato che l'utilizzo della RAM da parte di SQL Server è l'origine di eventuali colli di bottiglia? Lentezza in cosa? Semmai, SQL Server dovrebbe essere più efficiente se utilizza la quantità massima di RAM possibile (o anche più di quanto ci si aspetti o si desideri). E se hai altre applicazioni sul server che soffrono perché SQL Server utilizza la memoria (come è progettato per fare), spostale su un altro server .
Aaron Bertrand

Ho usato il metodo qui lucidica.com/help/got-sql-eating-up-ram Fammi sapere se questo ha aiutato :) Cordiali saluti, Nikita.
Nikita Kosousov,

Risposte:


48

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 il max server memorylimite di configurazione, si limita 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 all'interno di SQL Server, quindi per la tua versione particolare (2008 R2 e precedenti), max server memorycontrolla solo il pool di buffer. Ma questo sarà sempre il più grande consumatore di memoria.

Riferimenti TechNet sugli effetti della memoria minima e massima del server

Le opzioni di configurazione della memoria min server e max server indicano limiti massimi e minimi per la quantità di memoria utilizzata dal pool di buffer del Motore di database di Microsoft SQL Server.

Per quanto riguarda la quantità di memoria che 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 più memoria a SQL Server se noti molta disponibilità (può essere monitorata tramite perfmon) e memoria inutilizzata (ovviamente, lasciando sempre un piccolo buffer per quelle situazioni d'angolo).


11

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 nella 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 ne aveva bisogno. Se avessimo bisogno di andare sui dischi ogni volta che SQL Server necessitava degli stessi dati, i requisiti di I / O del disco 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 in uso (non tutti i componenti seguono tale impostazione), ecc.


6

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

Server Memory Server Opzioni di configurazione

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 aiuti!



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.