D’origine, un serveur SQL Server s’installe avec des paramètres par défaut qui ne sont pas vraiment optimisés. Etonnant ? Pas tant que ça. Microsoft s’assure que son logiciel SGBD puisse être installé sur un maximum de configurations matérielles et logicielles. Et pour être compatible avec le plus grand nombre, les optimisations ne sont pas appliquées avec une installation standard par défaut. Il faudra se documenter, avoir de l’expérience, suivre une formation ou demander un audit pour trouver les bons paramètres qui seront adaptés à l’usage du serveur SQL.
Les recommandations suivantes sont assez génériques mais sont applicables à la plupart des situations où une base de données SQL Server est utilisée par un logiciel, en production.
Configuration par défaut de Microsoft SQL Server
1. Ouvrir le logiciel Microsoft SQL Server Management Studio (SSMS).
2. Se connecter à un serveur de bases de données, local ou distant.
3. Faire un clic droit sur le nom du serveur puis Propriétés.
4. Cliquer sur la page « Mémoire » pour afficher la configuration actuelle de SQL Server. Par défaut, on retrouve :
- Mémoire minimale du serveur : 0 Mo
- Mémoire maximale du serveur : 2147483647 Mo (soit 2To)
Recommandations pour gérer la RAM avec SQL Server
A moins d’avoir plus de 2To de RAM sur ce serveur, il n’est pas recommandé de laisser SQL Server prendre toute la RAM possible, ceci au détriment des performances générales du système d’exploitation. Le SGBD va utiliser toute la RAM disponible pour se gaver en mémoire rapide, sans tenir compte des autres usages du serveur. Si la machine est aussi utilisée pour héberger une application métier (comptabilité, ERP, etc), c’est assurément des performances amoindries pour les autres logiciels. Si le serveur SQL est installé sur un poste de travail ou un ordinateur portable, par exemple chez un développeur, un commercial pour des démo ou sur le PC d’un consultant, il est également indispensable de limiter la mémoire maximale consommée par MSSQLSERVER. Deux règles pour définir cette valeur.
Selon la taille des bases de données
Admettons que le serveur SQL n’héberge qu’une seule BDD qui représente un espace disque de 3Go (taille du fichier MDF). Il n’y a pas vraiment d’intérêt que le service SQL Server occupe 7Go de RAM et mette à genou les autres processus actifs de Windows. La recommandation est de limiter la mémoire maximale à la taille de la base. Dans l’exemple d’une base qui pèse 3Go, on limitera donc la mémoire SQL Server à 3Go, ou 3072Mo. Les modifications sont immédiates, pas besoin de redémarrer l’instance, le service ou Windows.
Selon la quantité de RAM du serveur
Autre possibilité, limiter la mémoire du processus sqlserver.exe selon la quantité de mémoire vive du serveur. Si la machine (virtuelle ou physique) dispose de 8Go de RAM et qu’aucun autre rôle n’est attribué à ce serveur (pas d’hébergement d’application, de site web, d’autre rôle serveur), on laissera entre 1 et 2Go de RAM disponible au système d’exploitation Windows. Ainsi, on limitera la mémoire maximale de SQL Server à 6Go (6144Mo) ou 7Go (7168Mo). MSSQL n’est pas à cheval sur les Go et on pourra couper la poire en deux et indiquer 6500Mo.
Bien sûr, si le serveur en question abrite un SQL Server mais également d’autres rôles, il faudra limiter la mémoire en fonction de ces autres usages pour que chacun ait son espace de mémoire, sans perturber le bon fonctionnement des programmes voisins.