Options de mémoire du serveur

Mis à jour : 14 avril 2006

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 Microsoft SQL Server.

Par défaut, SQL Server peut modifier dynamiquement sa configuration de mémoire sur la base des ressources système disponibles. La valeur min server memory par défaut est 0, et 2 147 483 647 pour max server memory. La mémoire minimale que vous pouvez spécifier pour max server memory est égale à 16 mégaoctets (Mo).

ms178067.note(fr-fr,SQL.90).gifRemarque :
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. Sous Microsoft Windows 2000, SQL Server augmente ou réduit le cache des tampons pour conserver une mémoire physique disponible comprise entre 4 et 10 Mo en fonction de l’activité du serveur. La conservation de cette mémoire libre empêche Windows 2000 de paginer. S'il y a moins de mémoire libre, SQL Server libère de la mémoire pour Windows 2000. S'il y a plus de mémoire libre, SQL Server alloue de la mémoire au pool de mémoires tampons. SQL Server ajoute de la mémoire au pool de mémoires tampons uniquement lorsque sa charge de travail en nécessite plus ; un serveur inactif n'augmente pas la taille de son pool de mémoires tampons.

Sous Windows Server 2003, 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 utilisée par Windows NT 4.0 ou Windows 2000 et par toute autre instance SQL Server, (et utilisée 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

Il existe deux méthodes principales de paramétrage manuel des options de mémoire SQL Server :

  • La première méthode consiste à attribuer la même valeur aux deux options min server memory et max server memory. Cette valeur correspond à la quantité fixe de mémoire à allouer au pool de mémoires tampons SQL Server lorsqu'elle est atteinte.
  • La deuxième méthode consiste à définir deux options 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 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.

ms178067.note(fr-fr,SQL.90).gifRemarque :
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 (en Mo) le plus bas possible est ([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.

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

Si vous sélectionnez l'option réseau Maximiser le débit des données pour les applications réseau, le système d'exploitation donne la priorité aux applications qui effectuent des opérations d'entrée/sortie en plaçant dans la mémoire cache du système de fichiers leurs pages d'entrée/sortie. Cette option limite la mémoire disponible pour le fonctionnement normal de SQL Server.

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

Sous Windows Server 2003, SQL Server 2005 peut utiliser la mémoire AWE (Address Windowing Extensions) pour faciliter encore plus l'équilibrage de la charge de ses besoins en mémoire avec le 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.

ms178067.note(fr-fr,SQL.90).gifRemarque :
Sous Windows Server 2003, la mémoire dynamique AWE est prise en charge sur les serveurs dont la mémoire physique est inférieure à la limite de mémoire virtuelle configurée. Windows 2000 imposait que la mémoire physique disponible soit supérieure à la mémoire virtuelle pour activer la mémoire AWE.

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.

ms178067.note(fr-fr,SQL.90).gifRemarque :
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 2000 ou Windows Server 2003.

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 tels que Windows 2000 et Windows Server 2003 permettent d'accéder à un espace d'adressage virtuel de 4 gigaoctets (Go). La mémoire virtuelle basse de 2 Go est privée pour chaque processus et disponible pour l'utilisation des applications. La mémoire virtuelle haute de 2 Go est réservée au système d'exploitation. Toutes les éditions des systèmes d'exploitation à partir de Microsoft Windows XP Professionnel, y compris Windows Server 2003, comportent un commutateur boot.ini 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. Consultez votre documentation Windows pour plus d'informations sur l'utilisation de la configuration de la mémoire avec le commutateur /3GB.

ms178067.note(fr-fr,SQL.90).gifRemarque :
Dans Windows Server 2003, PAE est automatiquement activé 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 prise en charge a augmenté avec l'introduction des systèmes d'exploitation Windows Server 2003. La mémoire physique accessible par AWE dépend donc du système d'exploitation que vous utilisez :

  • Windows Server 2003 Standard Edition prend en charge jusqu'à 4 Go de mémoire physique.
  • Windows Server 2003 Enterprise Edition prend en charge jusqu'à 32 Go de mémoire physique.
  • Windows Server 2003 Datacenter Edition prend en charge jusqu'à 64 Go de mémoire physique.

Une application Win32 telle que SQL Server ne détecte que les adresses virtuelles ou logiques, pas les adresses physiques. La quantité de mémoire physique utilisée par une application à un moment donné (plage de travail) est déterminée par la mémoire physique disponible et par le Gestionnaire de mémoire virtuelle. L'application ne peut pas contrôler directement la résidence en mémoire.

Windows 2000 Advanced Server et Windows 2000 Datacenter Server, ainsi que Windows Server 2003, Enterprise Server, Windows Server 2003, et les éditions 32 bits Datacenter Server peuvent aller au-delà de la limite de 4 Go grâce à l'utilisation des extensions d'adresses physiques Intel (Physical Addressing Extensions - PAE). L'utilisation du commutateur /PAE dans le fichier de configuration boot.ini de Windows permet d'accéder à la mémoire physique au-delà de la limite de 4 Go. Ceci est impératif pour que la mémoire AWE accède à plus de 4 Go de mémoire. Pour plus d'informations sur l'utilisation de cette configuration de la mémoire dans Windows 2000 ou Windows Server 2003, consultez la documentation Windows.

Les systèmes à adresses virtuelles tels que Windows 2000 ou Windows Server 2003 permettent la survalidation de la mémoire physique, de sorte que le rapport entre la mémoire virtuelle et la mémoire physique soit supérieur à 1:1. Par conséquent, il est possible d'exécuter des programmes plus volumineux sur des ordinateurs offrant diverses configurations de 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 entraînera 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 sp_configure pour modifier ces paramètres, vous pouvez le faire uniquement si la valeur 1 a été attribuée à l'option show advanced options. Ces paramètres prennent effet immédiatement 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 2005 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 groupes de tampons. Depuis Windows 2003 Server SP1, 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.

Voir aussi

Concepts

Analyse et paramétrage des performances
Définition des options de configuration de serveur
Activation de la mémoire AWE pour SQL Server

Autres ressources

RECONFIGURE (Transact-SQL)
Plan de la documentation relative à la réplication
sp_configure (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Nouveau contenu :
  • Ajout de la note relative à Windows Server 2003 et PAE.

5 décembre 2005

Nouveau contenu :
  • Instructions sur la valeur acceptable la plus basse de max server memory.
  • Ajout de la section consacrée à l'exécution de plusieurs instances de SQL Server.