Options de mémoire du serveur

Utilisez les deux options de mémoire du serveur, min server memory et max server memory, pour reconfigurer la taille mémoire (en mégaoctets) contenue dans le pool de mémoires tampons utilisé par une instance de Microsoft SQL Server.

Par défaut, SQL Server peut modifier dynamiquement sa configuration de mémoire sur la base des ressources système disponibles. Le paramètre par défaut de l'option min server memory est 0 et le paramètre par défaut de l'option max server memory est 2147483647. La quantité minimale de mémoire pouvant être spécifiée pour l'option max server memory s'élève à 16 mégaoctets (Mo).

Notes

Si vous donnez à max server memory sa valeur minimale, vous allez réduire gravement les performances de SQL Server et même vous pouvez l'empêcher de démarrer. Si vous ne pouvez plus démarrer SQL Server après avoir changé cette option, démarrez-le au moyen de l'option de démarrage –f et restaurez max server memory à sa valeur antérieure. Pour plus d'informations, consultez Utilisation des options de démarrage du service SQL Server.

Quand SQL Server utilise dynamiquement la mémoire, il interroge régulièrement le système afin de déterminer la mémoire physique disponible. SQL Server utilise l'API de notification de mémoire QueryMemoryResourceNotification pour déterminer le moment où le pool de mémoires tampons peut allouer et libérer de la mémoire.

Il est recommandé de permettre à SQL Server d'utiliser dynamiquement la mémoire ; cependant, vous pouvez configurer manuellement les options de mémoire et limiter la mémoire à laquelle SQL Server peut accéder. Avant de définir la mémoire allouée à SQL Server, déterminez la valeur adaptée pour la mémoire : pour cela, vous devez soustraire de la mémoire physique totale la mémoire requise par le système d'exploitation et par toute autre instance de SQL Server, (ainsi que par d'autres systèmes si l'ordinateur n'est pas totalement dédié à SQL Server). Cette différence représente la mémoire maximale que vous pouvez allouer à SQL Server.

Paramétrage manuel des options de mémoire

Définissez min server memory et max server memory en plusieurs plages de valeurs de la mémoire. Cette méthode est utile lorsque les administrateurs système ou des bases de données souhaitent configurer une instance SQL Server en accord avec la mémoire requise des autres applications exécutées sur le même ordinateur.

Utilisez l'option min server memory pour garantir une quantité minimale de mémoire disponible pour le pool de mémoires tampons d'une instance de SQL Server. SQL Server n'alloue pas immédiatement la mémoire spécifiée dans min server memory au démarrage. Néanmoins, lorsque l’utilisation de la mémoire atteint cette valeur en raison de la charge client, SQL Server ne peut libérer de la mémoire du pool de mémoires tampons alloué, à moins que la valeur min server memory ne soit réduite.

Notes

Il n’est pas garanti que SQL Server alloue la mémoire spécifiée dans min server memory. Si la charge sur le serveur ne nécessite jamais d’allouer la mémoire spécifiée dans min server memory, SQL Server s’exécute alors avec moins de mémoire.

Utilisez l'option max server memory pour empêcher le pool de mémoires tampons SQL Server d'utiliser plus que la mémoire spécifiée, en laissant ainsi la mémoire restante disponible pour le démarrage rapide d'autres applications. SQL Server n'alloue pas immédiatement la mémoire spécifiée dans max server memory au démarrage. L'utilisation de la mémoire augmente en fonction des besoins de SQL Server jusqu'à atteindre la valeur spécifiée dans max server memory. SQL Server ne peut utiliser plus de mémoire à moins d'augmenter la valeur max server memory.

Avant de réduire la valeur max server memory, utilisez l'Analyseur de performances pour examiner l'objet de performance SQLServer:Buffer Manager tant qu'il est sous charge, et notez les valeurs en cours des compteurs Pages occultées et Pages réservées. Ces compteurs considèrent la mémoire comme composée d'un certain nombre de pages de 8 Ko. La valeur de max server memory doit être supérieure à la somme de ces deux valeurs pour éviter les erreurs de mémoire insuffisante. Une valeur approximative pour le paramètre max server memory le plus bas possible est (en Mo) ([Pages occultées] + [Pages réservées])/ 100. Pour diminuer la valeur de max server memory, vous devez redémarrer SQL Server pour libérer de la mémoire. Pour plus d'informations sur la définition des options de mémoire, consultez Procédure : définir une quantité fixe de mémoire (SQL Server Management Studio).

Obtenir le débit de données maximal pour les applications réseau

Pour optimiser l'utilisation de la mémoire système pour SQL Server, vous devez limiter la quantité de mémoire utilisée par le système pour la mise en cache des fichiers. Pour limiter le cache du système de fichiers, veillez à désactiver Maximiser le débit des données pour le partage de fichiers. Vous pouvez spécifier le plus petit cache du système de fichiers en sélectionnant Minimiser la mémoire utilisée ou Équilibrer.

Pour connaître la configuration actuelle de votre système d'exploitation

  1. Cliquez sur Démarrer, puis sur Panneau de configuration, double-cliquez sur Connexions réseau, puis double-cliquez sur Connexion au réseau local.

  2. Sous l'onglet Général, cliquez sur Propriétés. Sélectionnez Partage de fichiers et d'imprimantes pour les réseaux Microsoft et cliquez sur Propriétés.

  3. Si l'option Maximiser le débit des données pour les applications réseau est sélectionnée, choisissez une autre option et cliquez sur OK. Fermez ensuite les boîtes de dialogue restantes.

Mémoire AWE sous Windows Server 2003

Dans Windows Server 2003, SQL Server peut utiliser la mémoire AWE (Address Windowing Extensions) pour faciliter davantage l'équilibrage de la charge de ses exigences en mémoire avec celles du système d'exploitation. L'équilibre entre SQL Server et le système d'exploitation est soumis aux contraintes des options min server memory et max server memory. Si le matériel du serveur prend en charge l'ajout de mémoire à chaud, il est possible d'ajouter de la mémoire physique au serveur en fonction des besoins sans que le redémarrage ne soit indispensable. Pour plus d'informations sur l'option de configuration awe enabled, consultez Option awe enabled. Pour plus d'informations, consultez Ajout de mémoire à chaud.

Notes

La mémoire AWE dynamique est prise en charge sur les serveurs dont la mémoire physique est inférieure à la limite de mémoire virtuelle configurée.

Idéalement, allouez le plus de mémoire possible à SQL Server sans provoquer la pagination du système sur le disque. Le seuil varie en fonction de votre système. Exemple : sur un système 32 gigaoctets (Go) dédié exclusivement à SQL Server, 30 à 31 Go peuvent représenter un seuil maximal convenable pour SQL Server ; sur un système 64 gigaoctets (Go), 60 à 62 Go peuvent représenter un seuil convenable.

Notes

Si vous augmentez la mémoire SQL Server, vous devez vérifier que vous disposez d'un espace disque suffisant pour augmenter la taille du fichier de prise en charge de la mémoire virtuelle (Pagefile.sys) afin d'y loger la mémoire supplémentaire. Pour plus d'informations sur le fichier de prise en charge de la mémoire virtuelle, consultez la documentation Windows.

Le cas échéant, les statistiques du Moniteur système Windows peuvent vous aider à définir la valeur de mémoire à utiliser. Ne modifiez cette valeur que lorsque vous ajoutez ou supprimez de la mémoire ou lorsque vous changez votre mode d'utilisation du système.

Gestionnaire de mémoire virtuelle

Les systèmes d'exploitation 32 bits permettent d'accéder à un espace d'adressage virtuel de 4 gigaoctets (Go). La mémoire virtuelle de 2 Go est privée pour chaque processus et disponible pour l'utilisation des applications. 2 Go sont réservés pour le système d'exploitation. Toutes les éditions des systèmes d'exploitation comportent un commutateur qui permet aux applications d'accéder à 3 Go de mémoire virtuelle, ce qui limite la mémoire disponible pour le système d'exploitation à 1 Go. Pour plus d'informations sur l'utilisation de la configuration de la mémoire avec le commutateur, consultez la documentation Windows relative au réglage sur 4 gigaoctets (4GT). Lorsque SQL Server 32 bits s'exécute sur un système d'exploitation 64 bits, l'espace d'adressage virtuel disponible est de 4 Go.

Notes

PAE est activé automatiquement uniquement si le serveur utilise des périphériques d'ajout de mémoire à chaud. Le cas échéant, il n'est pas nécessaire d'utiliser le commutateur /pae sur un système configuré pour utiliser des périphériques d'ajout de mémoire à chaud. Dans tous les autres cas, vous devez utiliser le commutateur /pae dans le fichier Boot.ini pour bénéficier d'une mémoire supérieure à 4 Go.

L'espace d'adressage de 4 Go est appliqué à la mémoire physique disponible par le Gestionnaire de mémoire virtuelle Windows. La mémoire physique accessible par AWE dépend donc du système d'exploitation utilisé. Pour plus d'informations sur la quantité de mémoire physique prise en charge par les différents systèmes d'exploitation, consultez la documentation Windows relative aux limites de la mémoire des versions de Windows.

Les systèmes d'adressage virtuels autorisent le surengagement de la mémoire physique, de sorte que le rapport entre la mémoire virtuelle et la mémoire physique puisse être supérieur à 1:1. Il est alors possible d'exécuter des programmes plus volumineux sur des ordinateurs offrant diverses configurations de la mémoire physique. Toutefois, dans la plupart des cas, l'utilisation d'une quantité de mémoire virtuelle nettement plus importante que les plages de travail moyennes combinées de tous les processus peut entraîner une détérioration des performances.

min server memory et max server memory sont des options avancées. Si vous utilisez la procédure stockée système sp_configure pour changer ces paramètres, vous ne pouvez les modifier que si l'option show advanced options a la valeur 1. Ces paramètres entrent immédiatement en vigueur, sans redémarrage du serveur.

Exécution de plusieurs instances SQL Server

Lorsque vous exécutez plusieurs instances du Moteur de base de données, vous avez le choix entre trois approches pour gérer la mémoire :

  • Choisir max server memory pour contrôler l'utilisation de la mémoire. Définir les valeurs maximales pour chaque instance, en veillant à ce que le total alloué ne soit pas supérieur à la mémoire physique totale de votre ordinateur. Il se peut que vous souhaitiez attribuer à chaque instance une mémoire proportionnelle à la charge ou à la taille de base de données prévue. Cette solution présente l'avantage qu'au démarrage des nouveaux processus ou des nouvelles instances, ils pourront accéder immédiatement à la mémoire libre. En revanche, cette solution présente l'inconvénient que, si toutes les instances ne sont pas en cours d'exécution, aucune d'entre elles ne pourra utiliser la mémoire libre restante.

  • Choisir min server memory pour contrôler l'utilisation de la mémoire. Définissez les valeurs minimales pour chaque instance, de telle sorte que leur somme soit inférieure de 1 à 2 Go à la mémoire physique totale de votre machine. Une fois encore, vous pouvez établir ces valeurs minimales de façon proportionnelle à la charge prévue de cette instance. Cette solution présente l'avantage que si toutes les instances ne sont pas en cours d'exécution au même instant, celles qui le sont peuvent utiliser la mémoire libre restante. Elle est également utile quand un autre processus gourmand en mémoire est présent sur l'ordinateur, car elle garantit que SQL Server bénéficie au moins d'une quantité de mémoire acceptable. Le désagrément est que, lorsqu'une nouvelle instance (ou un autre processus) démarre, il se peut que les instances en cours d'exécution mettent un certain temps à libérer de la mémoire, notamment si elles doivent à cette fin réécrire les pages modifiées sur leurs bases de données. Il se peut que vous ayez aussi besoin d'augmenter la taille du fichier de pagination de manière significative.

  • Ne rien faire (déconseillé). Les premières instances présentées avec une charge de travail tendent à allouer la totalité de la mémoire. Les instances inactives ou les instances ayant démarré ultérieurement peuvent finir par ne disposer que d'une quantité de mémoire minime. SQL Server n'effectue aucune tentative pour équilibrer l'utilisation de la mémoire entre les instances. Cependant, toutes les instances répondent aux signaux de Windows Notification Memory pour ajuster la taille de leurs pools de mémoires tampons. Windows ne répartit pas équitablement la mémoire entre les applications avec l'API Memory Notification. Il fournit simplement un commentaire global quant à la disponibilité de la mémoire sur le système.

Comme vous pouvez modifier ces paramètres sans redémarrer les instances, vous pouvez sans peine procéder à des essais pour trouver les valeurs qui conviennent le mieux à votre modèle d'utilisation.

Exemples

L'exemple suivant affecte la valeur 4 Go à l'option max server memory.

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