Gestion dynamique de la mémoire

Le comportement par défaut de la gestion de la mémoire de Moteur de base de données SQL Server de Microsoft consiste à acquérir autant de mémoire que nécessaire sans causer d'insuffisance de mémoire sur le système. Pour cela, le Moteur de base de données utilise les API de notification de mémoire de Microsoft Windows.

L'espace d'adressage virtuel de SQL Server peut être divisé en deux zones distinctes : l'espace occupé par le pool de mémoires tampons et le reste. Si le mécanisme AWE est activé, le pool de mémoires tampons peut se trouver dans la mémoire mappée AWE, ce qui donne davantage d'espace pour les pages de base de données.

Le pool de mémoires tampons fait office de source principale d'allocation mémoire de SQL Server. Des composants externes qui résident dans le processus SQL Server, tels que les objets COM, et qui ne gèrent pas les fonctions de gestion de mémoire de SQL Server, utilisent la mémoire en dehors de l'espace d'adressage virtuel occupé par le pool de mémoires tampons.

Lorsque SQL Server démarre, il calcule la taille de l'espace d'adressage virtuel pour le pool de mémoires tampons d'après plusieurs paramètres, dont la quantité de mémoire physique du système, le nombre de threads serveur et diverses options de démarrage. SQL Server réserve la quantité ainsi calculée de son espace d'adressage virtuel de processus pour le pool de mémoires tampons, mais il acquiert (valide) uniquement la quantité nécessaire de mémoire physique pour la charge actuelle.

L'instance continue alors à acquérir de la mémoire comme l'exige la prise en charge de la charge de travail. Au fur et à mesure que des utilisateurs se connectent et exécutent des requêtes, SQL Server acquiert la mémoire physique supplémentaire à la demande. Une instance SQL Server continue d'acquérir de la mémoire physique jusqu'à la cible d'allocation max server memory ou jusqu'à ce que Windows indique qu'il n'y a plus de mémoire disponible en surplus ; elle libère de la mémoire quand elle en a plus que la valeur min server memory et si Windows indique qu'il y a une pénurie de mémoire disponible.

Étant donné que d'autres applications sont démarrées sur l'ordinateur exécutant une instance SQL Server, elles consomment de la mémoire et la quantité de mémoire physique disponible descend en dessous de la cible de SQL Server. L'instance de SQL Server règle sa consommation de mémoire. Si une autre application s'arrête et que de la mémoire devient disponible, l'instance de SQL Server augmente la taille de son allocation de mémoire. SQL Server peut libérer et acquérir plusieurs mégaoctets de mémoire chaque seconde, ce qui lui permet de s'adapter rapidement aux changements d'allocation mémoire.