SQL Server – Contenir l’occupation RAM et disque dur

Il y a un problème assez récurrent chez Microsoft, il semblerait que les performances des machines ne soient jamais un soucis.
Suivant cette logique, SQL Server se montre gourmand (voir TRES gourmand), étant configuré par défaut pour consommer toutes les ressources disponibles.

C'est très bien si on a accès à Azure et/ou des capacités presque illimitées, mais ce n'est que rarement le cas.

Bien, commençons par régler l'occupation mémoire.

Dans SQL Server Management Studio, connectez-vous en Database Engine sur votre instance.
Faites ensuite un clic droit sur votre instance => propriétés => mémoires.
Dans la case Mémoire maximale du serveur, définissez une valeur "raisonnable" en fonction de la machine.

mem_sqlserver.jpg

Par défaut, SQL Server est configuré pour ne jamais vider sa mémoire et en consommer de plus en plus.
En fixant sa taille, SQL Server fera le ménage dans sa mémoire pour rester à cette taille (avec une marge de manœuvre tout de même, ne vous inquiétez pas si vous le voyez consommer légèrement plus)
Dans notre exemple, SQL Server se maintiendra aux alentours de 1Go de consommation mémoire

Passons maintenant à l'espace disque.
Ces opérations seront à répéter pour chaque base un coups de temps en temps pour tenter de conserver un peu d'espace libre.

SQL Server surveille et inscrit constamment tout ce que fait une base. Il existe différentes commandes pour récupérer l'espace, mais vu qu'on ne les utilise pas tous les jours non plus, il est assez difficile de s'en souvenir.
Heureusement pour nous, SQL Server Management Studio nous propose de réaliser ces opérations en 3/4 clics, ce qui est fort pratique.

Il faut d'abord passer la base en mode simple pour la restauration (recovery).
Pour ca, clic droit sur la base de données => propriétés => options => mode de restauration => choisir le mode simple
recovery.jpg

Validez en cliquant sur ok, puis refaites un clic droit sur la base => Tâches => Réduire (Shrink pour les installations en anglais).
Vous avez 2 options, base de données et fichiers.
Pour obtenir de meilleurs résultats, je vous conseille de faire les 2, en commençant par la base de données.

Si le mode complet de récupération vous intéresse, vous pouvez ensuite rebasculer le mode dans les options.

Voilà, avec ces opérations vous devriez pouvoir contenir un peu SQL Server pour limiter son impact sur le système.

Bien-sûr il n'y a pas de magie, si vous voulez héberger un grand nombre de bases, il arrivera un moment où vous devrez augmenter les capacités de votre serveur (ou ajouter un autre serveur, éventuellement en cluster, mais c'est une autre histoire).

Un commentaire

  1. Bonjour bonjour, M Alexandre. Bon, ça fait un peu du déterrage de topic, vu que cet article a été rédigé en 2013 et que je pose un question sur SqlSrv 2014.
    Quand vous dites, « un grand nombre de bases », vous pensez à quelle plage de valeurs ?
    J’ai un client dont l’application crée des bases à la volée, dans un souci de confidentialité, pour que chaque client du client ne voit pas les bases des autres.
    Sa VM est configuré avec 16GB (9 pour SqlSrv, selon méthode de l’article). Malgré tout, il constate des ralentissements et la RAM est régulièrement à 100% et par ricochet, aussi le CPU. En allant sur SSMS, nous nous sommes aperçus que plus de 1300 bases sont présentes, plus de 80% avec une taille inférieure à 512 Mo. Nous avons passé la vRAM à 32Gb et placé la max_mem de SqlSrv à 24GB.
    Quelles sont vos préconisations ? Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *