Memoria massima impostata in SQL Server


11

Sto eseguendo SQL Server 2008 e un'applicazione Web, su un singolo server dedicato, con solo 2 GB di memoria disponibili.

Come notato altrove, SQL Server occupa regolarmente fino al 98% della memoria fisica, il che sembra rallentare l'applicazione Web in esecuzione sul server.

In Proprietà server in SSMS, in Memoria, Memoria massima server (in Mb) è impostata su: 2147483647 Server SQL

La mia domanda è: quale sarebbe il numero consigliato da inserire nella casella di memoria massima del server, data la quantità di memoria che ho a disposizione e che lo stesso server esegue anche l'applicazione Web?

Inoltre, è sicuro apportare una modifica a questo numero, mentre SQL Server è in esecuzione?

Grazie per il vostro consiglio.


2
Un recente articolo che ho scritto sull'over-commit della memoria sui server SQL può essere utile per la lettura.
Jon Seigel,

Risposte:


13

Risponderò prima all'ultima domanda: Sì, puoi cambiarlo mentre il server è in esecuzione senza problemi. Se si desidera modificare il valore tramite SQL, è possibile farlo con la seguente query

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

Vedere questa pagina per ulteriori dettagli sull'impostazione della memoria sul server SQL.


La tua prima domanda, purtroppo, la risposta è: non posso dirtelo, non ci sono.

Ci sono 1.000.000 di cose che devi considerare durante l'allocazione della memoria. Quanto sono grandi i set di risultati delle query, con quale frequenza vengono eseguiti, una query che impiegava 20 ms sarebbe ok per ora richiedere 200 ms?

I valori predefiniti di SQL assumono che sia l'unica cosa in esecuzione sul server, quindi imposta semplicemente la memoria su MAX_VALUE e smette di crescere quando tutta la memoria disponibile è in uso (e su hardware dedicato che è abbastanza vicino a ciò che vuoi che accada (vedi Aarons commenta per un possibile avvertimento)). Normalmente qualsiasi web server o altro software che interagisce con il database si troverebbe su hardware diverso che gli comunica sulla rete.

Devi solo impostarlo su un valore che ritieni sano e, se il tuo server web è ancora intasato di memoria, abbassalo. Se SQL non ti offre prestazioni sufficienti dopo aver dato al server web la memoria di cui hai bisogno, dovrai acquistare più RAM o spostare l'SQL su hardware dedicato.


2
C'è un bel rapporto in SSMS sulla memoria del server SQL: blogs.msdn.com/b/buckwoody/archive/2007/10/17/… Puoi tenere traccia di quale parte consuma più memoria
DiGi

1

Non dovresti mai consentire a SQL Server di occupare tutta la memoria sulla scatola. Dipende da cosa è in esecuzione su quella scatola e da quanta memoria ha la scatola, ma mi assicuro sempre di lasciare il 10% della memoria per la O \S.


0

Nella mia attuale azienda in cui sono assunto, utilizzo sempre le impostazioni minime e massime per SQL Server. Il massimo, se il server viene utilizzato solo per SQL Server, ho sempre impostato la memoria MAX - 1 GB per il sistema operativo. Il minimo nel nostro caso a 2 GB.

Ma questo è dimostrato per le nostre installazioni. Non tutte le installazioni e gli usi sono uguali e sento ancora che la memoria non fa sempre quello che vuoi;)

Potrebbe essere una cosa nota nel tuo caso, ma guarda anche allo scambio di memoria. Quando sul server sono presenti solo 2 GB e il sistema operativo e SQL Server sono in esecuzione su un "carico elevato", il consumo di memoria diventerà troppo elevato laddove il sistema operativo tenderà a scambiarsi. Assicurati che i tuoi file di paging non siano sull'unità del sistema operativo, altrimenti potresti finire con un sistema completamente inceppato (già presente e non ti è piaciuto)


-1

Ho appena cambiato "memoria massima del server" sul server live senza problemi. Sembra che sia impostato come 2147483647 per impostazione predefinita su tutti i database (ma non so come leggere effettivamente il valore da SQL prima della modifica) ...


-2

Attenersi alle impostazioni predefinite nel 99% dei casi. Ciò consentirà la gestione dinamica della memoria.

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.