Come devo configurare la memoria per più istanze di SQL Server?


9

Abbiamo un set di istanze di SQL Server (2008 R2) eseguite sullo stesso server virtuale. Ogni istanza rappresenta una fase del nostro ciclo di sviluppo (Dev / Test / Stage / ecc.). Tutte le istanze devono essere online in qualsiasi momento, ma il carico tende a essere isolato in un'istanza per volta, a seconda di dove ci troviamo nel ciclo di vita del rilascio.

SQL Server sembra afferrare e trattenere qualsiasi quantità di memoria impostata come il massimo. Cosa vorrei sapere se esiste un modo per configurare le istanze in modo che siano "intelligenti" sul consumo di memoria in modo che non si impediscano a vicenda di ottenere memoria quando necessario.


Se tutte le istanze devono essere online in qualsiasi momento e si imposta la memoria massima, SQL Server non la rilascerà. Quando dici .. il caricamento è isolato su un'istanza per volta, significa che non c'è attività su altre istanze? Inoltre, quante istanze stai eseguendo su un virtuale e qual è la configurazione CPU / memoria per il virtuale?
Kin Shah,

3
Ho scritto di questo per i cluster a più istanze, in cui è necessario regolare la memoria in caso di failover che porta a più istanze sullo stesso nodo . È possibile utilizzare un approccio simile qui, ma invece eseguire procedure memorizzate su richiesta che riconfigurano la memoria in base all'esigenza corrente. Non sarai in grado di impostare ciascuna istanza per farlo automaticamente a meno che tu non li fissi permanentemente su una memoria massima massima (e poi regoli manualmente quando è necessario).
Aaron Bertrand

Risposte:


7

SQL Server utilizzerà tutta la memoria possibile (praticamente) ed è sempre consigliabile impostare un limite per ogni istanza. L'impostazione predefinita è 2147483647 MB.

A seconda dell'utilizzo e delle circostanze uniche, le impostazioni possono variare, ma normalmente un buon punto di partenza è impostare la memoria massima del server tra il 75 e il 90 percento, a seconda della quantità di RAM disponibile. Glenn Berry condivide una buona indicazione qualche anno fa QUI .

Se si hanno più istanze attive su un server, potrebbe essere necessario condividere le risorse tra loro, ad esempio se si dispone di 32 GB di RAM con 3 istanze, è necessario assegnare circa 9500 MB a ciascuna istanza. Quando si utilizza solo un'istanza alla volta, le altre non rilasceranno la RAM che stanno utilizzando. Puoi liberare la loro RAM interrompendo il servizio.

Quando sono in esecuzione altre applicazioni / servizi, potrebbe essere necessario adattare la quantità di memoria per adattarli.

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.