web-dev-qa-db-fra.com

Paramètre de mémoire maximale dans SQL Server

J'exécute SQL Server 2008 et une application Web, sur un seul serveur dédié, avec seulement 2 Go de mémoire disponible.

Comme indiqué ailleurs, SQL Server occupe régulièrement jusqu'à 98% de la mémoire physique, ce qui semble ralentir l'application Web s'exécutant sur le serveur.

Dans Propriétés du serveur dans SSMS, sous Mémoire, la mémoire maximale du serveur (en Mo) est définie sur: 2147483647 Sql Server

Ma question est, quel serait le nombre recommandé de mettre dans la zone de mémoire maximale du serveur, compte tenu de la quantité de mémoire dont je dispose, et que le même serveur exécute également l'application Web?

En outre, est-il sûr d'apporter une modification à ce nombre pendant l'exécution de SQL Server?

Merci pour votre conseil.

11
fixit

Je vais d'abord répondre à la dernière question: Oui, vous pouvez le changer pendant que le serveur fonctionne sans problème. Si vous souhaitez modifier la valeur via SQL, vous pouvez le faire avec la requête suivante

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

Voir cette page pour plus de détails sur la configuration de la mémoire sur le serveur SQL.


Votre première question, malheureusement la réponse est: Je ne peux pas vous le dire, je ne suis pas là.

Vous devez prendre en compte 1 000 000 d'éléments lors de l'allocation de mémoire. Quelle est la taille des jeux de résultats des requêtes, à quelle fréquence sont-ils exécutés, une requête qui prenait auparavant 20 ms serait-elle correcte pour prendre maintenant 200 ms?

Les valeurs par défaut de Sql supposent que c'est la seule chose qui s'exécute sur le serveur, donc il définit simplement la mémoire à MAX_VALUE et il cesse de croître lorsque toute la mémoire disponible est utilisée (et sur du matériel dédié qui est assez proche de ce que vous voulez arriver (voir Commentaire d'Aarons pour une éventuelle mise en garde)). Normalement, tout serveur Web ou autre logiciel interagissant avec la base de données se trouverait sur un matériel différent communiquant avec elle via le réseau.

Vous avez juste besoin de le définir sur une valeur qui vous semble raisonnable, et si votre serveur Web est encore obstrué, abaissez-le. Si SQL ne vous donne pas suffisamment de performances après avoir donné au serveur Web la mémoire dont il a besoin, vous devrez soit acheter plus de RAM, soit déplacer le SQL vers du matériel dédié.

13

Vous ne devez jamais autoriser le serveur SQL à prendre toute la mémoire de la boîte. Cela dépend de ce qui s'exécute sur cette boîte et de la quantité de mémoire de la boîte, mais je m'assure toujours de laisser 10% de la mémoire à l'O\S.

1
Trish Walker

Dans mon entreprise actuelle où je suis engagé, j'utilise toujours les paramètres minimum et maximum pour SQL Server. Le maximum, si le serveur n'est utilisé que pour SQL Server, je mets toujours la mémoire MAX - 1 Go pour le système d'exploitation. Le minimum dans notre cas à 2 Go.

Mais cela est prouvé pour nos installations. Toutes les installations et utilisations ne sont pas identiques, et je pense toujours que la mémoire ne fait pas toujours ce que vous voulez;)

Cela peut être une chose connue dans votre cas, mais regardez également l'échange de mémoire. Lorsque vous n'avez que 2 Go sur le serveur et que le système d'exploitation et SQL Server fonctionnent sur une "charge élevée", la consommation de mémoire devient trop élevée là où le système d'exploitation a tendance à effectuer un échange. Assurez-vous que vos fichiers de pagination ne se trouvent pas sur le lecteur du système d'exploitation, sinon vous pourriez vous retrouver avec un système totalement bloqué (déjà là et ne pas avoir aimé)

0
Mark Kremers