Nous avons un ensemble d'instances SQL Server (2008 R2) qui s'exécutent sur le même serveur virtuel. Chaque instance représente une étape de notre cycle de développement (Dev / Test / Stage / etc.). Les instances doivent toutes être en ligne à un moment donné, mais la charge a tendance à être isolée sur une seule instance à la fois, selon où nous en sommes dans le cycle de vie de la version.
SQL Server semble saisir et conserver la quantité de mémoire que nous avons définie comme max. Ce que j'aimerais savoir s'il existe un moyen de configurer les instances pour qu'elles soient «intelligentes» concernant la consommation de mémoire afin qu'elles ne s'empêchent pas mutuellement d'obtenir de la mémoire en cas de besoin.
sql-server
sql-server-2008-r2
Phil Sandler
la source
la source
Réponses:
SQL Server utilisera autant de mémoire que possible (à peu près), et il est toujours conseillé de définir une limite pour chaque instance. Le paramètre par défaut est 2147483647MB.
En fonction de votre utilisation et de vos propres circonstances, vos paramètres peuvent varier, mais normalement un bon point de départ est de définir la mémoire maximale du serveur entre 75 et 90%, en fonction de la quantité de RAM dont vous disposez. Glenn Berry partage une bonne indication il y a quelques années ICI .
Si vous avez plusieurs instances actives sur un serveur, vous devrez peut-être partager les ressources entre elles, par exemple si vous avez 32 Go de RAM avec 3 instances, vous devez affecter environ 9500 Mo à chaque instance. Lorsque vous utilisez une seule instance à la fois, les autres ne libéreront pas la RAM qu'ils utilisent. Vous pouvez libérer leur RAM en arrêtant le service.
Lorsque d'autres applications / services sont en cours d'exécution, la quantité de mémoire peut devoir être ajustée pour les accueillir.
la source