Architecture de la mémoire

SQL Server acquiert et libère la mémoire dynamiquement selon ses besoins. En règle générale, un administrateur ne doit plus spécifier la quantité de mémoire à allouer à SQL Server, même si cette option existe toujours et est obligatoire dans certains environnements.

SQL Server prend en charge les extensions AWE (Address Windowing Extensions) qui permettent d'utiliser plus de 4 gigaoctets (Go) de mémoire physique sur les versions 32 bits des systèmes d'exploitation Microsoft Windows. Jusqu'à 64 Go de mémoire physique sont pris en charge. Les instances de SQL Server exécutées sur MicrosoftWindows 2000 utilisent une allocation de mémoire AWE statique et les instances exécutées sur MicrosoftWindows Server 2003 utilisent une allocation de mémoire AWE dynamique.

[!REMARQUE]

La prise en charge AWE n'est disponible que dans les éditions Enterprise, Standard et Developer de SQL Server et elle ne s'applique qu'aux systèmes d'exploitation 32 bits. Analysis Services ne peut pas tirer profit de la mémoire mappée AWE. Si la mémoire physique disponible est moins importante que l'espace d'adressage virtuel en mode utilisateur, AWE ne peut pas être activé.

L'un des objectifs principaux de tous les logiciels de base de données est de réduire les E/S disque car les lectures et écritures sur le disque font partie des opérations les plus consommatrices de ressources. SQL Server crée un pool de mémoires tampons en mémoire afin d'y garder les pages lues à partir de la base de données. Une grande partie du code de SQL Server vise à réduire au minimum le nombre de lectures et d'écritures physiques entre le disque et le pool de mémoires tampons. SQL Server essaie d'atteindre un équilibre entre deux objectifs :

  • Empêcher le pool de mémoires tampons d'atteindre une taille susceptible de priver le système de mémoire.

  • Réduire les E/S physiques vers les fichiers de la base de données en augmentant la taille du pool de mémoires tampons.

Pour plus d'informations, consultez Gestion des tampons.

Par défaut, les éditions de SQL Server 2005 gèrent dynamiquement la mémoire de chaque instance. La manière dont la mémoire AWE mappée est gérée sur SQL Server varie selon les versions Windows 2000 et ultérieures des systèmes d'exploitation.

[!REMARQUE]

Dans un système surchargé, certaines requêtes volumineuses dont l'exécution nécessite une importante quantité de mémoire ne peuvent pas obtenir la quantité minimale de mémoire requise et reçoivent une erreur de temporisation pendant qu'elles attendent des ressources mémoire. Pour résoudre cette situation, augmentez la valeur de l'option query wait. Pour une requête parallèle, envisagez de réduire l'option max degree of parallelism.

[!REMARQUE]

Dans un système où une charge très lourde pèse sur les ressources mémoire, les requêtes comportant jointure de fusion, tri et bitmap dans le plan de requête peuvent éliminer le bitmap si elles n'obtiennent pas la mémoire minimale nécessaire pour ce bitmap. Ceci peut affecter les performances de la requête, et si le processus de tri ne tient pas en mémoire, ceci peut accroître l'utilisation des tables de travail dans la base de données tempdb, ce qui augmente le volume de tempdb. Pour résoudre ce problème, ajoutez de la mémoire physique ou paramétrez les requêtes de façon qu'elles utilisent un autre plan de requête plus rapide. Pour plus d'informations sur le paramétrage, consultez Optimisation des performances de la base de données tempdb et Procédure : paramétrer une base de données.

Apport de la quantité maximale de mémoire à SQL Server

L'utilisation de AWE et du privilège de verrouillage des pages en mémoire vous permet de fournir les quantités de mémoire suivantes au moteur de base de données SQL Server.

32 bits

64 bits

Mémoire conventionnelle

Toutes les éditions SQL Server : jusqu'à la limite d'espace d'adressage virtuel de processus :

  • 2 Go

  • 3 Go avec le paramètre d'amorçage /3gb1

  • 4 Go sur WOW642

Toutes les éditions SQL Server : jusqu'à la limite d'espace d'adressage virtuel de processus :

  • 7 téraoctets sur l'architecture IA64

  • 8 téraoctets sur l'architecture x64

RemarqueRemarque
Dans Windows Server 2003, la limitation est  512 Go ; et dans Windows Server 2003 Service Pack 1, la limitation est 1 téraoctet. Lorsque Windows prend en charge la mémoire supplémentaire, SQL Server peut atteindre les limites indiquées.

Mécanisme AWE (Permet à SQL Server d'aller au-delà de la limite d'espace d'adressage virtuel de processus sur une plateforme 32 bits.)

Éditions SQL Server Standard, Enterprise et Developer : le pool de mémoires tampons est capable d'accéder à 64 Go de mémoire maximum.

Non applicable3

Privilège de système d'exploitation de verrouillage des pages en mémoire (permet de verrouiller la mémoire physique, empêchant ainsi la pagination par le système d'exploitation de la mémoire verrouillée.)4

Éditions SQL Server Standard, Enterprise et Developer : requis pour que le processus SQL Server utilise le mécanisme AWE. La mémoire allouée par le biais du mécanisme AWE ne peut pas être dépaginée.

L'accord de ce privilège sans l'activation de AWE n'a aucun effet sur le serveur.

Éditions SQL Server Enterprise et Developer : recommandé, afin d'éviter la pagination du système d'exploitation. Peut apporter un gain de performances, selon la charge de travail. La quantité de mémoire accessible est semblable au cas de mémoire conventionnelle.

1**/3gb** est un paramètre d'amorçage de système d'exploitation. Pour plus d'informations, consultez MSDN Library (en anglais).

2 WOW64 (Windows on Windows 64) est un mode dans lequel SQL Server 32 bits s'exécute sur un système d'exploitation 64 bits. Pour plus d'informations, consultez MSDN Library (en anglais).

3 Notez que l'option awe enabledsp_configure est présente sur SQL Server 64 bits, mais qu'elle est ignorée. Elle est susceptible d'être supprimée dans des versions ultérieures ou des Service Packs de SQL Server 64 bits.

4 Si le privilège de verrouillage des pages en mémoire est accordé (sur 32 bits pour la prise en charge de AWE ou sur 64 bits par lui-même), nous recommandons de définir également la mémoire de serveur maximale. Pour plus d'informations, consultez Options de mémoire du serveur.