Paramètre de mémoire maximale dans SQL Server


11

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 Serveur SQL

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.


2
Un article récent que j'ai écrit sur la surcharge de mémoire sur les serveurs SQL peut vous être utile.
Jon Seigel

Réponses:


13

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

Consultez 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 Aarons commente 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 vraiment 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é.


2
Il y a un bon rapport dans SSMS sur la mémoire du serveur SQL: blogs.msdn.com/b/buckwoody/archive/2007/10/17/… Vous pouvez suivre quelle partie consomme le plus de mémoire
DiGi

1

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.


0

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 s'exécutent sur une «charge élevée», la consommation de mémoire devient trop élevée là où le système d'exploitation a tendance à effectuer des échanges. Assurez-vous que vos fichiers de pagination ne se trouvent pas sur le lecteur du système d'exploitation, sinon vous risquez de vous retrouver avec un système totalement bloqué (vous y avez déjà été et n'a pas aimé)


-1

Je viens de changer "max server memory" sur le serveur live sans problème. On dirait qu'il est défini comme 2147483647 par défaut sur toutes les bases de données (mais je ne sais pas comment lire sa valeur à partir de SQL avant le changement) ...


-2

Respectez les valeurs par défaut dans 99% des cas. Cela permettra une gestion dynamique de la mémoire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.